working 04 : conceitos básicos iii
TRANSCRIPT
Universidade Federal do Espirito SantoCentro Tecnologico
Working 04 : Conceitos Básicos III
Objetivos:
• Dominar a construção de estruturas de repetição em C;
• Aperfeiçoar-se na resolução de problemas;
Prazo de Envio: sexta-feira, 09/09, 23:55.
PETEngenharia de Computação
Introcomp 2016
1 INTRODUÇÃO
Finalizando os conceitos básicos, neste Working apresentaremos outras três estruturas derepetição: for, while e do-while. Além destes, vamos compreender algumas práticas deprogramação em processamento de textos e jogos. Por fim, vamos praticar e dominar todosos conceitos básicos que permeiam o alicerce da programação de computadores!
2 A ESTRUTURA DE REPETIÇÃO FOR
O comando de repetição condensado permite agrupar, em um único comando, a inicializaçãode uma variável, o incremento desta variável e o teste de parada. Seu uso mais comumem situações nas quais o número de repetições da sequência de comandos conhecido antesmesmo do início do for. A estrutura do comando é exibida a seguir:
1 f o r (< i n i c i a l i z a c a o >; <expres sao l og i c a >; <incremento >){<Sequencia de comandos>
3 }
Inicialização é um comando de atribuição usado para colocar um valor na variável de controleutilizada na expressão lógica. Assim como os demais comandos de repetição, a expressãológica representa a condição de parada das iterações. Incremento define como a variável decontrole será modificada a cada iteração. Um exemplo para entendermos:
1 #inc lude <s td i o . h>in t main ( ) // e s t e programa imprime numeros de 1 a ’n ’ .
3 {i n t n ;
5 i n t i ;
7 p r i n t f ( " D ig i t e um numero i n t e i r o e maior que zero : " ) ;s can f ( "%d",&n) ;
9
f o r ( i=1 ; i<=n ; i++) // observe que e u t i l i z a d o ’ ; ’ ! !11 p r i n t f ( "%d\n" , i ) ;
13 r e turn 0 ;}
Observe que a variável contadora foi inicializada com o valor 1 e é incrimentada com o valor1 (i++). Além disso, haverá a parada quando i for maior que n.
3 A ESTRUTURA DE REPETIÇÃO WHILE
O comando de repetição while é utilizado para repetições de trechos de códigos em quehá a necessidade de se fazer um teste antes da execução de determinado trecho de código.Por isso, é conhecido como comando de repetição com pré-condição. Vejamos a sintaxe docomando:
PET - Engenharia de Computação 2
Introcomp 2016
whi le (<expres sao l og i c a >)2 {
<sequenc ia de comandos>4 }
A expressão lógica presente entre parênteses definirá a condição de parada do comando, ouseja, enquanto a expressão lógica for verdadeira, a sequência de comandos que estiver entreas chaves continuará a ser repetida.Vejamos um exemplo de utilização do comando:
#inc lude <s td i o . h>2 i n t main ( )
{4 i n t num = 2 ;
whi l e (num%2 == 0)6 {
scan f ( "%d" , &num) ;8 p r i n t f ( "%d\n" , num) ;
}10 r e turn 0 ;
}
O trecho de código acima permite que o usuário imprima números enquanto esses númerosforem pares, e os imprime na tela.
4 A ESTRUTURA DE REPETIÇÃO DO-WHILE
Em contraste com o comando de repetição com pré-condição, o comando de repetição compós-condição, do while, só efetua o teste da expressão lógica (condição de parada) após aprimeira execução da sequência de comandos. Logo, a sequência de comandos é executadapelo menos uma vez, independente da expressão lógica. A própria sintaxe do comando sugereessa diferença:
1 do{<sequenc ia de comandos>
3 } whi l e (< e x p r e s s o l g i c a >) ;
Um exemplo para entender sua utilidade:
1 #inc lude <s td i o . h>in t main ( )
3 {i n t candidato ;
5 i n t conf i rma ;
7 do{p r i n t f ( " D ig i t e o numero do seu candidato : " ) ;
9 s can f ( "%d",&candidato ) ;switch ( candidato )
PET - Engenharia de Computação 3
Introcomp 2016
11 {case 13 :
13 p r i n t f ( "Voce votou na I r i n y Lopes ! \ n" ) ;break ;
15 case 23 :p r i n t f ( "Voce votou no Rezende ! \ n" ) ;
17 break ;case 43 :
19 p r i n t f ( "Voce votou no Luiz Paulo ! \ n" ) ;break ;
21 de f au l t :p r i n t f ( "Voce votou nulo ! \ n" ) ;
23 }p r i n t f ( " D ig i t e 1 ( conf i rmar ) ou 0 ( votar novamente ) : " ) ;
25 s can f ( "%d",&conf irma ) ;} whi l e ( ! conf i rma ) ;
27
r e turn 0 ;29 }
O programa acima permite ao usuário escolher um candidato a partir da digitação de seunúmero, e finaliza a repetição quando o usuário decide confirmar seu voto, ou seja, digitar1 após a escolha do candidato. Caso o usuário deseje modificar seu voto, basta escolher 0para votar novamente, e desta maneira a repetição continua por pelo menos mais um ciclo.
5 DESVIO INCONDICIONAL BREAK
1 whi le (<condicao >){
3 f o r ( i n i c i a l i z a c a o ; condicao ; incremento ){
5 whi le (<condicao >){
7 i f (<condicao >)break ; // Ocorre a in t e r rupcao da e s t r t u r a de r epe t i cao , seguindo com o deco r r e r
do codigo .9 . . .
. . .11 . . .
}13 . . .
. . .15 . . .
17 }}
O comando break desvia o fluxo do programa de forma que a execução do mesmo continuano bloco de código do loop exterior. Caso não haja um loop exterior, o programa é desviadopara o bloco de código exterior.
6 DESVIO INCONDICIONAL CONTINUE
PET - Engenharia de Computação 4
Introcomp 2016
whi le (<condicao >)2 {
f o r ( i n i c i a l i z a c a o ; condicao ; incremento )4 {
whi le (<condicao >)6 {
i f (<condicao >)8 cont inue ;
. . .10 . . .
. . .12 }
. . .14 . . .
}16 }
O comando continue desvia o fluxo do programa de forma que a execução do mesmo continuaao final do bloco de código do loop atual.
PET - Engenharia de Computação 5
Introcomp 2016
Praticando
Agora vamos praticar! Para todos os praticando em que é pedido que se escreva umprograma, escreva o código do seu programa e nos envie o .c (código fonte) correspondente.
1. Considere o código abaixo:#inc lude <s td i o . h>
2 i n t main ( ){
4 i n t i , j , cont ;f o r ( i =0; i <10; i++)
6 {i f ( i ==10){
8 break ;}
10
f o r ( j =0; j <20; j++)12 {
i f ( i >=9)14 {
break ;16 }
}18 cont = cont + 2 ;
}20 r e turn 0 ;
}22
(a) Para que linha do código acima, o comando break da linha 15 desviará o fluxo deexecução do programa?
(b) O comando break da linha 8 é inútil. Explique por quê.(c) Descreva brevemente o funcionamento do comando break.
2. Considere os códigos a seguir:
(a)1 f o r ( i =0; i <20; i++)
{3 //Codigos . . .
}5
(b)i =0;
2 whi le ( i <100){
4 //Codigos . .i = i + 2 ;
6 }
PET - Engenharia de Computação 6
Introcomp 2016
(c)f o r ( i =0, j =2; i <8 | | j <16; i++, j+=2)
2 {//Codigos
4 }
Transcreva os códigos de cada letra por alguma outra estrutura de repetição dentre aspossíveis (do-while, while e for), que não esteja já sendo utilizada pela letra.
3. Faça um programa em C que calcula o produto dos números digitados pelo usuário. Oprograma em C deve permitir que o usuário digite uma quantidade não determinadade números. E que encerre quando o usuário digita 0. Use as estruturas que acharapropriado.
4. Faça um programa que simule um jogo de loteria: deverá ser pré estabelecido um nú-mero vencedor pelo programador, e o usuário deverá tentar adivinhá-lo. A cada erroo programa deverá indicar se o número tentado pelo usuário é maior ou menor do queo número premiado. O programa só deverá encerrar quando o usuário acertar o número.
5. Exiba a tabuada de multiplicação de 1 a ‘n’ números sendo 0<n<=10.Ex:Entrada:1Saída:1*1 = 11*2 = 21*3 = 31*4 = 41*5 = 51*6 = 61*7 = 71*8 = 81*9 = 91*10 = 10
PET - Engenharia de Computação 7
Introcomp 2016
Desafios1. Faça um programa em C que, dado dois números inteiros lidos pelo teclado imprima o
MDC (Máximo Divisor Comum) desses dois números.
NO PRÓXIMO ENCONTRO...No próximo encontro vamos iniciar os estudos em modularização na linguagem C!
PET - Engenharia de Computação 8