Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

Prévia do material em texto

1 
LINGUAGEM E TÉCNICA DE PROGRAMAÇÃO I 
 
Profa. Gisele Busichia Baioco 
gisele@ft.unicamp.br 
 
 
Algoritmos Estruturados e 
Linguagem de Programação Estruturada 
 
Estrutura de Repetição em C 
1 Estrutura de Repetição para Número Definido de Repetições 
A estrutura de repetição para número definido de repetições é utilizada quando se 
sabe o número de vezes que um comando ou um conjunto de comandos deve ser repetido. 
O número de repetições é controlado por uma variável de contagem (ou contadora), na 
qual o valor da contagem é mantido. Deve-se especificar um valor inicial, um valor final e o 
passo para a contagem, fazendo com que a contagem seja crescente ou decrescente e ocorra 
de acordo com passo (de 1 em 1, de 2 em 2, de 3 em 3, etc). 
Sintaxe em C: 
for (inicialização; condição; incremento/decremento) 
 comando; 
onde: 
for: é a palavra reservada de C para a estrutura de repetição; 
inicialização: é um comando de atribuição que determina a variável de contagem com seu 
valor inicial; 
condição: é uma expressão relacional que testa a variável de contagem contra algum valor, 
para determinar quando a repetição terminará; 
incremento/decremento: define a maneira como a variável de contagem será alterada a cada 
repetição, ou seja, soma-se (incremento) ou subtrai-se (decremento) da variável de contagem 
o valor do passo; 
comando: qualquer instrução válida. 
 Caso seja necessária a execução de um bloco de comandos, a sintaxe é a seguinte: 
for (inicialização; condição; incremento/decremento) 
 { 
 comando1; 
 ... 
 comandoN; 
} 
 
 
 2 
Exemplos: 
Algoritmo 
 início 
 declare N1, N2, M, Mgeral, soma: numérico real; 
 cont: numérico inteiro; 
 soma ← 0; /* valor inicial para a sumarização das médias */ 
 para cont ← 1 até 50 passo 1 faça 
 início 
 escreva(“Digite as duas notas”); 
 leia(N1); 
leia(N2); 
 M ← (N1 + N2)/2; /* cálculo da média de um aluno */ 
 soma ← soma + M; /* sumariza as médias dos alunos */ 
 escreva(“Media do aluno ”, cont, “ = ”, M); 
 fim 
 Mgeral ← soma/50; /* cálculo da média geral dos 50 alunos */ 
 escreva(“Media geral da turma de alunos = ”, Mgeral); 
fim 
#include <stdio.h> 
main() 
 { 
 float N1, N2, M, Mgeral, soma; 
 int cont; 
 soma = 0; /* valor inicial para a sumarização das médias */ 
 for (cont=1; cont <= 50; cont++) 
 { 
 printf(“Digite as duas notas”); 
 scanf(“%f”, &N1); 
 scanf(“%f”, &N2); 
 M = (N1 + N2)/2; /* cálculo da média de um aluno */ 
 soma = soma + M; /* sumariza as médias dos alunos */ 
 printf(“Media do aluno %d = %f”, cont, M); 
 } 
 Mgeral = soma/50; /* cálculo da média geral dos 50 alunos */ 
 printf(“Media geral da turma de alunos = %f”, Mgeral); 
} 
 
Algoritmo 
 início 
 declare N, cont: numérico inteiro; 
 escreva(“Digite um número inteiro positivo: ”); 
 leia(N); 
 escreva(“Seqüência de números pares até ”, N); 
 para cont ← 2 até N passo 2 faça 
 escreva(cont); 
 fim 
#include <stdio.h> 
main() 
 { 
 int N, cont; 
 printf(“Digite um número inteiro positivo: ”); 
 scanf(“%d”, &N); 
 printf(“Seqüência de números pares até %d”, N); 
 for (cont = 2; cont <= N; cont = cont + 2) 
 printf(“%d “,cont); 
 } 
 
 3 
Variações do comando for 
 A linguagem C permite muitas variações que aumentam a flexibilidade e a 
aplicabilidade do comando for em certas situações de programação: 
1) Uso de duas ou mais variáveis de contagem: por exemplo, o programa seguinte imprime 
os números de 0 a 98 em incrementos de 2. Observa-se que as variáveis x e y controlam o 
número de repetições: 
#include <stdio.h> 
main() 
{ 
 int x, y; 
 for (x = 0, y = 0; x + y < 100; x++, y++) 
 printf("%d ", x + y) 
 } 
 
2) A condição de parada não tem necessariamente que envolver a variável de contagem: 
na verdade, a condição pode ser qualquer expressão válida em C. Por exemplo, o programa 
seguinte ajuda a ensinar adição a uma criança: 
#include <stdio.h> 
#include <conio.h> 
main() 
{ 
 int i, j, resposta; 
 char feito = ‘ ’; 
 for (i = 1; i < 100 && feito != ‘N’; i++) 
 { 
 for (j = 1; j < 10; j++) 
 { 
 printf("Quanto é %d + %d ?", i, j); 
 scanf("%d", &resposta); 
 if (resposta != i + j) 
 printf("errado\n"); 
 else 
printf("certo\n"); 
 } 
 printf("Deseja continuar? (S/N)"); 
 feito = getche(); 
 } 
} 
 
3) Não é necessária a definição de todas as partes do comando: por exemplo, a instrução 
seguinte é válida: 
for (x = 0; x != 100;) 
 
4) Laço infinito (loop infinito): pode-se fazer com que o número de repetições seja infinito 
deixando as partes do comando vazias. Por exemplo: 
 for (;;) 
 printf("Este laço rodará para sempre"); 
 
5) Comando for sem nenhum corpo: o corpo (comando ou bloco de comandos) pode ser 
vazio. Com isso pode-se aumentar a eficiência de certos algoritmos como, por exemplo, criar 
laços para o retardo de tempo: 
for (t = 0; t < algum_valor; t++); 
 4 
2 Estrutura de Repetição para Número Indefinido de Repetições Pré-Teste 
A estrutura de repetição para número indefinido de repetições pré-teste deve ser 
utilizada quando não se sabe o número de vezes que um comando ou um bloco de comandos 
deve ser repetido, embora também possa ser utilizada quando se sabe esse número. 
O número de repetições é controlado por uma condição representada por uma 
expressão lógica. O teste da condição de controle é realizado antes da execução do comando 
ou bloco de comandos, por isso essa estrutura de repetição é denominada pré-teste (teste no 
início). Desse modo, se a condição de controle for falsa logo na primeira comparação, o 
comando ou bloco de comandos da estrutura de repetição não será executado nenhuma vez. 
Sintaxe em C: 
while (condição) 
 comando; 
onde: 
while: é a palavra reservadas de C para a estrutura de repetição; 
condição: é uma expressão lógica que, enquanto for verdadeira, fará com que o comando seja 
executado. Quando se tornar falsa, fará com que a execução de comando pare, ou seja, 
interrompe a repetição; 
comando: qualquer instrução válida. 
 Caso seja necessária a execução de um bloco de comandos, a sintaxe é a seguinte: 
while (condição) 
{ 
comando1; 
... 
comandoN; 
} 
 
Exemplos: 
Algoritmo 
 início 
 declare N, r: numérico inteiro; 
 escreva(“Entre com um numero inteiro”); 
 leia(N); 
 enquanto (N ≠ 0) faça 
 início 
 r ← resto(N, 2); 
 se (r = 0) 
 então 
 escreva(“O numero é par”); 
 senão 
 escreva(“O numero é ímpar”); 
 escreva(“Entre com outro numero inteiro”); 
 leia(N); 
 fim 
fim 
 5 
#include <stdio.h> 
main() 
 { 
 int N, r; 
 printf(“Entre com um numero inteiro”); 
 scanf(“%d”, &N); 
 while (N != 0) 
 { 
 r = N % 2; 
 if (r == 0) 
 printf(“O numero é par”); 
 else 
 printf(“O numero é ímpar”); 
 printf(“Entre com outro numero inteiro”); 
 scanf(“%d”, &N); 
 } 
} 
 
Algoritmo 
 início 
 declare N1, N2, M, Mgeral, soma: numérico real; 
 cont: numérico inteiro; 
 soma ← 0; /* valor inicial para a sumarização das médias */ 
 cont ← 1; /* inicialização da variável de contagem */ 
 enquanto (cont ≤ 50) faça 
 início 
 escreva(“Digite as duas notas”); 
 leia(N1); 
leia(N2); 
 M ← (N1 + N2)/2; /* cálculo da média de um aluno */ 
 soma ← soma + M; /* sumariza as médias dos alunos */ 
 escreva(“Media do aluno ”, cont, “ = ”, M); 
 cont ← cont + 1; /* incremento da variável de contagem */ 
 fim 
 Mgeral ← soma/50; /* cálculo da média geral dos 50 alunos */ 
 escreva(“Media geral da turma de alunos = ”, Mgeral); 
fim 
#include <stdio.h> 
main() 
 { 
 float N1, N2, M, Mgeral, soma; 
 int cont; 
 soma = 0; /* valor inicial para a sumarização das médias */ 
 cont = 1; /* inicialização da variável de contagem */ 
 while (cont<= 50) 
 { 
 printf(“Digite as duas notas”); 
 scanf(“%f”, &N1); 
scanf(“%f”, &N2); 
 M = (N1 + N2)/2; /* cálculo da média de um aluno */ 
 soma = soma + M; /* sumariza as médias dos alunos */ 
 printf(“Media do aluno %d = %f”, cont, M); 
 cont = cont + 1; /* incremento da variável de contagem */ 
 } 
 Mgeral = soma/50; /* cálculo da média geral dos 50 alunos */ 
 printf(“Media geral da turma de alunos = %f”, Mgeral); 
} 
 
 6 
3 Estrutura de Repetição para Número Indefinido de Repetições Pós-Teste 
A estrutura de repetição para número indefinido de repetições pós-teste deve ser 
utilizada quando não se sabe o número de vezes que um comando ou um bloco de comandos 
deve ser repetido, embora também possa ser utilizada quando se sabe esse número. 
O número de repetições é controlado por uma condição representada por uma 
expressão lógica. O teste da condição de controle é realizado após a execução do comando ou 
bloco de comandos, por isso essa estrutura de repetição é denominada pós-teste (teste no 
final). Desse modo, a execução do comando ou bloco de comandos ocorre pelo menos uma 
vez antes que a condição de controle seja testada, o que difere a estrutura de repetição para 
número indefinido de repetições pós-teste da pré-teste. 
Sintaxe em C: 
do { 
 comando ou bloco de comandos; 
} while (condição) 
onde: 
do e while: são as palavras reservadas de C para a estrutura de repetição; 
condição: é uma expressão lógica que, enquanto for verdadeira, fará com que o comando ou o 
bloco de comandos seja executado. Quando se tornar falsa, fará com que a execução pare; 
comando ou bloco de comandos: qualquer instrução ou conjunto de instruções válidas. 
 Embora as chaves { } não sejam necessárias quando do-while tiver apenas um 
comando, elas são geralmente usadas para aumentar a legibilidade. 
 Deve-se observar que a lógica de execução de do-while é inversa da do repita-até em 
algoritmos. Esquematicamente tem-se: 
 
 
condição 
comando(s) 
Falsa 
Verdadeira 
condição 
comando(s) 
Verdadeira 
Falsa 
do-while repita-até 
 
 7 
Exemplos: 
Algoritmo 
 início 
 declare N, r: numérico inteiro; 
 repita 
 escreva(“Entre com um numero inteiro”); 
 leia(N); 
 se (N ≠ 0) 
 então início 
 r ← resto(N, 2); 
 se (r = 0) 
 então 
 escreva(“O numero é par”); 
 senão 
 escreva(“O numero é ímpar”); 
 fim 
 até (N = 0); 
fim 
#include <stdio.h> 
main() 
 { 
 int N, r; 
 do { 
 printf(“Entre com um numero inteiro”); 
 scanf(“%d”, &N); 
 if (N != 0) 
 { 
 r = N % 2; 
 if (r == 0) 
 printf(“O numero é par”); 
 else 
printf(“O numero é ímpar”); 
 } 
 } while (N != 0); 
 } 
 
Algoritmo 
 início 
 declare N1, N2, M, Mgeral, soma: numérico real; 
 cont: numérico inteiro; 
 soma ← 0; /* valor inicial para a sumarização das médias */ 
 cont ← 1; /* inicialização da variável de contagem */ 
 repita 
 escreva(“Digite as duas notas”); 
 leia(N1); 
leia(N2); 
 M ← (N1 + N2)/2; /* cálculo da média de um aluno */ 
 soma ← soma + M; /* sumariza as médias dos alunos */ 
 escreva(“Media do aluno ”, cont, “ = ”, M); 
 cont ← cont + 1; /* incremento da variável de contagem */ 
 até (cont > 50); 
 Mgeral ← soma/50; /* cálculo da média geral dos 50 alunos */ 
 escreva(“Media geral da turma de alunos = ”, Mgeral); 
fim 
 8 
#include <stdio.h> 
main() 
 { 
 float N1, N2, M, Mgeral, soma; 
 int cont; 
 soma = 0; /* valor inicial para a sumarização das médias */ 
 cont = 1; /* inicialização da variável de contagem */ 
 do { 
 printf(“Digite as duas notas”); 
 scanf(“%f”, &N1); 
scanf(“%f”, &N2); 
 M = (N1 + N2)/2; /* cálculo da média de um aluno */ 
 soma = soma + M; /* sumariza as médias dos alunos */ 
 printf(“Media do aluno %d = %f”, cont, M); 
 cont = cont + 1; /* incremento da variável de contagem */ 
 } while (cont <= 50); 
 Mgeral = soma/50; /* cálculo da média geral dos 50 alunos */ 
 printf(“Media geral da turma de alunos = %f”, Mgeral); 
} 
4 Exemplos de Programas C 
1) Faça um algoritmo e programa C que calcule o fatorial de um número inteiro qualquer. 
Sabe-se que: 
0! = 1 
n! = 1*2*3*...*n-1*n, n > 0 
Algoritmo 
início 
 /* Declaração de variáveis */ 
 declare num, fatorial, cont: numérico inteiro; 
 /* Entrada de dados */ 
 escreva(“Digite um número inteiro para o calculo do fatorial: ”); 
 leia(num); 
/* Processo – cálculo do fatorial */ 
fatorial ← 1; /* resolve o problema de fatorial de 0 e 1 */ 
para cont ← 2 até num passo 1 faça 
 fatorial ← fatorial * cont; 
escreva(“Fatorial = ”, fatorial); 
fim 
#include <stdio.h> 
main() 
{ 
 /* Declaração de variáveis */ 
 int num, fatorial, cont; 
 /* Entrada de dados */ 
 printf(“Digite um número inteiro para o calculo do fatorial: ”); 
 scanf(“%d”, &num); 
/* Processo – cálculo do fatorial */ 
fatorial = 1; /* resolve o problema de fatorial de 0 e 1 */ 
for (cont = 2; cont <= num; cont++) 
 fatorial = fatorial * cont; 
printf(“Fatorial = %d”, fatorial); 
} 
 9 
2) Anacleto tem 1.50 m de altura e cresce 2 centímetros por ano enquanto Felisberto tem 
1.10 m de altura e cresce 3 centímetros por ano. Construa um algoritmo e programa C 
que calcule e imprima quantos anos serão necessários para que Felisberto seja mais 
alto que Anacleto. 
Algoritmo 
início 
 /* Declaração de variáveis */ 
 declare alt_A, alt_F: numérico real; 
 anos: numérico inteiro; 
 /* Processo*/ 
 alt_A ← 1.50; /* inicializa a altura de Anacleto */ 
 alt_F ← 1.10; /* inicializa a altura de Felisberto */ 
 anos ← 0; /* inicializa o numero de anos */ 
 enquanto (alt_A ≥ alt_F) 
 início 
 alt_A ← alt_A + 0.02; 
 alt_F ← alt_F + 0.03; 
 anos ← anos + 1; 
 fim 
 escreva(“Anos= ”, anos); 
fim 
#include <stdio.h> 
main() 
{ 
 /* Declaração de variáveis */ 
 float alt_A, alt_F; 
int anos; 
 /* Processo*/ 
 alt_A = 1.50; /* inicializa a altura de Anacleto */ 
 alt_F = 1.10; /* inicializa a altura de Felisberto */ 
 anos = 0; /* inicializa o numero de anos */ 
 while (alt_A >= alt_F) 
 { 
 alt_A = alt_A + 0.02; 
 alt_F = alt_F + 0.03; 
 anos = anos + 1; 
 } 
 printf(“Anos = %d”, anos); 
} 
 
 10 
3) A nota final de um estudante é calculada a partir de três notas: laboratório, avaliação 
semestral e exame final, com os pesos 2, 3 e 5, respectivamente. Faça um algoritmo 
que leia três notas de um estudante e calcule e mostre a média ponderada, repetindo o 
processo até que o usuário deseje parar. 
Algoritmo 
início 
 /* Declaração de variáveis */ 
 declare laboratorio, semestral, exame, media: numérico real; 
 resp: caractere; 
 repita 
 /* Entrada de dados */ 
 escreva(“Digite a nota de laboratório: ”); 
 leia(laboratorio); 
 escreva(“Digite a nota da avaliação semestral: ”); 
 leia(semestral); 
 escreva(“Digite a nota do exame final: ”); 
leia(exame); 
/* Processo – cálculo da média ponderada */ 
media ← (laboratório * 2 + semestral * 3 + exame * 5) / 10; 
/* Saída de dados */ 
escreva(“Média ponderada = ”, media); 
escreva(“Deseja continuar(S/N)?”); 
leia(resp); 
 até (resp = ‘N’); 
fim 
#include <stdio.h> 
#include <conio.h> 
main() 
{ 
 /* Declaração de variáveis */ 
 float laboratorio, semestral, exame, media; 
 char resp; 
 do { 
 /* Entrada de dados */ 
 printf(“Digite a nota de laboratório: ”); 
 scanf(“%f”, &laboratorio); 
 printf(“Digite a nota da avaliação semestral: ”); 
 scanf(“%f”, &semestral); 
 printf(“Digite a nota do exame final: ”); 
scanf(“%f”, &exame); 
/* Processo – cálculo da média ponderada */ 
media = (laboratorio * 2 + semestral * 3 + exame * 5) / 10; 
/* Saída de dados */ 
printf(“Média ponderada = %f”, media); 
printf(“Deseja continuar(S/N)?”); 
resp = getche(); 
 } while (resp == ‘S’); 
}
 11 
Exercícios de Fixação 
 
1) Faça um algoritmo e programa C para determinar os divisores de um número 
qualquer. 
2) Construa um algoritmo e programa C que, dadoum conjunto de valores inteiros e 
positivos, determine qual o menor e o maior valor do conjunto. O final do conjunto de 
valores é determinado pelo valor –1, que não deve ser considerado. 
3) Calcule o imposto de renda de N contribuintes, considerando que os dados de cada 
contribuinte número do CPF, número de dependentes e renda mensal, são valores 
fornecidos pelo usuário. Para cada contribuinte serão deduzidos 5% da renda mensal 
correspondente a cada dependente. Os valores da alíquota para cálculo do imposto são: 
 
Renda Líquida Alíquota 
Até 2 salários mínimos Isento 
De 2 a 3 salários mínimos. 5% 
De 3 a 5 salários mínimos. 10% 
De 5 a 7 salários mínimos. 15% 
Acima de 7 salários mínimos 20% 
 Obs: O valor atual do salário mínimo deve ser fornecido pelo usuário. 
4) Elabore um algoritmo e programa C que leia números reais até que o valor da soma 
destes números seja ≥ 100. O algoritmo deverá fornecer ao final, quantos valores lidos 
foram necessários para satisfazer tal condição. 
5) Elabore um algoritmo e programa C que calcule e escreva a soma de todos os números 
ímpares que são múltiplos de 3 e que se encontram no conjunto dos números de 1 até 
500.

Mais conteúdos dessa disciplina