Estruturas de repetição (Ciclos) 1 Universidade Metodista de Angola, Departamento de Engenharias Introdução Vamos começar por tentar resolver os seguintes exercícios com base nos conhecimentos Que já temos até agora. Problema 1: Escreva um programa em ANSI-C que escreve os primeiros 10 números inteiros no ecrã. Problema 2: Escreva um programa em C que escreve os primeiros 100 números inteiros no ecrã. Problema 3: Escreva um programa em C que escreve os primeiros 1000 números inteiros no ecrã. Problema 4: Escreva um programa em C que escreve os primeiros 10.000 números inteiros no ecrã.
20
Embed
Estruturas de repetição (Ciclos) - web.ist.utl.ptweb.ist.utl.pt/ist153068/...I_Cap_7_Estruturas_de_repeticao_ciclos.pdf · Estruturas de repetição (Ciclos) Universidade Metodista
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Estruturas de repetição (Ciclos)
1Universidade Metodista de Angola, Departamento de Engenharias
Introdução
Vamos começar por tentar resolver os seguintes exercícios com base nos conhecimentosQue já temos até agora.
Problema 1:
Escreva um programa em ANSI-C que escreve os primeiros 10 números inteiros no ecrã.
Problema 2:
Escreva um programa em C que escreve os primeiros 100 números inteiros no ecrã.
Problema 3:
Escreva um programa em C que escreve os primeiros 1000 números inteiros no ecrã.
Problema 4:
Escreva um programa em C que escreve os primeiros 10.000 números inteiros no ecrã.
Estruturas de repetição (Ciclos)
2Universidade Metodista de Angola, Departamento de Engenharias
3Universidade Metodista de Angola, Departamento de Engenharias
Solução do Problema 1
Outputs:
Solução 1 Solução 2 Solução3 Solução4
imprime o seguinte: não funciona imprime o seguinte: imprime o seguinte:
12345678910 12345678910 123455678910
• Resolução do Problema 2, tinha que se usar 100 instruções printf ou puts. • Resolução do Problema 3, tinha que se usar 1000 instruções printf ou puts.• Resolução do Problema 4, tinha que se usar 10.000 instruções printf ou puts.
• Não é a melhor forma de programar.• Existem instruções em C que permitem fazer repetições• Essas instruções são as seguintes:
• Instrução while também conhecido por ciclo while• Instrução do-while• Instrução for também conhecido por ciclo for
– Essas instruções são as mesmas na linguagem C++, linguagem java.– Quando se diz que são as mesmas quer dizer a sintaxe é exactamente igual nessas linguagens de
programação.– No visual basic a sintaxe é um pouco diferente.
Estruturas de repetição (Ciclos)
4Universidade Metodista de Angola, Departamento de Engenharias
• Vamos então estudar cada uma delas, começando pela sintaxe e depois exemplos.• Lembrem-se que queremos resolver o problema 2, problema 3 e o problema
4.• Instrução while
Sintaxe:while ( condição )
instrução ou bloco de instruções;
Estruturas de repetição (Ciclos)
5Universidade Metodista de Angola, Departamento de Engenharias
condiçãoNão Sim
Instruções; ou bloco de instruções
Entrada do ciclo
Saída do ciclo
Fluxograma da instrução while
Interpretação: enquanto a condição for verdadeira executar o bloco de instruções
Estruturas de repetição (Ciclos)
6Universidade Metodista de Angola, Departamento de Engenharias
#include <stdio.h>#include <stdlib.h>
int main(){
int i = 1;
while( i <= 10 ){
printf(“%d”,i);i++;
}exit(0);}
Solução do problema 1Usando a instrução while
#include <stdio.h>#include <stdlib.h>
int main(){
int i = 1;
while( i <= 100 ){
printf(“%d”,i);i++;
}exit(0);}
Solução do problema 2Usando a instrução while
#include <stdio.h>#include <stdlib.h>
int main(){
int i = 1;
while( i <= 1000 ){
printf(“%d”,i);i++;
}exit(0);}
Solução do problema 3Usando a instrução while
Instrução while
• Instrução do-whileSintaxe:
doinstrução ou bloco de instruções;
while ( condição );
Estruturas de repetição (Ciclos)
7Universidade Metodista de Angola, Departamento de Engenharias
condiçãoNão Sim
Instruções; ou bloco de instruções
Entrada do ciclo
Saída do ciclo
Fluxograma da instrução do-while
Interpretação: do fazer while enquanto
Fazer, enquanto….As instruções são executadas pelo menos
uma vez.
Estruturas de repetição (Ciclos)
8Universidade Metodista de Angola, Departamento de Engenharias
#include <stdio.h>#include <stdlib.h>
int main(){
int i = 1;
do{
printf(“%d”,i);i++;
}while( i <= 10 );exit(0);}
Solução do problema 1Usando a instrução do-while
#include <stdio.h>#include <stdlib.h>
int main(){
int i = 1;
do{
printf(“%d”,i);i++;
}while( i <= 100 );exit(0);}
Solução do problema 2Usando a instrução do-while
#include <stdio.h>#include <stdlib.h>
int main(){
int i = 1;
do{
printf(“%d”,i);i++;
}while( i <= 1000 );exit(0);}
Solução do problema 3Usando a instrução do-while
Instrução do-while
Estruturas de repetição (Ciclos)
9Universidade Metodista de Angola, Departamento de Engenharias
• Instrução forSintaxe:
for( inicializações ; condição ; pos-instrução)instrução ou bloco de instruções;
Fluxograma da instrução for
condiçãoNão Sim
Instruções; ou bloco de instruções
Entrada do ciclo
Saída do ciclo
inicializações
Pós-instrução
for( i = 1 ; i <= 10 ; i++ ){printf(“%d”,i);
}
Exemplo:
Estruturas de repetição (Ciclos)
10Universidade Metodista de Angola, Departamento de Engenharias
#include <stdio.h>#include <stdlib.h>
int main(){
int i;
for( i = 1 ; i <= 100 ; i++){
printf(“%d”,i);}
exit(0);}
Solução do problema 1Usando a instrução for
#include <stdio.h>#include <stdlib.h>
int main(){
int i;
for( i = 1 ; i <= 10 ; i++ ){
printf(“%d”,i);}
exit(0);}
Solução do problema 2Usando a instrução for
#include <stdio.h>#include <stdlib.h>
int main(){
int i;
for( i = 1 ; i <= 1000 ; i++){
printf(“%d”,i);}
exit(0);}
Solução do problema 3Usando a instrução forInstrução for
Estruturas de repetição (Ciclos)
11Universidade Metodista de Angola, Departamento de Engenharias
condiçãoNão Sim
Instruções; ou bloco de instruções
Entrada do ciclo
Saída do ciclo
condiçãoNão Sim
Instruções; ou bloco de instruções
Entrada do ciclo
Saída do ciclo condiçãoNão Sim
Instruções; ou bloco de instruções
Entrada do ciclo
Saída do ciclo
inicializações
Pós-instrução
Fluxograma do ciclo while Fluxograma do ciclo do-while Fluxograma do ciclo for
Resumo
Testa a condição antes de Executar as instruções
As instruções são executadasZero ou mais vezes
Testa a condição depois de Executar as instruções
As instruções são executadasUma ou mais vezes
Testa a condição antes de Executar as instruções
As instruções são executadasZero ou mais vezes
• Instrução break1. Terminar a execução das instruções dentro da instrução switch.2. A instrução break, quando aplicada a um ciclo, termina o correspondente
ciclo.
• Instrução continue– A instrução continue dentro de um ciclo, permite passar para próxima
iteração.
Estruturas de repetição (Ciclos)
12Universidade Metodista de Angola, Departamento de Engenharias
#include <stdio.h>#include <stdlib.h>
int main(){
int i;
for( i = 1 ; i <= 30 ; i++ ){
if(i==15)break;
else printf(“%d ”,i);
}exit(0);}
Exemplo usando a instrução break
O que é que esse programa imprime no ecrã?
Resposta: O programa imprime:1 2 3 4 5 6 7 8 9 10 11 12 13 14
Imprime todos os números inteiros entre 0 e 15
Estruturas de repetição (Ciclos)
13Universidade Metodista de Angola, Departamento de Engenharias
#include <stdio.h>#include <stdlib.h>
int main(){
int i;
for( i = 1 ; i <= 30 ; i++ ){
if(i%2==0)continue;
else printf(“%d ”,i);
}exit(0);}
Exemplo usando a instrução continue
O que é que esse programa imprime no ecrã?
Resposta: O programa imprime:1 3 5 7 9 11 13 15 16 17 19 21 23 25 27 29
Imprime todos os números impares entre 0 e 30
Estruturas de repetição (Ciclos)
14Universidade Metodista de Angola, Departamento de Engenharias
#include <stdio.h>
int main(){
int i, j, n;char c;
printf("introduza um número:");scanf("%d",&n);//c=getchar();printf("introduza um caracter:");scanf("%c",&c);
for( i = 1 ; i <= n ; i++){
for( j = 1 ; j <= n ; j++)putchar(c);putchar('\n');
}exit(0);
}
O programa exemplifica dois ciclos for Encadeados.
Este exemplo foi tirado do livro do prof.Luis Damas. (pag 150).
O programa pede ao utilizador que insiraUm número e um caracter, e posteriormenteEscreve n linhas, cada uma delas com n caracteres.
exemplo:
Introduza um número: 4Introduza um caracter:#Output:# # # # # # # ## # # ## # # #
Os ciclos podem ser encadeados
• Ciclos que nunca terminam, ou seja, a condição é sempre verdadeira• Exemplos
• Esses tipos de ciclos são normalmente usados quando não se sabe a partida o número de vezes que se vai iterar o ciclo.
• Para terminar o ciclo infinito usa-se a instrução break ou return;
• No slide que se segue, é mostrado dois exemplos de terminação de ciclos infinitos usando as instruções break e return.
• O exemplo que se segue, permite esclarecer a diferença entre a instrução break e a instrução return.
Estruturas de repetição (Ciclos)
15Universidade Metodista de Angola, Departamento de Engenharias
Ciclos infinitos
while (1)instruções;
doInstruções; while(1);
for( ; ; )instruções;
#include <stdio.h>#include <stdlib.h>
int main()
int i=1;
for( ; ; ){
if(i==3)break;
i++;}printf("Rubem");exit(0);
}
Estruturas de repetição (Ciclos)
16Universidade Metodista de Angola, Departamento de Engenharias
#include <stdio.h>#include <stdlib.h>
int main()
int i=1;
for( ; ; ){
if(i==3)return;
i++;}printf("Rubem");exit(0);
}
Output:Rubem
Output:None - Nothing
O break termina o ciclo O return sai da função, ou seja, sai da função main
Exercícios
17Universidade Metodista de Angola, Departamento de Engenharias
Escreva um programa em Linguagem C que lê um inteiro positivo e determina se esse número é primo.Solução: