INF 1005 Programação I  
Aula 03 Introdução a Linguagem C  
Edirlei Soares de Lima  
<elima@inf.puc-rio.br>  
Estrutura de um Programa C  
Inclusão de bibliotecas auxiliares: #include <nome>  
Definição de constantes: #define nome valor  
Funções auxiliares  
Função Principal (início da execução de um programa): int main(void)  
Bibliotecas Auxiliares  
stdio.h: funções de entrada de saída de dados:  
printf, scanf...  
#include <stdio.h>  
math.h: funções matemáticas:  
cos, sen, sqrt, pow...  
#include <math.h>  
string.h: funções de manipulação de texto (string):  
strcmp, strlen...  
#include <string.h>  
Definição de Constantes  
A diretiva #define associa um identificador a um valor.  
Formato:  
#
define nome_macro valor  
É usual definir o nome das macros com letras maiúsculas  
Exemplos:  
#
#
#
define UM 1  
define MSG Digite S para sair”  
define PI 3.1415  
Funções Auxiliares  
As funções têm a seguinte estrutura:  
Um programa C não pode  
ter duas funções com o mesmo  
nome.  
tipo_de_retorno nome_da_funcao (parametros)  
{
variaveis locais  
instrucoes em C (comandos = expressoes e  
operadores)  
Se uma função não tem uma  
lista de parâmetros colocamos  
void ou apenas o ().  
}
Se uma função não tem  
retorno colocamos void.  
Consiste no bloco de comandos  
que compõem a função.  
Estrutura de um Programa C  
Inclusão de bibliotecas auxiliares:  
#include <nome.h>  
Função Principal:  
int main(void)  
{
...  
}
Função Principal  
int main(void)  
{
/
* declarações de variáveis locais,  
chamadas a funções auxiliares,  
cálculos de expressões, leitura e  
escrita de dados, etc. */  
}
Observação: /* delimita um comentário em C */  
Variáveis e Constantes  
Variáveis e constantes são os elementos básicos  
manipulados por um programa.  
Constante é um valor fixo que não se modifica ao  
longo da execução de um programa.  
ꢈꢉꢊꢄꢋ + ꢈꢉꢊꢄ2  
ꢁꢂꢃꢄꢅꢃꢆꢄꢇ =  
2
valor constante  
Variáveis  
Variável é um espaço reservado na memória do computador  
para armazenar um determinado tipo de dado.  
Variáveis recebem nomes para serem referenciadas e  
modificadas quando necessário.  
Variável Nota1  
Variável Nota2  
ꢈꢉꢊꢄꢋ + ꢈꢉꢊꢄ2  
ꢁꢂꢃꢄꢅꢃꢆꢄꢇ =  
2
Variável MediaFinal  
Variáveis  
O conteúdo de uma variável pode se modificado ao longo da  
a execução do programa.  
Embora uma variável possa assumir diferentes valores, ela só  
pode armazenar um valor a cada instante.  
“7.5”  
“8.0”  
ꢈꢉꢊꢄꢋ + ꢈꢉꢊꢄ2  
ꢁꢂꢃꢄꢅꢃꢆꢄꢇ =  
2
“7.75”  
Variáveis em C  
Variável é um espaço reservado na memória do computador  
para armazenar um tipo de dado.  
Devem receber nomes para poderem ser referenciadas e  
modificadas quando necessário.  
Toda variável tem:  
um nome  
um tipo de dado  
um valor  
Restrição para nomes: não é permitido começar o nome com um  
algarismo (0-9), alguns caracteres não são válidos (*, -, /, +, ...), e palavras  
reservadas não podem ser utilizadas (main, if, while, ...).  
Variáveis  
É necessário informar o nome e o tipo das variáveis:  
O compilador precisa saber o tipo para alocar (reservar) o  
espaço de memória pré-definido para aquele tipo (quantidade  
de bytes).  
O nome será usado para representar o espaço que está sendo  
alocado.  
Exemplo:  
int main (void)  
{
float nota1, resultado;  
}
Tipos de Variáveis da Linguagem C  
Tipo  
Tamanho  
1 byte  
Menor valor  
-128  
Maior valor  
+127  
char  
unsigned char  
short int (short)  
unsigned short int  
int (*)  
1 byte  
0
+255  
2 bytes  
2 bytes  
4 bytes  
4 bytes  
4 bytes  
4 bytes  
8 bytes  
-32.768  
+32.767  
0
+65.535  
-2.147.483.648  
+2.147.483.647  
+2.147.483.647  
+4.294.967.295  
+1038  
long int (long)  
unsigned long int  
float  
-2.147.483.648  
0
-1038  
-10308  
+10308  
double  
Tipos de Variáveis em Programação 1  
int  
float  
double  
char  
Exemplos de Tipos de Dados  
Constantes  
Inteiras (int): 5 101  
float ou double: 15.3 -0.37 6. .37  
Caracteres (char): c?1‘  
string: banana “” “12@34#$a”  
77  
-943  
Declaração de Variáveis  
Variáveis devem ser explicitamente declaradas.  
Variáveis podem ser declaradas em conjunto.  
Exemplos:  
int a; /* declara uma variável do tipo int */  
int b; /* declara uma variável do tipo int */  
float c; /* declara uma variável do tipo float */  
int d, e; /* declara duas variáveis do tipo int */  
int d = 5; /* declaração e inicialização da variável */  
Operadores Aritméticos  
Operadores aritméticos são usados para se realizar  
operações aritméticas com as variáveis e constantes.  
Exemplos:  
operador de atribuição  
Operação  
Adição  
Símbolo  
+
-
total = preco * quantidade;  
media = (nota2 + nota2)/2;  
resultado = 3 * (1 - 2) + 4 * 2;  
resto = 4 % 2;  
Subtração  
Multiplicação  
Divisão  
*
/
Resto da Divisão  
%
operado apenas entre inteiros  
Operadores e Expressões  
Operadores de atribuição:  
=
, += , -= , *= , /= , %=  
C oferece uma notação compacta para atribuições  
em que a mesma variável aparece dos dois lados  
var op= expr é equivalente a var = var op (expr)  
i += 2;  
é equivalente a i = i + 2;  
x *= y + 1;  
é equivalente a x = x * (y +1);  
Operadores e Expressões  
Operadores de incremento e decremento :  
++ , --  
incrementa ou decrementa de uma unidade o valor de uma variável  
o incremento pode ser antes ou depois da variável ser utilizada  
n++ incrementa n de uma unidade, depois de ser usado  
+
+n incrementa n de uma unidade, antes de ser usado  
n = 5;  
x = n++;  
x = ++n;  
a = 3;  
/* x recebe 5; n é incrementada para 6 */  
/* n é incrementada para 6; x recebe 6 */  
b = a++ * 2; /* b termina com o valor 6 e a com o valor 4 */  
Funções de Entrada e Saída em C  
Função “printf”: Permite a saída de dados, ou seja, a  
escrita de dados na tela.  
printf(formato, lista de constantes/variáveis/expressões...);  
printf("%d %g", 33, 5.3);  
tem como resultado a impressão da linha:  
33 5.3  
printf("Inteiro = %d  
Real = %g", 33, 5.3);  
com saída:  
Inteiro = 33  
Real = 5.3  
Funções de Entrada e Saída em C  
Especificação de formatos:  
Formato Descrição  
Especifica um char  
%c  
Especifica um int  
%d  
Especifica um float  
%f  
%
e
Especifica um double (ou float) no formato científico  
Especifica um double (ou float) no formato mais apropriado (%f ou %e)  
%
g
Especifica uma cadeia de caracteres  
%s  
Funções de Entrada e Saída em C  
Especificação de tamanho de campo:  
%4d  
3 3  
4
%7.2f  
5
. 3 0  
2
7
Funções de Entrada e Saída em C  
Impressão de texto:  
printf("Curso de Programação 1\n");  
exibe na tela a mensagem:  
Curso de Programação 1  
Funções de Entrada e Saída em C  
Função “scanf”: Permite a entrada de dados, ou seja,  
a captura de valores fornecidos via teclado.  
scanf(formato, lista de endereços das variáveis...);  
int n;  
scanf("%d", &n);  
valor inteiro digitado pelo usuário é armazenado na  
variável n  
Funções de Entrada e Saída em C  
Função “scanf”:  
caracteres diferentes dos especificadores no formato servem para  
separar a entrada  
espaço em branco dentro do formato faz com que sejam "pulados"  
eventuais brancos da entrada  
%d, %f, %e e %g automaticamente pulam os brancos que precederem  
os valores numéricos a serem capturados  
scanf ("%d:%d", &h, &m);  
valores (inteiros) fornecidos devem ser separados pelo  
caractere dois pontos (:)  
Exemplo 01  
Escreva um programa que leia dois números inteiros e retorne  
a soma deles.  
#include <stdio.h>  
int main(void)  
{
int numero1, numero2, resultado;  
printf(“Digite o primeiro numero: “);  
scanf(“%d”, &numero1);  
printf(“Digite o segundo numero: “);  
scanf(“%d”, &numero2);  
resultado = numero1 + numero2;  
printf(“Resultado da soma é %d”, resultado);  
return 0;  
}
Exemplo 1 Execução Passo-a-Passo  
Chinês  
numero1 numero2 resultado saída  
???? ???? ????  
Exemplo 1 Execução Passo-a-Passo  
Chinês  
printf(“Digite o primeiro numero: “);  
numero1 numero2 resultado saída  
??? ???? ????  
?
Digite o primeiro numero:  
Exemplo 1 Execução Passo-a-Passo  
Chinês  
scanf (“%d”, &numero1);  
numero1 numero2 resultado saída  
?
1
???  
5
????  
????  
????  
????  
Digite o primeiro numero:  
Exemplo 1 Execução Passo-a-Passo  
Chinês  
printf(“Digite o segundo numero: “);  
numero1 numero2 resultado saída  
?
1
???  
5
????  
????  
????  
????  
Digite o primeiro numero:  
Digite o segundo numero:  
Exemplo 1 Execução Passo-a-Passo  
Chinês  
scanf (“%d”, &numero2);  
numero1 numero2 resultado saída  
?
1
1
???  
5
5
????  
???? ????  
????  
????  
Digite o primeiro numero:  
Digite o segundo numero:  
3
Exemplo 1 Execução Passo-a-Passo  
Chinês  
resultado = numero1 + numero2;  
numero1 numero2 resultado saída  
?
1
1
???  
5
5
????  
????  
3
????  
????  
18  
Digite o primeiro numero:  
Digite o segundo numero:  
Exemplo 1 Execução Passo-a-Passo  
Chinês  
printf(“Resultado da soma é %d”, resultado);  
numero1 numero2 resultado saída  
?
1
1
??? ???? ????  
Digite o primeiro numero:  
Digite o segundo numero:  
Resultado da soma é 18  
5
5
????  
3
????  
18  
Programando em C - Exemplo  
Indentação e Comentários:  
/
#
* Programa para converter temperatura de Celsius em Fahrenheit */  
include <stdio.h>  
int main (void)  
{
float cels; /* armazena temperatura em oC */  
float fahr; /* armazena temperatura em oF */  
/* captura valor fornecido via teclado */  
printf(“Digite a temperatura em Celsius: “);  
scanf(“%f”, &cels);  
fahr = 1.8 * cels + 32; /* faz a conversão */  
/* exibe resultado na tela */  
printf(“Temperatura em Fahrenheit: %f”, fahr);  
return 0;  
}
Aritmética Inteira  
Qual o erro na expressão abaixo?  
res = 5/3;  
O erro não está na expressão e sim no resultado. Como 5 e 3 são  
valores inteiros, o resultado dessa divisão é um número inteiro e  
portanto seria 2, e não 1.666...  
Outro exemplo:  
int a = 5;  
int b = 2;  
float c = a/b;  
5/2 = 2. Como o resultado está sendo armazenado em um float, o  
valor dessa divisão em c é 2.0  
Conversão de Tipo  
Se temos duas variáveis inteiras e queremos que a divisão seja  
feita em representação real, podemos usar um operador de  
conversão de tipo:  
int a = 5;  
int b = 2;  
float c = (float) a/b;  
Operações aritméticas são feita na representação do tipo de maior  
expressividade: double > float > int  
O (float) converte a em 5.0 e depois divide por 2  
Note que o valor da variável continua sendo do tipo inteiro e o valor  
de a não é alterado  
Conversão de Tipo  
Outro casos em que a conversão de tipo também é  
útil:  
int a;  
float b = 2.6;  
a = b;  
O compilador vai gerar uma mensagem dewarning”. Para evitar:  
int a;  
float b = 2.6;  
a = (int) b;  
Exercícios  
Lista de Exercícios 01 - Algoritmos e Variáveis  
http://www.inf.puc-rio.br/~elima/prog1/