Escolar Documentos
Profissional Documentos
Cultura Documentos
A Linguagem C
A forma de um programa em C
Compiladores
• A única linguagem que o computador entende é a linguagem de máquina.
Programas escritos em C (programa fonte) devem ser traduzidos para a
linguagem de máquina. O programa que faz esta tradução é chamado
compilador. O compilador lê o programa fonte inteiro e o traduz para um
programa com a extensão .obj (programa objeto).
• Quando se usa uma função que não faz do programa que você escreveu (ou seja,
que pertence a uma das bibliotecas do C), é necessário agregar ao programa
objeto as rotinas correspondentes à essas funções. Este trabalho é feito por um
programa chamado link-editor que, além de adicionar as rotinas necessárias ao
programa objeto, cria um programa com a extensão .exe (programa executável).
O programa executável está em linguagem de máquina e pode ser executado
diretamente pelo computador.
1
Programação de Computadores I Apostila de C
A função main()
• Os parênteses após o nome indicam que esta é uma função. Toda função C deve
ser iniciada por um abre-chaves ({) e encerrada por um fecha-chaves (}). O nome
da função, os parênteses e as chaves são os únicos elementos obrigatórios de
uma função.
• Vamos adicionar uma instrução ao nosso programa:
main()
{
printf(“Primeiro programa”);
}
• Todas as instruções devem estar dentro das chaves e são executadas na ordem
em que as escrevemos. As instruções em C são sempre encerradas por um ponto-
e-vírgula (;).
A função printf()
• A função printf() é uma das funções de E/S que podem ser usadas em C. Esta
função é usada por programas que realizam saída para a tela do computador.
• A função printf() está definida na biblioteca stdio.h. Então, para que o seu
programa possa utilizar a função printf() é necessário incluir a biblioteca
stdio.h ao seu programa.
2
Programação de Computadores I Apostila de C
#include <stdio.h>
#include <stdlib.h>
main()
{
printf(“Primeiro programa”);
system(“pause”);
}
• No interior dos parênteses estão as informações passadas pela função main()
para a função printf(). Essas informações são chamadas de argumento da
função.
• Sintaxe: printf(“expressão de controle”, lista de argumentos);
• A expressão de controle pode conter caracteres que serão exibidos na tela e
códigos de formatação que indicam o formato em que os argumentos devem ser
impressos.
• Exemplo:
#include <stdio.h>
#include <stdlib.h>
main()
{
printf(“Este é o número dois: %d”, 2);
system(“pause”);
}
• Neste exemplo, o código de formatação %d solicita ao printf() imprimir o
segundo argumento em formato decimal.
• A função printf() pode receber um número variável de argumentos, isto é, a
expressão de controle e mais tantos argumentos quantas especificações de
formato a expressão de controle contiver. Cada argumento deve ser separado
por uma vírgula (,).
• A tabela abaixo mostra alguns códigos de formatação que podem ser utilizados
pelo printf():
código significado
%d Decimal
3
Programação de Computadores I Apostila de C
%f ponto flutuante
%c Caractere simples
%s cadeia de caracteres
• O código de formatação pode ser colocado em qualquer lugar na expressão de
controle:
#include <stdio.h>
#include <stdlib.h>
main()
{
printf(“O numero %d e’ decimal, %f e’ ponto flutuante”, 10, 10.78);
system(“pause”);
}
#include <stdio.h>
#include <stdlib.h>
main()
{
printf(“%s esta’ a %d milhões de milhas \n do sol”, “Venus”, 67);
system(“pause”);
}
• Além do código de formatação, a expressão de controle contém um conjunto de
caracteres estranho: \n. O \n é um código especial que informa a printf() que o
restante da impressão deve ser feito em uma nova linha.
• Os caracteres que não podem ser obtidos diretamente do teclado para dentro do
programa (como a mudança de linha) são escritos em C com a combinação do
sinal \ (barra invertida) com outros caracteres, como mostra a tabela abaixo:
#include <stdio.h>
#include <stdlib.h>
4
Programação de Computadores I Apostila de C
main()
{
printf(“A letra %c ”, ‘j’);
printf(“pronuncia-se %s ”, “jota”);
system(“pause”);
}
• Note que ‘j’ é delimitado por aspas simples enquanto “jota” é delimitado por
aspas duplas. Isto indica ao compilador como diferenciar um caracter de uma
cadeia de caracteres.
Constantes e Variáveis
Tipos de Variáveis
• O tipo de uma variável informa a quantidade de memória, em bytes, que ela irá
ocupar e a forma como o seu conteúdo será armazenado.
• Em C exitem 5 tipos de variáveis básicas: caracter, inteiro, ponto flutuante,
ponto flutuante duplo e sem valor. As palavras reservadas usadas para declarar
variáveis desses tipos são: char, int, float, double e void, respectivamente. Nos
computadores da linha IBM-PC a tabela seguinte é válida:
5
Programação de Computadores I Apostila de C
Nomes de Variáveis
Declarações de Variáveis
• Em C todas as variáveis devem ser declaradas. Se você tiver mais de uma variável
do mesmo tipo, poderá declará-las de uma única vez, separando seus nomes por
vírgulas.
int num1, num2, num3;
Inicialização de Variáveis
#include <stdio.h>
#include <stdlib.h>
main()
6
Programação de Computadores I Apostila de C
{
int evento = 5;
char corrida = ‘C’;
float tempo = 27.25;
printf(“O tempo vitorioso na eliminatória %c ”, corrida);
printf(“\nda competição %d foi %f.”, evento, tempo);
system(“pause”);
}
#include <stdio.h>
#include <stdlib.h>
main()
{
printf(“Os alunos sao %3d.\n”, 350);
printf(“Os alunos sao %4d.\n”, 350);
printf(“Os alunos sao %5d.\n”, 350);
system(“pause”);
}
• A saída será:
Os alunos são 350.
Os alunos são 350.
Os alunos são 350.
• Podemos usar tamanho de campos com números em ponto flutuante para obter
precisão e arredondamento.
#include <stdio.h>
#include <stdlib.h>
main()
{
printf(“%.4f\n”, 3456.789);
printf(“%.3f\n”, 3456.789);
printf(“%.2f\n”, 3456.789);
printf(“%.1f\n”, 3456.789);
system(“pause”);
7
Programação de Computadores I Apostila de C
}
• A saída será:
3456.7890
3456.789
3456.79
3456.8
• Os tamanhos de campos podem ser usados para alinhamento à direita. Exemplo:
#include <stdio.h>
#include <stdlib.h>
main()
{
printf(“%10.2f %10.2f %10.2f\n”, 8.0, 15.3, 584.13);
printf(“%10.2f %10.2f %10.2f\n”, 834.0, 1500.55, 4890.21);
system(“pause”);
}
• A saída será:
8.00 15.30 584.13
834.00 1500.55 4890.21
#include <stdio.h>
#include <stdlib.h>
main()
{
printf(“%-10.2f %-10.2f %-10.2f\n”, 8.0,15.3,584.13);
printf(“%-10.2f %-10.2f %-10.2f\n”,834.0,1500.55,4890.21);
system(“pause”);
}
• A saída será:
8.00 15.30 584.13
834.00 1500.55 4890.21
8
Programação de Computadores I Apostila de C
#include <stdio.h>
#include <stdlib.h>
main()
{
printf(“%04d\n”,21);
printf(“%06d\n”,21);
printf(“%6.4d\n”,21);
printf(“%6.2d\n”,21);
system(“pause”);
}
• A saída será:
0021
000021
0021
21
Imprimindo Caracteres
#include <stdio.h>
#include <stdlib.h>
main()
{
printf(“%d %c \n”, ‘A’,‘A’ );
system(“pause”);
}
• imprime:
65 A
9
Programação de Computadores I Apostila de C
• O exemplo:
#include <stdio.h>
#include <stdlib.h>
main()
{
printf(“%c %c \n”, ‘A’,);
system(“pause”);
}
imprime:
• A A
Comentários
/* corrida.cpp/
/* Programa para imprimir o resultado de uma corrida*/
#include <stdlib.h>
main() /* Funcao principal */
{
int evento = 5; /* declara a variavel evento e a inicializa */
char corrida = ‘C’;/* declara a variavel corrida e a
inicializa */
float tempo = 27.25; /* declara a variavel tempo e a
inicializa */
/* Imprime o resultado da corrida */
printf(“O tempo vitorioso na eliminatória %c ”, corrida);
printf(“\nda competição %d foi %f.”, evento, tempo);
system(“pause”);
}
10
Programação de Computadores I Apostila de C
/*****************************************************
* Programa: corrida.cpp
* Programador:
* Data:
* Programa para imprimir o resultado de uma corrida
******************************************************/
11
Programação de Computadores I Apostila de C
Capítulo 2 – Operadores
A função scanf()
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
main()
{
char ch;
printf(“Digite um caracter: ”);
ch = getche();
printf(“\n A tecla pressionada foi: %c”, ch);
system(“pause”);
}
• A função getch() lê o caracter do teclado mas não imprime o caracter lido na
tela. Esta função não aceita argumentos e devolve o caracter lido para a função
que a chamou.
#include <stdio.h>
12
Programação de Computadores I Apostila de C
#include <stdlib.h>
#include <conio.h>
main()
{
char ch;
printf(“Digite um caracter: ”);
ch = getch();
printf(“\n A tecla pressionada foi: %c”, ch);
system(“pause”);
}
#include <stdio.h>
#include <stdlib.h>
main()
{
char ch;
printf(“Digite um caracter: ”);
ch = getchar();
putchar(ch);
system(“pause”);
}
• Um argumento de uma função pode ser outra função. Por exemplo, o programa
anterior pode ser escrito como:
#include <stdio.h>
#include <stdlib.h>
main()
{
char ch;
printf(“Digite um caracter: ”);
putchar(getchar());
system(“pause”);
}
Operadores
13
Programação de Computadores I Apostila de C
Operador de atribuição
• Em C, o sinal de igual (=) não tem a mesma interpretação dada em matemática.
Representa a atribuição da expressão à direita ao nome da variável à esquerda.
Por exemplo:
num = 20;
• Neste exemplo o valor 20 é atribuído a variável num. C aceita várias atribuições
numa mesma instrução:
num1 = num2 = num3 = 20;
• Neste exemplo o valor 20 é atribuído as variáveis num1, num2 num3.
Operadores aritméticos
• C oferece 5 operadores aritméticos binários (operam sobre dois operandos) e um
operador aritmético unário (opera sobre um operando).
operador operação
+ adição
- subtração e menos unário
* multiplicação
/ divisão
% resto da divisão inteira
Operadores binários: + - / *
• Representam as operações aritméticas básicas de soma, subtração, divisão e
multiplicação respectivamente. Estes operadores podem ser aplicados a
qualquer tipo de dado interno permitido pelo C.
#include <stdio.h>
#include <stdlib.h>
main()
{
float anos, dias;
printf(“Informe sua idade em anos: ”);
scanf(“%f”, &anos);
dias = anos*365;
printf(“Sua idade em dias e’: %.0f \n”, dias);
system(“pause”);
}
• Exemplo 2: programa que converte temperatura Fahrenheit em seus
correspondentes graus Celsius.
#include <stdio.h>
14
Programação de Computadores I Apostila de C
#include <stdlib.h>
main()
{
int ftemp;
float ctemp;
printf(“Informe a temperatura em graus Fahrenheit: ”);
scanf(“%d”, &ftemp);
ctemp = (ftemp–32)*5.0/9;
printf(“Temperatura em graus Celsius e’: %.2f\n”, ctemp);
system(“pause”);
}
• Exemplo 3: programa para adivinhar a soma de 5 números. O usuário digita um
número qualquer e o computador informa o resultado da soma dos 5 números
dos quais o primeiro o usuário já forneceu. O usuário digita o segundo número e
o computador mostra o terceiro. O usuário digita o quarto número e o
computador mostra o quinto.
#include <stdio.h>
#include <stdlib.h>
main()
{
int num, aux;
printf(“Informe um número de ate’ 4 algarismos: ”);
scanf(“%d”, &num);
aux = 19998 + num;
printf(“O resultado da nossa conta sera’: %d\n”, aux);
printf(“Informe o segundo número (4 algarismos): ”);
scanf(“%d”, &num);
printf(“O meu numero e’: %d\n”, 9999-num);
printf(“Informe o quarto número (4 algarismos): ”);
scanf(“%d”, &num);
printf(“O meu numero e’: %d\n”, 9999-num);
system(“pause”);
}
Operador módulo: %
• O operador módulo aceita apenas operandos inteiros. Resulta o resto da divisão
do inteiro à sua esquerda pelo inteiro à sua direita. Por exemplo:
num = 17%5;
15
Programação de Computadores I Apostila de C
#include <stdio.h>
#include <stdlib.h>
main()
{
int n, x;
n = 5;
x = n++;
printf(“x=%d n=%d\n”, x, n);
system(“pause”);
}
• Quando o programa acima for executado a saída será: x = 5 n = 6 . Isto porque o
valor de n é atribuído a x e depois n é incrementado de 1.
#include <stdio.h>
#include <stdlib.h>
main()
{
int n, x;
n = 5;
x = ++n;
printf(“x=%d n=%d\n”, x, n);
system(“pause”);
}
• Quando o programa acima for executado a saída será: x = 6 n = 6 . Isto porque o
valor de n é incrementado de 1 e depois seu valor é atribuído a x.
• Quando um desses operadores aparece sozinho numa instrução (como em
num++;) não faz diferença o uso do modo pré-fixado ou pós-fixado.
16
Programação de Computadores I Apostila de C
mais alta ++ --
- (unário)
*/%
mais baixa +-
#include <stdio.h>
#include <stdlib.h>
main()
{
int total = 0;
int cont = 10;
printf(“Total: %d\n”, total);
total += cont;
printf(“Total: %d\n”, total);
total *= cont;
printf(“Total: %d\n”, total);
system(“pause”);
}
17
Programação de Computadores I Apostila de C
#include <stdlib.h>
main()
{
int i, j;
printf(“Informe dois numeros: ”);
scanf(“%d%d”, &i, &j);
printf(“%d == %d eh %d\n”, i, j, i==j);
printf(“%d != %d eh %d\n”, i, j, i!=j);
printf(“%d <= %d eh %d\n”, i, j, i<=j);
printf(“%d >= %d eh %d\n”, i, j, i>=j);
printf(“%d < %d eh %d\n”, i, j, i>j);
printf(“%d < %d eh %d\n”, i, j, i<j);
system(“pause”);
}
18
Programação de Computadores I Apostila de C
• Os operadores lógicos são usados para dar suporte às operações lógicas básicas
de AND, OR e NOT, de acordo com a tabela esta verdade. A tabela usa 1 para
verdadeiro e 0 para falso.
p q p && q p || q !p
V V V V F
V F F V F
F V F V V
F F F F V
• O próximo programa ilustra a ação dos operadores lógicos:
#include <stdio.h>
#include <stdlib.h>
main()
{
int i, j;
printf(“Informe dois numeros (cada um sendo 0 ou 1): ”);
scanf(“%d%d”, &i, &j);
printf(“%d AND %d eh %d\n”, i, j, i&&j);
printf(“%d OR %d eh %d\n”, i, j, i||j);
printf(“NOT %d eh %d\n”, i, !i);
system(“pause”);
}
mais alta !
> >= < <=
== !=
&&
mais baixa ||
• Assim como nas expressões aritméticas é possível usar parênteses para alterar a
ordem natural de avaliação em uma expressão relacional e/ou lógica.
19
Programação de Computadores I Apostila de C
O comando if
20
Programação de Computadores I Apostila de C
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
main()
{
if( getche() == ‘p’) {
printf(“\nVoce pressionou a tecla p.”);
printf(“\nEsta versão não detecta outra tecla.”);
printf(“\n Tecle algo para continuar... ”);
getche();
}
system(“pause”);
}
• No exemplo acima incluímos a função getche() na expressão de teste. O if
compara o caracter retornado por getche() com a letra p e, se forem iguais, a
expressão assume um valor verdadeiro, e o bloco de instruções é executado.
Comandos if aninhados
• Um comando if pode estar dentro de outro comando if. Dizemos que o if interno
está aninhado. Exemplo:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
main()
{
char ch;
printf(“Digite uma letra entre a e z: ”);
ch = getche();
if( ch >= ‘a’)
if( ch <= ‘z’)
printf(“\nVoce digitou certo!”);
system(“pause”);
}
• Este programa somente imprimirá a frase se você digitar uma letra minúscula.
O comando if-else
21
Programação de Computadores I Apostila de C
instrução_1;
else
instrução_2;
• O programa seguinte imprime uma mensagem caso a expressão de teste do if
seja falsa:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
main()
{
char ch;
ch = getche();
if( ch == ‘p’)
printf(“\nVoce pressionou a tecla p.”);
else
printf(“\nVoce nao pressionou a tecla p.”);
system(“pause”);
}
#include <stdio.h>
#include <stdlib.h>
main()
{
float num1, num2;
char op;
printf(“\nDigite uma expressão no formato: num op num: ”);
scanf(“%f %c %f”, &num1, &op, &num2);
if( op == ‘+’ )
printf(“ = %f”, num1+num2);
else
if( op == ‘-’ )
printf(“ = %f”, num1-num2);
else
if( op == ‘*’ )
printf(“ = %f”, num1*num2);
else
if( op == ‘/’ )
printf(“ = %f”, num1/num2);
system(“pause”);
}
22
Programação de Computadores I Apostila de C
O comando if-else-if
#include <stdio.h>
#include <stdlib.h>
main()
{
float num1, num2;
char op;
printf(“\nDigite uma expressão no formato: num op num: ”);
scanf(“%f %c %f”, &num1, &op, &num2);
if( op == ‘+’ )
printf(“ = %f”, num1+num2);
else if( op == ‘-’ )
printf(“ = %f”, num1-num2);
else if( op == ‘*’ )
printf(“ = %f”, num1*num2);
else if( op == ‘/’ )
printf(“ = %f”, num1/num2);
system(“pause”);
}
• As expressões de teste são avaliadas de cima para baixo. Assim que uma
expressão verdadeira é encontrada, o comando associado a ela é executada.
O comando switch
• O comado switch teste sucessivamente o valor de uma expressão contra uma
lista de constantes inteiras ou caracteres. Quando o valor coincide, os comandos
associados àquela constante são executados.
• Sintaxe: switch(variável de controle)
{
case constante1:
instruções; break;
case constante2:
instruções; break;
default:
instruções;
}
23
Programação de Computadores I Apostila de C
#include <stdio.h>
#include <stdlib.h>
main()
{
float num1, num2;
char op;
printf(“\nDigite uma expressão no formato: num op num: ”);
scanf(“%f %c %f”, &num1, &op, &num2);
switch( op )
{
case ‘+’:
printf(“ = %f”, num1+num2); break;
case ‘-’:
printf(“ = %f”, num1-num2); break;
case ‘*’:
printf(“ = %f”, num1*num2); break;
case ‘/’:
printf(“ = %f”, num1/num2); break;
default:
printf(“\nOperador desconhecido”);
}
system(“pause”);
• O próximo exemplo mostrará casos sem break. Nesta versão você poderá digitar
o sinal * ou x para multiplicação.
#include <stdio.h>
#include <stdlib.h>
main()
{
float num1, num2;
char op;
printf(“\nDigite uma expressão no formato: num op num: ”);
scanf(“%f %c %f”, &num1, &op, &num2);
switch( op )
{
case ‘+’:
printf(“ = %f”, num1+num2); break;
case ‘-’:
printf(“ = %f”, num1-num2); break;
case ‘*’:
case ‘x’:
printf(“ = %f”, num1*num2); break;
case ‘/’:
printf(“ = %f”, num1/num2); break;
default:
printf(“\nOperador desconhecido”);
}
system(“pause”);
}
24
Programação de Computadores I Apostila de C
main()
{
char regiao, vendedor;
printf("As regioes sao: Leste, Oeste e Norte\n");
printf("Informe a primeira letra da regiao: ");
regiao = getche();
switch( regiao )
{
case 'l':
printf("\nOs vendedores sao: Rafael, Joao e Mariana\n");
printf("Informe a primeira letra do nome do vendedor: ");
vendedor = getche();
switch( vendedor )
{
case 'r': printf("\nVendas: R$ 10.000,00\n"); break;
case 'j': printf("\nVendas: R$ 12.000,00\n"); break;
case 'm': printf("\nVendas: R$ 14.000,00\n");
}
break;
case 'o':
printf("\nOs vendedores sao: Ronaldo, Lisa e Hilton\n");
printf("Informe a primeira letra do nome do vendedor: ");
vendedor = getche();
switch( vendedor )
{
case 'r': printf("\nVendas: R$ 10.000,00\n"); break;
case 'l': printf("\nVendas: R$ 9.500,00\n"); break;
case 'h': printf("\nVendas: R$ 13.000,00\n");
}
break;
case 'n':
printf("\nOs vendedores sao: Tomas, Jaime e Raquel\n");
printf("Informe a primeira letra do nome do vendedor: ");
vendedor = getche();
switch( vendedor )
{
case 't': printf("\nVendas: R$ 5.000,00\n"); break;
case 'j': printf("\nVendas: R$ 9.000,00\n"); break;
case 'r': printf("\nVendas: R$ 14.000,00\n");
}
}
system(“pause”);
}
25
Programação de Computadores I Apostila de C
O laço for
• O laço for é útil principalmente quando queremos repetir algo um número fixo
de vezes.
• Sintaxe: for(inicialização; teste; incremento)
instrução;
• Os parênteses seguindo a palavra reservada for contêm três expressões
separadas por ponto e vírgula. A expressão como um todo é chamada de
expressão do laço e é dividida em: expressão de inicialização, expressão de teste
e expressão de incremento.
• Em sua forma mais simples, a inicialização é uma instrução de atribuição e é
sempre executada uma única vez antes do laço ser iniciado.
• O teste é uma instrução de condição que controla o laço. Essa expressão é
avaliada como verdadeira ou falsa toda vez que o laço for iniciado ou reiniciado.
Se verdadeira, o corpo do laço é executado. Quando a expressão se tornar falsa o
laço é terminado.
• O incremento define a maneira como a variável de controle do laço será alterada
cada vez que o laço é repetido. Esta instrução é executada, toda vez,
imediatamente após a execução do corpo do laço.
• O programa seguinte imprime os números de 0 a 9 utilizando um laço for na sua
forma mais simples:
#include <stdio.h>
#include <stdlib.h>
main()
{
int cont;
for(cont = 0; cont < 10; cont++)
printf(“cont = %d\n”, cont);
system("pause");
}
• O programa executa 10 vezes a instrução printf(). Vamos mudar o programa
acima para que imprima os números de 9 a 0.
26
Programação de Computadores I Apostila de C
#include <stdio.h>
#include <stdlib.h>
main()
{
int cont;
for(cont = 9; cont >= 0; cont--)
printf(“cont = %d\n”, cont);
system("pause");
}
• O próximo programa imprime os números de 0 a 9 de 3 em 3:
#include <stdio.h>
#include <stdlib.h>
main()
{
int cont;
for(cont = 0; cont < 10; cont+=3)
printf(“cont = %d\n”, cont);
system("pause");
• Nos exemplos anteriores usamos a forma mais simples para as três expressões
do laço for. Entretanto elas não são restritas apenas as estas formas. C permite
muitas outras possibilidades que mostraremos nos próximos exemplos.
• Qualquer uma das expressões de um laço for pode conter várias instruções
separadas por vírgulas. O exemplo abaixo imprime os números de 0 a 98 em
incremento de 2.
#include <stdio.h>
#include <stdlib.h>
main()
{
int x, y;
for(x = 0, y = 0; x+y < 100; x++, y++)
printf(“%d ”, x+y);
system("pause");
27
Programação de Computadores I Apostila de C
• Qualquer uma das três expressões de um laço for pode ser omitida, embora os
ponto-e-vírgula devam permanecer. Se a expressão de inicialização ou a de
incremento forem omitidas, elas serão simplesmente desconsideradas.
• Se a condição de teste não está presente é considerada permanentemente
verdadeira.
#include <stdio.h>
#include <stdlib.h>
main()
{
char ch;
for( ;; )
printf(“Laco infinito\n”);
system("pause");
}
• O corpo do laço pode ser vazio, entretanto o ponto-e-vírgula permanece:
#include <stdio.h>
#include <stdlib.h>
main()
{
char ch;
for( ; (ch = getche()) != ‘x’; printf(“ %c ”, ch+1))
;
system("pause");
• Os exemplos anteriores usam somente uma instrução no corpo do laço for. Duas
ou mais instruções podem ser colocadas se estiverem entre chaves.
#include <stdio.h>
#include <stdlib.h>
main()
{
int cont, total;
for(cont = 0, total = 0; cont < 10; cont++)
{
total += cont;
printf(“cont = %d, total = %d\n”, cont, total);
}
system("pause");
28
Programação de Computadores I Apostila de C
Quando um laço está dentro de outro laço, dizemos que o laço interior está
aninhado.
O laço while
#include <stdio.h>
#include <stdlib.h>
main()
{
int cont = 0, total = 0; /* expressao de inicializacao */
while( cont < 10 ) /* expressao de teste */
{
total += cont;
printf(“cont = %d, total = %d\n”, cont, total);
cont++; /* expressao de incremento */
}
system("pause");
}
• Em situações em que o número de iterações é préviamente conhecido, como no
exemplo acima, o laço for é a escolha mais natural.
29
Programação de Computadores I Apostila de C
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
main()
{
int cont = 0;
char op = ‘S’ ;
#include <stdio.h>
#include <stdlib.h>
main()
{
int num;
float fat;
while(1)
{
printf(“\nInforme um numero: ”);
scanf(“%d”, &num);
fat = 1;
while( num > 1 )
fat *= num--;
printf(“\nO fatorial eh: %f \n”, fat);
}
system("pause");
}
30
Programação de Computadores I Apostila de C
O laço do-while
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
main()
{
int num;
float fat;
do
{
printf(“\nInforme um numero: ”);
scanf(“%d”, &num);
fat = 1;
while( num > 1 )
fat *= num--;
printf(“\nO fatorial eh: %f \n”, fat);
printf(“\nContinua [s/n]: ”);
}
while( getche() == ‘s’ );
system("pause");
}
31
Programação de Computadores I Apostila de C
O comando break
• O comando break pode ser usado no corpo de qualquer laço C. Causa a saída
imediata do laço. Se o break estiver em estruturas de laços aninhados, afetará
somente o laço que o contém e os laços internos a este.
• Como exemplo voltaremos ao programa fatorial que usa um laço infinito, e
inserimos uma instrução break.
#include <stdio.h>
#include <stdlib.h>
main()
{
int num;
float fat;
while(1)
{
printf(“\nInforme um numero: ”);
scanf(“%d”, &num);
fat = 1;
while( num > 1 )
fat *= num--;
printf(“\nO fatorial eh: %f \n”, fat);
break;
}
system("pause");
}
• Com a modificação, o programa calcula o fatorial de um único número.
32
Programação de Computadores I Apostila de C
Capítulo 5 – Vetores
Vetores Unidimensionais
• Os vetores precisam ser declarados, como qualquer outra variável, para que o
compilador conheça o tipo do vetor e reserve espaço de memória suficiente para
armazená-lo.
Declaração de um vetor
33
Programação de Computadores I Apostila de C
#include <stdio.h>
#include <stdlib.h>
main()
{
float notas[50];
float soma = 0.0;
int i;
(Fazer em sala)
34
Programação de Computadores I Apostila de C
#include <stdio.h>
#include <stdlib.h>
main()
{
float notas[MAX], soma = 0.0;
int i;
• O programa seguinte suporta uma classe de até 50 alunos e pode aceita qualquer
número de notas.
#include <stdio.h>
#include <stdlib.h>
main()
{
float notas[tam], soma = 0.0;
int i = 0;
do
35
Programação de Computadores I Apostila de C
{
printf(“Informe a nota do aluno %d: ”, i);
scanf(“%f”, ¬as[i]);
if(notas[i] > 0)
soma += notas[i];
}
while(notas[i++] >= 0);
Checando limites
#include <stdio.h>
#include <stdlib.h>
do
{
if( i >= tam )
{
printf(“\nBuffer cheio\n”);
i++;
break; /* sai do laco do-while */
}
printf(“Informe a nota do aluno %d: ”, i);
scanf(“%f”, ¬as[i]);
if(notas[i] > 0)
soma += notas[i];
}
while(notas[i++] ≥ 0);
36
Programação de Computadores I Apostila de C
Inicializando vetores
#include <stdio.h>
#include <stdlib.h>
main()
{
int moedas[tam] = {50, 25, 10, 5, 1};
int i, valor, quant;
• O vetor moedas contém os valores das várias moedas possíveis. Para inicializar
moedas a lista de valores é colocada entre chaves e os valores são separados por
vírgula.
• Os valores são atribuídos na seqüência, isto é, moedas[0] = 50, moedas[1] = 25 e
assim por diante até moedas[4] = 1.
37