Estrutura dos Programas
Todo programa em C é formado de uma ou mais funções.
Funções são trechos de código que possuem um nome, um tipo de retorno, podem receber alguma informação e são delimitadas por chaves. Delimitações por chaves são chamados de blocos.
Todo programa C, deve ter uma única função chamada main. Esta é a primeira função a ser executada.
Toda instrução C é terminada por um ponto-e-vírgula.
Estrutura Básica
tipoRetorno nomeFuncao (declaração dos parâmetros) { declaração de variáveis; instruções; return variavelOuValorRetorno; }
Menor programa em C
int main ( ) { return 0; }
Função printf
Saída padrão em C, usada para imprimir informações em tela.
Está presente na biblioteca stdio.h.
Recebe uma expressão contendo um texto e caracteres de controle e formatação (iniciados por %). A partir do segundo parâmetro são os valores (variáveis ou constantes) que serão exibidos nos locais dos % da expressão.
Caracteres que não podem ser obtidos diretamente do teclado são codificados usando a barra invertida combinada com outros caracteres.
Sintaxe
printf(“expressão”, lista de valores);
Exemplo 1
printf(“Ola mundo!”); printf(“Velocidade maxima: %d”, 120);
Exemplo 2
Exemplo 3
Exemplo 4
Pode-se determinar o tamanho da caixa onde um valor será exibido, desta forma é possível organizar melhor as saídas em tela.
Códigos Especiais
Percebemos que na impressão de valores, há substituição de variáveis. Há casos também em que há impressão de valores não visíveis, como por exemplo, o , etc. Em seguida, segue alguns exemplos de códigos especiais:
Operador de Endereços (&)
A memória do computador é divida em conjuntos de bytes. Cada conjunto tem um endereço numérico associado, mais ou menos como os CEPs de nossas residências.
O operador & retorna este endereço da variável na memória.
Exemplo
... int a; a = 10; printf("%d", a); /* mostra o valor 10 */ printf("%p", &a); /* mostra o endereço da variável na memória */ ...
A função scanf, como mostrado, utiliza este endereço para poder guardar a informação do teclado no local correto da memória.
Função scanf
Entrada padrão em C, usada para obter informações do teclado.
Está presente na biblioteca stdio.h.
Recebe uma expressão contendo caracteres de controle (iniciados por %). A partir do segundo parâmetro recebe endereços de variáveis onde os dados obtidos serão armazenados.
Diferentemente do printf, nenhum caractere da expressão será exibido em tela, eles servem apenas para orientar a função em como ler as informações do teclado.
Sintaxe
scanf(“expressão”, lista de valores);
Exemplos
scanf("%f", &salario);
Aguarda que o usuário digite um valor numérico de ponto flutuante e guarda o valor no endereço da variável salario.
scanf("%d", &idade);
Aguarda que o usuário digite um valor numérico inteiro e guarda o valor no endereço da variável idade.
scanf("%d*%d*%d", &dia, &mes, &ano);
Lê 3 valores inteiros e guarda cada um em sua respectiva variável. O asterisco serve para o scanf ignorar as barras de data.
Exemplo 1 – Escreva um programa em C que calcule a idade de uma pessoa (ignorando os meses em que a pessoa nasceu)
link no GitHub para exemplo de Entrada e Saida 01
Exemplo 2 – Escreva um programa em C que calcule sua média semestral.
link no GitHub para exemplo de Entrada e Saida 02
Exercícios Extra-Classe
Treinamento em Código 1
Observação: Na instrução: scanf(“%d %*c %d %*c %d”,&dia,&mes,&ano);
%d refere-se ao dia digitado
%*c refere-se ao caracter barra para separação da data (25/05). Esse caracter será ignorado posteriormente pelo compilador (comando *) e o caracter “c” indica que vai ser lido um caráter;
Treinamento em Código 2
Treinamento em Código 3
Treinamento em Código 4
Traduza os seguintes algoritmos para a linguagem C:
1 – Faça a tradução do algoritmo de conversão de C para F abaixo para a linguagem C.
/* Início //declaração de variáveis real C, F; // Entrada de dados Escreva ("Entre com uma temperatura qualquer em graus Celsius:"); Leia(C); // Processamento F = ((9*C)+160)/5; // Saída de dados Escreva ("O resultado da conversão de Celsius para Fahrenheit é:", F); Fim. */
2 – Faça a tradução do algoritmo do calculo de volume para a lingugagem C.
/* Início // declaração de variáveis real RAIO, ALTURA, VOLUME; // Entrada de dados Escreva ("Entre com o Raio da lata:"); Leia(RAIO); Escreva ("Entre com a Altura da lata:"); Leia(ALTURA); // Processamento VOLUME = (3.14159*(RAIO**2))*ALTURA; // Saída de dados Escreva ("O volume da lata é:", VOLUME); Fim. */
3 – Faça a tradução do algoritmo abaixo do calculo do quadrado para a linguagem C.
/* Português Estruturado: Início // declaração de variáveis inteiro N; // Entrada de dados Escreva ("Entre com um número inteiro qualquer:"); Leia(N); // Processamento N = N*N; // Saída de dados Escreva ("O quadrado do número fornecido é:", N); Fim. */
4 – Faça a tradução do algoritmo abaixo de troca de valores para a linguagem C.
/* Português Estruturado: Início //declaração de variáveis inteiro A, B, X; // Entrada de dados Escreva ("Entre com um número inteiro qualquer para A:"); Leia(A); Escreva ("Entre com outro número inteiro qualquer para B:"); Leia(B); //Processamento X = A; A = B; B = X; //Saída de dados Escreva ("O novo valor de A é:", A); Escreva ("O novo valor de B é:", B); Fim. */
5 – Faça a tradução do algoritmo abaixo de operções para a linguagem C.
/* Português Estruturado: Início // declaração de variáveis real NUM1, NUM2, SOMA, SUBTR, MULTIPLICA, DIVISAO; // Entrada de dados Escreva ("Entre com um número qualquer :"); Leia (NUM1); Escreva ("Entre com outro número qualquer :"); Leia (NUM2); // Processamento ADICAO = NUM1 + NUM2; SUBTR = NUM1 - NUM2; MULTIPLICA = NUM1 * NUM2; DIVISAO = NUM1 / NUM2; // Saída de dados Escreva ("OPERAÇÕES COM OS NÚMEROS FORNECIDOS "); Escreva ("ADICAO: ", NUM1, "+", NUM2, " = ",ADICAO); Escreva ("SUBTRACAO: ", NUM1, "-", NUM2, " = ", SUBTR); Escreva ("MULTIPLICACAO: ", NUM1, "*", NUM2, " = ", MULTIPLICA); Escreva ("DIVISAO: ", NUM1, "/", NUM2, " = ", DIVISAO); Fim. */
6 – Faça a tradução do algoritmo abaixo de numero antecessor e sucessor para a linguagem C.
/* Português Estruturado: Início // declaração de variáveis inteiro N, SUCESSOR, ANTECESSOR; // Entrada de dados Escreva ("Entre com um número inteiro qualquer:"); Leia(N); // Processamento ANTECESSOR = N - 1; SUCESSOR = N + 1; // Saída de dados Escreva ("O número", N," tem como antecessor ", ANTECESSOR," e sucessor", SUCESSOR); Fim. */
Observação: Conteúdo do material desenvolvido pelo Professor César Tofanini, adaptado pelo Professor Rodrigo Saito
Vídeo 01
Video 02