Aula 2 - Introdução à Linguagem de Programação C
Estrutura de um Programa C
Um programa C é composto por uma ou mais funções. Independente de ser composto por muitas funções ou apenas umas poucas, todo programa C deve ter uma função main. A função main é o ponto de entrada da execução de um programa C. Ela é delimitada por chaves { } que marcam seu inicio e fim. A função main() é responsável por iniciar a execução do programa C. Todo programa em C deve ter a estrutura básica a seguir:
main() {
}
Programas e Funções
É importante saber a diferença entre um programa C, que é composto por funções, e uma função propriamente dita. Em C os nomes programa e função se confundem. O programa C é composto por funções sendo que uma função é um pequeno trecho do programa C que recebe valores, realiza algum processamento e devolve o resultado deste processamento para quem a invocou. Os valores que uma função recebe são chamados argumentos da função e o resultado do processamento que é devolvido pela função é chamado de retorno da função.
Instruções em um Programa C
Todo programa é, analisando de uma forma simples, uma sequencia de instruções. As instruções em um programa C são sempre colocadas dentro de alguma função que compoe o programa, especificamente as instruções devem ser colocadas dentro das chaves que delimitam a função. As instruções devem ser colocadas uma em cada linha, de forma a tornar legível o programa. Alem disso, toda instrução deve ser terminada com um ponto e virgula que é o finalizador de uma instrução. Nenhuma instrução será corretamente compilada se nao tiver
sido finalizada com ponto e virgula.
Variáveis e Constantes
Toda informação tratada pelo programa é mantida em memória durante a execução do programa. Como a memória é dividida em endereços de memória, o programa C deve ter uma forma de poder colocar a informação nestes endereços e recupera-las posteriormente. As variáveis são o mecanismo pelo qual é possivel gravar e ler informações na memoria do computador durante a execução do programa. As variaveis são então um espaço de memória que pode ser referenciado atraves de um nome e que é usado para gravar e ler um determinado tipo de informação. Toda variavel entao tem um nome e um tipo de dado que será armazenado no endereço de memoria referenciado por ela.
O nome da variavel é definido pelo programador que deve escolher nomes significativos e que tenham alguma relação com a informacao que a variavel armazena. Salario é um bom nome para uma variavel que armazena o salario de um funcionario. Nomes significativos tornam mais fácil o entendimento do programa e são uma boa prática de programação. O nome de uma variavel em C deve começar por uma letra e pode ser composto por letras, numeros e sublinhado. Segue abaixo alguns exemplos de nomes de variavel:
int idade;
float salario;
O tipo de dado que é manipulado pela variável deve ser um dos tipos definidos na linguagem C que são: int, char, float, double e void. No caso void representa um tipo nulo ou ausencia de informação.
Para declarar uma variavel devemos declarar primeiro seu tipo e depois o nome. Caso precise declarar várias variaveis do mesmo tipo, basta separar por virgulas como mostro a seguir:
int a, b, c;
float salario, media_aluno;
char caracter;
A constantes são valores que não mudam durante o processamento do programa e que devem ser referenciados, lidos, durante o processamento. Na linguagem C as constantes são criadas pela diretiva de compilação #define conforme o exemplo abaixo:
#define PI 3.14
main()
Funções de Entrada e Saída
Na linguagem de programação C existem funções de entrada e saída que são usadas para receber valores e para enviar o resultado do processamento para o usuário.
A função printf é uma função de saída que envia informações para a saída padrão, que é a tela do computador. A função printf() possui a seguinte sintaxe:
printf("expressão de controle", lista de argumentos );
Veja um exemplo abaixo;
main() {
printf("%s está a %d milhoes de milhas do sol", "Venus", 67);
}
A expressão de controle deve vir entre aspas duplas e informa qual o formato de exibição dos valores passados na lista de argumentos. A lista de argumentos informa quais são os valores que devem ser exibidos e que devem estar separados por vírgula. Os valores da lista de argumentos podem incluir variaveis e valores constantes e a lista de argumentos pode ter um ou vários argumentos.
A expressão de controle é formada por codigos de formatação que informam qual é o tipo de informação que será impressa. Se vai ver um caractere, um inteiro, um real, erc. Os valores possivel são:
%c - Caractere simples
%d - Decimal
%e - Notação Cientifica
%f - Ponto Flutuante
%g - Octal
%o - Cadeia de Caracteres
%s - Decimal sem Sinal
%u - Hexadecimal
%x - Decimal Longo
%ld - Ponto FLutuante
%lf - Ponto Flutuante Longo
Também são usados códigos especiais de formatação que ajudam a formatar melhor a saída de dados feita pela função printf().
\n - Nova linha
\r - Retorno do Cursos
\t - Tab
\b - Retrocesso
\"" - Aspas
\\ - Barra
\f - Salta Pagina do formulário
\0 - Nulo
Veja alguns exemplos da função printf()
main() {
printf("A letra %c ", 'j');
printf("pronuncia-se $s", "jota");
}
main() {
printf("Este é o numero dois: %d", 2);
}
main() {
int num;
num = 2;
printf("Este é o numero dois: %d", num);
}
A função scanf() faz a leitura de dados a partir da entrada padrão que é o teclado do computador. A função scanf possui a forma abaixo:
scanf("expressão de controle", lista de argumentos);
De forma similiar à função printf, a expressão de controle formata os dados a serem lidos pela função scanf. No caso a expressão de controle informa exatamente qual o tipo de dado a ser lido, para cada elemento da lista de argumentos. A lista de argumentos por sua vez informa as variaveis que receberão os valores lidos do teclado. No caso da função scanf, cada elemento da lista de argumentos deve ser precedido pelo operador & que retorna o endereço de memoria da variavel usada como argumento. Assim o valor lido é gravado diretamente no endereço de memoria usado pela variavel passada como argumento para a função scanf. Veja um exemplo abaixo;
main() {
int num1, num2, soma;
num1 = 0;
num2 = 0;
printf("Digite o primeiro numero ");
scanf("%d", &num1);
printf("Digite o segundo numero");
scanf("%d", &num2);
soma = num1 + num2;
printf("A soma é %d", soma);
}
Operadores
A linguagem C possui vários operadores de diferentes tipos. Temos operadores ariméticos, relacionais e lógicos. Vamos ver os operadores aritméticos primeiro que são os seguintes:
= Atribuição de valores às variaveis do programa
+ Soma
- Subtração
* Multiplicação
/ Divisão
% Módulo ( resto da divisão inteira )
-- Menos unário
Alguns exemplos:
main() {
int ftemp, ctemp;
printf("Digite temperatura em graus fahrenheit: ");
scanf("%d", &ftemp);
ctemp = ( ftemp -32) * 5/9;
printf("Temperatura em graus Celsius e %d", ctemp);
}
Operador menos unário
Este operador troca o sinal de um numero e deve ser usado somente com variaveis numericas do tipo int e float. Veja um exemplo:
num = -8;
num2 = -num;
O valor de num2 será 8 pois o sinal do valor de num foi trocado.
Operador módulo: %
O operador módulo aceita somente números inteiros e retorna o resto da divisão do numero à esquerda pelo número à direita.
num = 7 % 2;
O valor de num será 1.
Operadores de incremento e decremento (++) e (--)
Estes operadores incrementam e decrementam de 1 o valor de uma variavel. Estes operadores podem operar de modo pre-fixado ou de modo pos-fixado. No modo pré-fixado a variavel é usada desta forma: --variavel. No modo pos-fixado a variavel é usada desta forma: variavel--
No modo pré-fixado o operador unário é avaliado primeiro, incrementado/decrementando o valor da variavel.
No modo pré-fixado o operador unário é avaliado apos a expressão numerica ser resolvida.
Operadores Relacionais
Os operadores relacionais são usados para fazer comparações em expressões, são eles:
> - maior
< - menor
>= - maior ou igual
<= - menor ou igual
== - igualdade
!= - diferente
Os operadores aritméticos tem precedencia maior que a dos operadores relacionais. Portanto, os operadores aritméticos são avaliados primeiro.
Operadores Lógicos
São usados para avaliação de expressões lógicas. São os seguintes:
&& - E
|| - OU
! - NÃO
Veremos exercicios envolvendo todos os tipos de operadores que vimos aqui.
Uso de Comentários
É boa prática de programação incluir comentários nas linhas dos programas de forma a documentar a lógica do programa e seus objetivos. Na linguagem C podemos incluir comentários usando // ou usando os delimitadores /* e */.
Para comentários de uma unica linha devemos usar o //
Para comentários de mais uma uma linha devemos usar os delimitadores /* e */.
É boa pratica de programação incluir um cabeçalho de comentários no inicio do programa descrevendo algumas informações importantes do ponto de vista
documentacional do programa. Um cabeçaho documentando um programa pode ter a forma a segui:
/*
Programa: xxxxx
Autor: xxxxxx
Data: 99/99/9999
Objetivos: Este programa tem por objetivo....
*/
Igualmente podemos incluir comentários na declaração das variaveis usadas no programa como mostra a seguir:
main() {
int qtdPar; // Quantidade de Parcelas do Contrato
float vlrParc; // Valor de cada parcela
float txJuro; // valor da taxa de juros
....
....
}