Escolar Documentos
Profissional Documentos
Cultura Documentos
Estruturas de um programa em C
Para obter sucesso na programação é preciso seguir corretamente uma estrutura
de programação:
1º Cabeçalho
2º Funções
3º Definição de constantes
4º Inicialização do programa principal
5º Definição das variáveis
6º Desenvolvimento da lógica
7º Finalização do programa.
Argumentos:
Argumentos são as entradas que a função recebe. É através dos argumentos que passamos
parâmetros para a função.
Para retornamos um valor pela função usamos a função return(argumento), o argumento
será o retorno da função.
3º Constantes: são dados gravados em memória que de forma alguma podemos alterar
seu valor.
Então, qual a vantagem em ocupar memória com um dado que não podemos mudar?
A diferença está em podermos reduzir números grandes ou dados sem muito significado
em algo simples, fácil de usar e relembrar.
Por exemplo, com uma constante poderemos definir que verdadeiro não será true, mas a
palavra "sim". Outro exemplo: Também podemos definir que o máximo de posições que um
vetor vai ter será 1000, então criamos uma constante chamada "max". Pronto, agora não
precisaremos mais nos lembrar que um vetor terá 1000 posições, basta criar o vetor e no
tamanho dele indicamos max.
Para criarmos uma constante usamos o pré-processador define. Define é um pré-
processador porque todas as constantes devem ser definidas antes do inicio do
programa.
Então toda vez que utilizado a palavra PI será como ter utilizado 3,14.
Int: São valores inteiros limitados de -32768 à 32767 e ocupam 16 bits na memória.
float: São valores reais limitados de 3,4 E-38 à 3,4 E38 e ocupam 32 bits na memória. Nessa
declaração de variável o valor sempre será mostrado com 6 casas decimais, caso queira-se
reduzir a quantidade de casa decimais usamos entre o símbolo de porcentagem e a letra f
um ponto e a quantidade de casas decimais, exemplo “%.2f” mostrará duas casa decimais.
7º Finalização: Para finalizar uma programação devemos usar ‘}’ fechando o programa
principal.
código função
\t Tabulação horizontal (tab)
\a Efeito sonoro (beep)
\n Nova linha
Operador Ação
+ Soma
- Subtração ou troca de sinal
* Multiplicação
/ Divisão
% Resto da divisão
= Atribuição
++ Incremento
-- Decremento
>> Deslocamento de bit para direita
<< Deslocamento de bit para esquerda
Operador Ação
< Menor que
> Maior que
<= Menor ou igual a
>= Maior ou igual a
== Igual a
!= Diferente de
É extremamente importante quando for fazer uma comparação de igualdade não colocar
apenas um símbolo de igualdade ”=”, pois isso é um erro gravíssimo de programação, uma
única igualdade é usada para atribuição de valores e duas igualdades ”==” como
comparação.
Operações com valores lógicos
Operador Ação
&& AND (E)
|| OR (OU)
! NOT (NÃO)
Modeladores (Casts)
Tabela de Precedências do C
Esta é a tabela de precedência dos operadores em C. Alguns (poucos) operadores ainda
não foram estudados, e serão apresentados em aulas posteriores.
Comentários:
Usa-se // quando o comentário é simples, ou seja, apenas naquela linha será feita o
comentário e na seguinte já faz parte do código executável.
Usa-se /* */ quando queremos fazer um comentário em múltiplas linhas, sendo assim
inicia-se o comentário com /* e para finaliza-lo usamos */ e tudo que estiver entre eles
será considerado como comentário pelo compilador.
Para finalizar um bloco de programação usamos o ponto e vírgula “;”, na maioria das linhas,
exceto as que inicializam instruções.
Vamos testar nossos conhecimentos através de uma programação simples, utilizando os
conceitos aprendidos até aqui.
Exercício 1: Deseja-se fazer um programa onde o usuário digite um valor e o programa
retorne o quadrado desse número vezes 10.
/* Exercício 1
CPC treinamentos
Curso: automação industrial
Professor: Joedson Leite */
/* Exercício 2
CPC treinamentos
Curso: automação industrial
Professor: Joedson Leite */
printf(“Digite o primeiro nome”); //informa ao usuário que ele deve digitar o nome.
scanf(“%s”,&p_nome); //atribui o valor digitado à variável p_nome.
printf(“Digite o ultimo nome”); //informa ao usuário que ele deve digitar o ultimo nome.
scanf(“%s”,&u_nome); //atribui o valor digitado à variável u_nome.
Estrutura:
if (teste lógico) {
caso verdadeiro
}
else{
caso falso
}
O teste logico pode ser uma comparação, por exemplo, “x<2”, “valor==10”, “nome[0]!=’s’ ”. E
neste caso sendo a comparação verdadeira executa o primeiro bloco do if entre as chaves
(caso verdadeiro), senão executa o segundo bloco do else (caso falso).
Exemplo 3: deseja-se fazer um programa onde o usuário digite um valor e o programa
retorne se o valor é ímpar ou par.
Resolução: Para definirmos se um número é par ou ímpar, basta dividimos por 2 se o resto
for 0 o número é par, caso o resto for 1 significa que o número é ímpar.
Então:
/* Exercício 3
CPC treinamentos
Curso: automação industrial
Professor: Joedson Leite */
/* Exercício 4
CPC treinamentos
Curso: automação industrial
Professor: Joedson Leite */
printf(“Digite sua idade”); //informa ao usuário que ele deve digitar o valor.
scanf(“%d”,&idade); //atribui o valor digitado à variável idade.
É uma estrutura de decisão parecida com o if, porém ela é mais utilizadas quando se tem
opções pontuais.
Estrutura:
switch(variável de controle){
case ’1’:
bloco 1
break;
case ’2’:
bloco 1
break;
case ’3’:
bloco 1
break;
default:
}
/* Exercício 5
CPC treinamentos
Curso: automação industrial
Professor: Joedson Leite */
#include <stdio.h>
#include<stdlib.h>
switch(escolha){
case ‘1’: //caso a escolha for 1
res=v1+v2;
printf(“ A soma eh %.0f “,res); // aparece a resposta sem nenhuma casa decimal.
break;
case ‘2’: //caso a escolha for 2
res=v1-v2;
printf(“ A soma eh %.0f “,res); // aparece a resposta sem nenhuma casa decimal.
break;
case ‘3’: //caso a escolha for 3
res=v1*v2;
printf(“ A soma eh %.0f “,res); // aparece a resposta sem nenhuma casa decimal.
break;
case ‘4’: //caso a escolha for 4
res=v1/v2;
printf(“ A soma eh %.2f “,res); // aparece a resposta com duas casas decimais.
break;
default: //Caso a nenhum dos casos seja escolhido.
printf(“OPCAO INVALIDA”);
}
system(“pause”);
}
Inicialização de variáveis:
int x=10;
char letra = ‘j’
float vect [6] = { 1.3, 4.5, 2.7, 4.1, 0.0, 100.1 };
int matrx [3][4] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 };
char str [10] = { 'J', 'o', 'a', 'o', '\0' };
char str [10] = "Joao";
char str_vect [3][10] = { "Joao", "Maria", "Jose" };
Estrutura de repetição (laços):
/* Exercício 6
CPC treinamentos
Curso: automação industrial
Professor: Joedson Leite */
#include <stdio.h>
#include<stdlib.h>
}
system(“pause”);
}
/* Exercício 7
CPC treinamentos
Curso: automação industrial
Professor: Joedson Leite */
#include <stdio.h>
#include<stdlib.h>
#include<conio.h> //biblioteca para usar o comando getch
int main(void){
char escolha;
escolha='s'; //atribuímos para o programa ser executado a primeira vez.
while(escolha=='s'){ //compara o valor
printf("Deseja continuar \n 's' - sim ou 'n' -nao");
escolha=getch(); //pega um caractere e não mostra na tela.
}
system("pause");
}
OBS:. Para pegar o caractere s ou n usou getch ao invés de usar scanf, isso porque o
comando scanf não funciona bem no compilador DEV C++, e para usa-lo incluímos a
biblioteca conio.
-Instrução (DO...WHILE) “execute enquanto”
Testa a condição e, se esta for verdadeira, volta para a declaração. A grande novidade no
comando do...while é que ele, ao contrário do for e do while, garante que a declaração será
executada pelo menos uma vez.
Um dos usos da estrutura do...while é em menus, nos quais você quer garantir que o valor
digitado pelo usuário seja válido.
Saltos incondicionais:
goto: essa instrução quando executada da um salto para o rótulo indicado. Não é
aconselhável se utilizar o goto durante a programação, pois essa instrução torna o
programa confuso.
O rótulo é um marcador que você pode utilizar o nome que quiser seguido de dois-pontos
“:”.
Estrutura
goto pulo;
printf(“não mostrara isso na tela”);
pulo:
int count=10;
int *pt;
pt=&count;
exemplo com ponteiro:
#include <stdio.h>
int main (void){
#include <stdio.h>
#include <stdlib.h> /* Para a função exit() */
main (void)
{
FILE *fp;
...
fp=fopen ("exemplo.doc","w");
if (!fp){
printf ("Erro na abertura do arquivo. Fim de programa.");
exit (1);
}
...
system(“pause”);
}
- fclose: Quando acabamos de usar um arquivo que abrimos, devemos fechá-lo. Para tanto
usa-se a
função fclose():
int fclose (FILE *fp);
O ponteiro fp passado à função fclose() determina o arquivo a ser fechado. A função
retorna zero no caso de sucesso.
Fechar um arquivo faz com que qualquer caractere que tenha permanecido no "buffer"
associado ao fluxo de saída seja gravado. Mas, o que é este "buffer"? Quando você envia
#include <stdio.h>
#include <stdlib.h>
int main(){
FILE *fp;
char string[100];
int i;
fp = fopen("arquivo.txt","w"); /* Arquivo ASCII, para escrita */
if(!fp){
printf( "Erro na abertura do arquivo");
exit(0);
}
printf("Entre com a string a ser gravada no arquivo:");
gets(string);
for(i=0; string[i]; i++) putc(string[i], fp); /* Grava a string, caractere a caractere */
fclose(fp);
system(“pause”);
}
Depois de executar este programa, verifique o conteúdo do arquivo arquivo.txt (você pode
usar qualquer editor de textos). Você verá que a string que você digitou está armazenada
nele.
- getc
Retorna um caractere lido do arquivo.
Estrutura : int getc (FILE *fp);
Outra forma de se verificar se o final do arquivo foi atingido é comparar o caractere lido
por getc com EOF. O programa a seguir abre um arquivo já existente e o lê, caractere por
caractere, até que o final do arquivo seja atingido. Os caracteres lidos são apresentados
na tela:
#include <stdio.h>
#include <stdlib.h>
int main(){
FILE *fp;
char c;
fp = fopen("arquivo.txt","r"); /* Arquivo ASCII, para leitura */
if(!fp){
printf( "Erro na abertura do arquivo");
exit(0);
}
while((c = getc(fp) ) != EOF) /* Enquanto não chegar ao final do
arquivo */
printf("%c", c); /* imprime o caracter lido */
fclose(fp);
system(“pause”);
}
A seguir é apresentado um programa onde várias operações com arquivos são realizadas,
usando as funções vistas nesta página. Primeiro o arquivo é aberto para a escrita, e
imprime-se algo nele. Em seguida, o arquivo é fechado e novamente aberto para a leitura.
Verifique o
exemplo.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void main(){
FILE *p;
char c, str[30], frase[80] = "Este e um arquivo chamado: ";
Estruturas
Uma estrutura agrupa várias variáveis numa só. Funciona como uma ficha pessoal que
tenha nome, telefone e endereço. A ficha seria uma estrutura. A estrutura, então, serve
para agrupar um conjunto de dados não similares, formando um novo tipo de dados.
Para se criar uma estrutura usa-se o comando struct. Sua forma geral é:
struct nome_do_tipo_da_estrutura
{
tipo_1 nome_1;
tipo_2 nome_2;
...
tipo_n nome_n;
} variáveis_estrutura;
O nome_do_tipo_da_estrutura é o nome para a estrutura. As variáveis_estrutura são
opcionais e seriam nomes de variáveis que o usuário já estaria declarando e que seriam do
tipo nome_do_tipo_da_estrutura.
7. Elabore um algoritmo que o usuário entre com o valor da tensão em Volts e o programa retorne
o valor fornecido em Quilovolts(KV) e em milivolts(mV):
8. Elabore um algoritmo onde seja solicitado ao usuário se ele deseja saber o valor da corrente,
tensão ou resistência. Dependendo da sua escolha ele calculará:
I = V/R
V = R*I
R = V/R
Solicitando as outras duas variáveis da formula e mostre o resultado dando a unidade, no caso da
resistência ‘R’ no lugar do ‘Ω’, caso o valor seja menor que 0,001 a resposta venha em míli e caso o
valor seja superior a 1000 a resposta virá em quilo.
9. Elabore um algoritmo onde seja solicitado ao usuário dos valores de resistência R1 e R2, depois
seja solicitado se eles estão associados em paralelo(p) ou em série(s), em seguida o programa
retorna o valor da resistência equivalente. Ao final o programa pergunte se deseja encontrar outra
resistência equivalente. Se a resposta for sim(s), novamente retorne a perguntar por R1 e R2 e
continue até a resposta for diferente de (s).
10.
RT(paralelo)= (R1*R2)/(R1+R2)
Rt(série)= R1+R2
11. Elabore um algoritmo o usuário entre com as informações de tensão total, R1 e R2 e pela
formula de divisor de tensão retorne o valor da tensão em R1:
V1 = VT * ( R1 / ( R1+R2 ))
13. Elabore um programa onde o usuário forneça um valor inicial, um valor final e o programa
retorne todos os números pares entre os dois valores fornecidos.
14. Elabore um algoritmo onde o usuário forneça dois valores e o programa retorne em ordem
decrescente os valores ímpares entre eles.
15. Elabore um algoritmo onde seja solicitado 10 valores aleatórios e o programa retorne os
valores em ordem crescente e decrescente.
16. Escreva um programa onde o usuário forneça uma palavra de ate 20 letras e o programa
retorne a quantidade de vogais que existe nessa palavra.
17. Elabore um algoritmo que o usuário escreva uma frase de até 200 caracteres e o programa
retorne a quantidade de palavras que há nessa frase.
18. Criar um programa onde seja criado um banco de dados no word com as seguintes
informações, nome do colaborador, idade, salário e função. Todas as informações devem ser
solicitadas através de um algoritmo.
19. Criar um programa para ler as informações no documento word criado na questão anterior.
20. Elabore um algoritmo onde pergunte quantos alunos há na classe e depois solicite a nota de
cada um dos alunos e o programa retorne a média das notas da sala.
21. Crie um programa para calcular a média de uma aluno a partir de 4 notas, depois se a média
for menor que 5 apareça a mensagem reprovado, se for maior ou igual a 5 e menor que 6 aparecerá
conselho de classe, se for maior ou igual a 6 e menor ou igual a 10 aprovado e se a média der maior
que 10 deverá aparecer a mensagem “algum valor foi digitado errado”.
22. Elabore um programa para simular uma urna eletrônica onde uma senha libere a votação e
serão inscritos 5 candidatos na tela apareça as opções (votar) e (apuração) as duas opções terá
acesso através de uma senha de 4 dígitos, caso a senha seja digitada errada 3 vezes a tela fique
toda branca com a mensagem alerta piscando em vermelho durante 10 segundos, depois pede a
senha de desbloqueio de 8 dígitos.