ces-10 introduÇÃo À computaÇÃo

46
CES-10 INTRODUÇÃO À CES-10 INTRODUÇÃO À COMPUTAÇÃO COMPUTAÇÃO Capítulo IV Capítulo IV Comandos de Controle de Comandos de Controle de Fluxo Fluxo

Upload: iola-sosa

Post on 03-Jan-2016

23 views

Category:

Documents


0 download

DESCRIPTION

CES-10 INTRODUÇÃO À COMPUTAÇÃO. Capítulo IV Comandos de Controle de Fluxo. Capítulo IV – Comandos de Controle de Fluxo. 4.1 – Comandos compostos 4.2 – Comandos condicionais 4.3 – Expressões condicionais 4.4 – Comandos repetitivos 4.5 – Comandos de escape - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: CES-10  INTRODUÇÃO À COMPUTAÇÃO

CES-10 INTRODUÇÃO CES-10 INTRODUÇÃO À COMPUTAÇÃOÀ COMPUTAÇÃO

Capítulo IV Capítulo IV

Comandos de Controle de Comandos de Controle de FluxoFluxo

Page 2: CES-10  INTRODUÇÃO À COMPUTAÇÃO

Capítulo IV – Comandos Capítulo IV – Comandos de Controle de Fluxode Controle de Fluxo

4.1 – Comandos compostos4.1 – Comandos compostos

4.2 – Comandos condicionais4.2 – Comandos condicionais

4.3 – Expressões condicionais4.3 – Expressões condicionais

4.4 – Comandos repetitivos4.4 – Comandos repetitivos

4.5 – Comandos de escape4.5 – Comandos de escape

4.6 – Comandos de seleção4.6 – Comandos de seleção

4.7 – Introdução à metodologia top-4.7 – Introdução à metodologia top-down down

Page 3: CES-10  INTRODUÇÃO À COMPUTAÇÃO

4.1 – Comandos Compostos4.1 – Comandos Compostos

4.1.1 – Definição 4.1.1 – Definição

Comando composto: Comando composto: sequência linear de sequência linear de comandos delimitada por abre e fecha-chaves comandos delimitada por abre e fecha-chaves (‘{’ e ‘}’)(‘{’ e ‘}’)

Muitas vezes o Muitas vezes o escopoescopo de um comando de um comando condicional ou repetitivo é um condicional ou repetitivo é um comando comando compostocomposto

Page 4: CES-10  INTRODUÇÃO À COMPUTAÇÃO

4.1.2 – Descrições sintáticas informais 4.1.2 – Descrições sintáticas informais de comandos tradicionais de comandos tradicionais

CmdComposto → CmdComposto → {{ Comando Comando ... Comando Comando ... Comando Comando }}

Comando → CmdComposto | Comando → CmdComposto | CmdCondicional | CmdCondicional | CmdRepetitivo | CmdRepetitivo | CmdSeleção | CmdAtribuição | CmdSeleção | CmdAtribuição | CmdEntrada | CmdSaída | CmdEscape | CmdEntrada | CmdSaída | CmdEscape | ChamadaFunção | CmdReturn | CmdVazioChamadaFunção | CmdReturn | CmdVazio

CmdAtribuição → Variável CmdAtribuição → Variável == Expressão Expressão ;;

CmdVazio → ;CmdVazio → ;

As descrições de CmdCondicional, CmdRepetivo e outros serão vistas oportunamente

Page 5: CES-10  INTRODUÇÃO À COMPUTAÇÃO

Capítulo IV – Comandos Capítulo IV – Comandos de Controle de Fluxode Controle de Fluxo

4.1 – Comandos compostos4.1 – Comandos compostos

4.2 – Comandos condicionais4.2 – Comandos condicionais

4.3 – Expressões condicionais4.3 – Expressões condicionais

4.4 – Comandos repetitivos4.4 – Comandos repetitivos

4.5 – Comandos de escape4.5 – Comandos de escape

4.6 – Comandos de seleção4.6 – Comandos de seleção

4.7 – Introdução à metodologia top-4.7 – Introdução à metodologia top-down down

Page 6: CES-10  INTRODUÇÃO À COMPUTAÇÃO

4.2 – Comandos 4.2 – Comandos CondicionaisCondicionais

4.2.1 – Descrição sintática4.2.1 – Descrição sintática

CmdCondicional → CmdCondicional → if if (( Expressão Expressão )) Comando |Comando |

if (if ( Expressão Expressão )) Comando Comando elseelse ComandoComando

Page 7: CES-10  INTRODUÇÃO À COMPUTAÇÃO

4.2.2 – Fluxogramas4.2.2 – Fluxogramas

if ( Expressão ) Comando if ( Expressão ) Comando

if ( Expressão ) Comando if ( Expressão ) Comando

else Comandoelse Comando

Comando

Expressão

V F

Comand

o

Expressão

V

F

Comand

os

Page 8: CES-10  INTRODUÇÃO À COMPUTAÇÃO

4.2.3 – Ambiguidade4.2.3 – Ambiguidade

O seguinte esqueleto tem dupla interpretação:O seguinte esqueleto tem dupla interpretação:

if ( Expr1 ) if (Expr2) Comando if ( Expr1 ) if (Expr2) Comando else Comandoelse Comando

A qual dos dois A qual dos dois if’sif’s corresponde o corresponde o elseelse? ?

Page 9: CES-10  INTRODUÇÃO À COMPUTAÇÃO

if ( Expr1 ) if (Expr2) Cmd1 else Cmd2if ( Expr1 ) if (Expr2) Cmd1 else Cmd2

Cmd2

Expr2V F

Cmd1

Expr1

V

F

Cmd2

Expr2

V

F

Cmd1

Expr1

V

F

Fluxogramas alternativos

O else corresponde ao 2º if

O else corresponde ao 1º if

Page 10: CES-10  INTRODUÇÃO À COMPUTAÇÃO

if ( Expr1 ) if (Expr2) Cmd1 else Cmd2if ( Expr1 ) if (Expr2) Cmd1 else Cmd2

Cmd2

Expr2V F

Cmd1

Expr1

V

F

Regra desambiguificadora:

O ‘else’ deve corresponder ao último ‘if’

if ( Expr1 )if (Expr2)

Cmd1else

Cmd2

Page 11: CES-10  INTRODUÇÃO À COMPUTAÇÃO

if ( Expr1 ) if (Expr2) Cmd1 else Cmd2if ( Expr1 ) if (Expr2) Cmd1 else Cmd2

Cmd2

Expr2

V

F

Cmd1

Expr1

V

F

Para que o ‘else’ corresponda ao primeiro ‘if’:

if (Expr1) {if (Expr2)

Cmd1}else

Cmd2

Page 12: CES-10  INTRODUÇÃO À COMPUTAÇÃO

Exercícios 4.2:Exercícios 4.2:

1.1.Fazer um programa que ao ler a quantidade de Fazer um programa que ao ler a quantidade de segundos de um dia, apresente o resultado na segundos de um dia, apresente o resultado na forma hh:mm:ss. Por exemplo, para 34247s forma hh:mm:ss. Por exemplo, para 34247s deve ser impresso 09:30:47. Deve haver uma deve ser impresso 09:30:47. Deve haver uma mensagem de erro caso a quantidade de mensagem de erro caso a quantidade de segundos seja maior que aqueles segundos seja maior que aqueles correspondentes às 24 horas do dia.correspondentes às 24 horas do dia.

Page 13: CES-10  INTRODUÇÃO À COMPUTAÇÃO

Capítulo IV – Comandos Capítulo IV – Comandos de Controle de Fluxode Controle de Fluxo

4.1 – Comandos compostos4.1 – Comandos compostos

4.2 – Comandos condicionais4.2 – Comandos condicionais

4.3 – Expressões condicionais4.3 – Expressões condicionais

4.4 – Comandos repetitivos4.4 – Comandos repetitivos

4.5 – Comandos de escape4.5 – Comandos de escape

4.6 – Comandos de seleção4.6 – Comandos de seleção

4.7 – Introdução à metodologia top-4.7 – Introdução à metodologia top-down down

Page 14: CES-10  INTRODUÇÃO À COMPUTAÇÃO

4.3 – Expressões 4.3 – Expressões CondicionaisCondicionais

São São expressões especiaisexpressões especiais da Linguagem C da Linguagem C

Forma: Forma:

Expr1 ? Expr2 : Expr3Expr1 ? Expr2 : Expr3

Calcula-se Calcula-se Expr1Expr1

Se Se Expr1 ≠ 0 (True)Expr1 ≠ 0 (True), calcula-se o valor de , calcula-se o valor de Expr2Expr2, que será o valor da expressão condicional, que será o valor da expressão condicional

Se Se Expr1 = 0 (False)Expr1 = 0 (False), calcula-se o valor de , calcula-se o valor de Expr3Expr3, que será o valor da expressão condicional, que será o valor da expressão condicional

Page 15: CES-10  INTRODUÇÃO À COMPUTAÇÃO

Exemplo:Exemplo: seja o programa: seja o programa:

#include <stdio.h>#include <stdio.h>

#include <stdlib.h>#include <stdlib.h>

int main () {int main () {

int a, b, x;int a, b, x;

a = 2; b = 3;a = 2; b = 3;

x = a > b ? a + b : b - a;x = a > b ? a + b : b - a;

printf ("a = %d; b = %d; x = %d;", a, b, x);printf ("a = %d; b = %d; x = %d;", a, b, x);

printf ("\n\n"); system ("pause");printf ("\n\n"); system ("pause");

return 0;return 0;

}}Resultado:

a = 2; b = 3; x = 1;

Pressione . . .

Page 16: CES-10  INTRODUÇÃO À COMPUTAÇÃO

Alguns comandos Alguns comandos if-elseif-else simples podem ser simples podem ser substituídos por substituídos por expressões condicionaisexpressões condicionais

a = 2; b = 3;a = 2; b = 3;

a > b ? (a = 5, b = 15) : (a = 50, b = 100);a > b ? (a = 5, b = 15) : (a = 50, b = 100);

printf ("a = %d; b = %d;\n", a, b);printf ("a = %d; b = %d;\n", a, b);

a = 2; b = 3;a = 2; b = 3;

if (a > b)if (a > b)

{a = 5; b = 15;}{a = 5; b = 15;}

elseelse

{a = 50; b = 100;}{a = 50; b = 100;}

printf ("a = %d; b = %d;\n", a, b);printf ("a = %d; b = %d;\n", a, b);

Trechos equivalentes

Page 17: CES-10  INTRODUÇÃO À COMPUTAÇÃO

Exercícios 4.3:Exercícios 4.3:

1.1.Sabe-se que a operação matemática Sabe-se que a operação matemática min (x, y)min (x, y) pode ser implementada pela seguinte pode ser implementada pela seguinte expressão condicional:expressão condicional:

(x < y) ? x : y(x < y) ? x : y

De modo similar, usando somente expressões De modo similar, usando somente expressões condicionais, implementar as seguintes condicionais, implementar as seguintes operações matemáticas:operações matemáticas:

  min (x, y, z) min (x, y, z) ee max (x, y, z, w) max (x, y, z, w)

Page 18: CES-10  INTRODUÇÃO À COMPUTAÇÃO

Capítulo IV – Comandos Capítulo IV – Comandos de Controle de Fluxode Controle de Fluxo

4.1 – Comandos compostos4.1 – Comandos compostos

4.2 – Comandos condicionais4.2 – Comandos condicionais

4.3 – Expressões condicionais4.3 – Expressões condicionais

4.4 – Comandos repetitivos4.4 – Comandos repetitivos

4.5 – Comandos de escape4.5 – Comandos de escape

4.6 – Comandos de seleção4.6 – Comandos de seleção

4.7 – Introdução à metodologia top-4.7 – Introdução à metodologia top-down down

Page 19: CES-10  INTRODUÇÃO À COMPUTAÇÃO

4.4 – Comandos Repetitivos4.4 – Comandos Repetitivos

4.4.1 – Descrição sintática4.4.1 – Descrição sintática

CmdRepetitivo → CmdWhile | CmdDoWhile | CmdRepetitivo → CmdWhile | CmdDoWhile | CmdFor CmdFor

CmdWhile → CmdWhile → while (while ( Expressão Expressão ) ) Comando Comando

CmdDoWhile → CmdDoWhile → dodo Comando Comando while while (( Expressão Expressão ) ;) ;

CmdFor:CmdFor: visto mais adiante visto mais adiante

Page 20: CES-10  INTRODUÇÃO À COMPUTAÇÃO

4.4.2 – Comandos while e do-while4.4.2 – Comandos while e do-while

while ( Expressão ) Comando while ( Expressão ) Comando

do Comando while ( Expressão ) ;do Comando while ( Expressão ) ;

Comando

Expressão

V

F

Comando

Expressão

V

F

Page 21: CES-10  INTRODUÇÃO À COMPUTAÇÃO

4.4.3 – Comando for4.4.3 – Comando for

Sejam os seguintes comandos:

int n, i, soma;scanf (“%d”, &n); i = 1; soma = 0;while (i <= n) { scanf (“%d”, &num); soma += num; i++;}printf (“soma = %d”, soma) ;

Eles podem ser escritos usando-se o comando for:

scanf (“%d”, &n); for (i = 1, soma = 0; i <= n; i++) { scanf (“%d”, &num); soma += num; }

ou: for (scanf (“%d”, &n), i = 1, soma = 0; i <= n; soma += num, i++) scanf (“%d”, &num);

Page 22: CES-10  INTRODUÇÃO À COMPUTAÇÃO

4.4.3 – Comando for4.4.3 – Comando for

Sejam os seguintes comandos:

int n, i, soma;scanf (“%d”, &n); i = 1; soma = 0;while (i <= n) { scanf (“%d”, &num); soma += num; i++;}printf (“soma = %d”, soma) ;

Ou

for (scanf (“%d”, &n), i = 1, soma = 0; i <= n; scanf (“%d”, &num), soma += num, i++) ;

Ou até:

scanf (“%d”, &n); i = 1; soma = 0; for ( ; i <= n ; ) { scanf (“%d”, &num); soma += num; i++; }

Page 23: CES-10  INTRODUÇÃO À COMPUTAÇÃO

Descrição sintática do comando for:Descrição sintática do comando for:

CmdFor → for CmdFor → for (( Inicializações Inicializações ;; Expressão Expressão ;; Atualizações Atualizações ) ) Comando Comando

Inicializações Inicializações e e Atualizações:Atualizações:

Listas de zero ou mais Listas de zero ou mais CmdAtribuição’sCmdAtribuição’s,, CmdEntrada’sCmdEntrada’s, , CmdSaída’sCmdSaída’s ou ou ChamadaFunção’s ChamadaFunção’s

Separados por Separados por vírgula vírgula e não por e não por ponto e ponto e vírgulavírgula

O O CmdFor CmdFor acima equivale aacima equivale a

Inicializaçõeswhile ( Expressão ) {

ComandoAtualizações

}

Page 24: CES-10  INTRODUÇÃO À COMPUTAÇÃO

Fluxograma do comando for:Fluxograma do comando for:

for ( Inicializações ; Expressão ; for ( Inicializações ; Expressão ; Atualizações ) Comando Atualizações ) Comando

Page 25: CES-10  INTRODUÇÃO À COMPUTAÇÃO

#include <stdio.h>#include <stdio.h>

#include <stdlib.h>#include <stdlib.h>

int main () {int main () {

int a1, r, n, soma, aq, i;int a1, r, n, soma, aq, i;

printf (“PROGRESSAO ARITMETICA”);printf (“PROGRESSAO ARITMETICA”);

printf (“\n\n\tDigite o primeiro termo, o n.o de termos e a printf (“\n\n\tDigite o primeiro termo, o n.o de termos e a razao: ”);razao: ”);

scanf (“%d%d%d”, &a1, &n, &r);scanf (“%d%d%d”, &a1, &n, &r);

soma = 0; aq = a1; i = 1;soma = 0; aq = a1; i = 1;

while (i <= n) {while (i <= n) {

soma += aq; aq += r;soma += aq; aq += r;

i++;i++;

}}

printf (“\nProgressao aritmetica:\n\nPrimeiro termo: %d”, printf (“\nProgressao aritmetica:\n\nPrimeiro termo: %d”, a1);a1);

printf (“\nRazao: %d\nNumero de termos: %d”, r, n);printf (“\nRazao: %d\nNumero de termos: %d”, r, n);

printf (“\n\nSoma: %d”, soma);printf (“\n\nSoma: %d”, soma);

printf (“\n\n”); system (“pause”); return 0;printf (“\n\n”); system (“pause”); return 0;

}}

Exemplo: uso do “for” no programa da soma da PA

Seja o programa já visto com “while”

O trecho em amarelo pode usar o comando for

Page 26: CES-10  INTRODUÇÃO À COMPUTAÇÃO

#include <stdio.h>#include <stdio.h>

#include <stdlib.h>#include <stdlib.h>

int main () {int main () {

int a1, r, n, soma, aq, i;int a1, r, n, soma, aq, i;

printf ("PROGRESSAO ARITMETICA");printf ("PROGRESSAO ARITMETICA");

printf ("\n\n\tDigite o primeiro termo, o n.o de termos printf ("\n\n\tDigite o primeiro termo, o n.o de termos e a razao: ");e a razao: ");

scanf ("%d%d%d", &a1, &n, &r);scanf ("%d%d%d", &a1, &n, &r);

for (soma = 0, aq = a1, i = 1; i <= n; i++) {for (soma = 0, aq = a1, i = 1; i <= n; i++) {

soma += aq; aq += r;soma += aq; aq += r;

}}

printf ("\nProgressao aritmetica:\n\nPrimeiro termo: printf ("\nProgressao aritmetica:\n\nPrimeiro termo: %d", a1);%d", a1);

printf ("\nRazao: %d\nNumero de termos: %d", r, n);printf ("\nRazao: %d\nNumero de termos: %d", r, n);

printf ("\n\nSoma: %d", soma);printf ("\n\nSoma: %d", soma);

printf ("\n\n"); system ("pause"); return 0;printf ("\n\n"); system ("pause"); return 0;

}}

O trecho marcado ainda pode ser substituído por:for (scanf ("%d%d%d", &a1, &n, &r), soma = 0, aq = a1, i = 1; i <= n;

soma += aq, aq += r, i++); (o escopo do for ficou vazio)

Page 27: CES-10  INTRODUÇÃO À COMPUTAÇÃO

Exemplo: cálculo do MDC de vários pares de Exemplo: cálculo do MDC de vários pares de nnosos lidos lidos

Método: ilustrado com o cálculo de MDC(-Método: ilustrado com o cálculo de MDC(-48, 64)48, 64)

Para números Para números negativosnegativos, toma-se o , toma-se o módulomódulo; então; então

MDC(-48, 64) = MDC(48, 64)MDC(-48, 64) = MDC(48, 64)

a

b

a % b

48

64

48

64

48

16

48

16

0

16

0

16

Page 28: CES-10  INTRODUÇÃO À COMPUTAÇÃO

MDC(-48, 64) = MDC(48, 64)MDC(-48, 64) = MDC(48, 64)

a

b

a % b

48

64

48

64

48

16

48

16

0

0

16

a = abs(a); b = abs(b);while (b > 0) {

resto = a % b; a = b; b = resto;}printf ("MDC: %d", a);

Page 29: CES-10  INTRODUÇÃO À COMPUTAÇÃO

#include <stdio.h>#include <stdio.h>

#include <stdlib.h>#include <stdlib.h>

#include <math.h>#include <math.h>

int main () {int main () {

int a, b, resto; char c, lixo;int a, b, resto; char c, lixo;

printf ("Calculo de MDC ? (s/n): ");printf ("Calculo de MDC ? (s/n): ");

do scanf ("%c", &c); while (c != 's' && c != 'n');do scanf ("%c", &c); while (c != 's' && c != 'n');

while (c == 's') {while (c == 's') {

printf ("\n\nPar de numeros: "); scanf("%d%dprintf ("\n\nPar de numeros: "); scanf("%d%d%c",&a,&b,&lixo);%c",&a,&b,&lixo);

Calculo do MDC e sua escrita;Calculo do MDC e sua escrita; printf ("Calculo de MDC ? (s/n) ");printf ("Calculo de MDC ? (s/n) ");

do scanf ("%c", &c); while (c != 's' && c != 'n');do scanf ("%c", &c); while (c != 's' && c != 'n');

}}

printf ("\n\n"); system ("pause"); return 0;printf ("\n\n"); system ("pause"); return 0;

}}

Esqueleto para vários pares de números

Substitui-se a frase em amarelo pelo trecho já estabelecido anteriormente

Page 30: CES-10  INTRODUÇÃO À COMPUTAÇÃO

#include <stdio.h>#include <stdio.h>

#include <stdlib.h>#include <stdlib.h>

#include <math.h>#include <math.h>

int main () {int main () {

int a, b, resto; char c, lixo;int a, b, resto; char c, lixo;

printf ("Calculo de MDC ? (s/n): ");printf ("Calculo de MDC ? (s/n): ");

do scanf ("%c", &c); while (c != 's' && c != 'n');do scanf ("%c", &c); while (c != 's' && c != 'n');

while (c == 's') {while (c == 's') {

printf ("\n\nPar de numeros: "); scanf("%d%d%c",&a, printf ("\n\nPar de numeros: "); scanf("%d%d%c",&a, &b,&lixo);&b,&lixo);

a = abs(a); b = abs(b);a = abs(a); b = abs(b);

while (b > 0) {while (b > 0) {

resto = a % b; a = b; b = resto;resto = a % b; a = b; b = resto;

}}printf ("MDC: %d", a);printf ("MDC: %d", a);

printf ("Calculo de MDC ? (s/n) ");printf ("Calculo de MDC ? (s/n) ");

do scanf ("%c", &c); while (c != 's' && c != 'n');do scanf ("%c", &c); while (c != 's' && c != 'n');

}}

printf ("\n\n"); system ("pause"); return 0;printf ("\n\n"); system ("pause"); return 0;

}}

Usando a seguir o comando for

Page 31: CES-10  INTRODUÇÃO À COMPUTAÇÃO

#include <stdio.h>#include <stdio.h>

#include <stdlib.h>#include <stdlib.h>

#include <math.h>#include <math.h>

int main () {int main () {

int a, b, resto; char c, lixo;int a, b, resto; char c, lixo;

printf ("Calculo de MDC ? (s/n): ");printf ("Calculo de MDC ? (s/n): ");

do scanf ("%c", &c); while (c != 's' && c != 'n');do scanf ("%c", &c); while (c != 's' && c != 'n');

while (c == 's') {while (c == 's') {

printf ("\n\nPar de numeros: "); scanf("%d%dprintf ("\n\nPar de numeros: "); scanf("%d%d%c",&a,&b,&lixo);%c",&a,&b,&lixo);

for (a = abs(a), b = abs(b); b > 0; b = resto) for (a = abs(a), b = abs(b); b > 0; b = resto) {{

resto = a % b; a = b;resto = a % b; a = b;

} } printf ("MDC: %d", a); printf ("MDC: %d", a);

printf ("Calculo de MDC ? (s/n) ");printf ("Calculo de MDC ? (s/n) ");

do scanf ("%c", &c); while (c != 's' && c != 'n');do scanf ("%c", &c); while (c != 's' && c != 'n');

}}

printf ("\n\n"); system ("pause"); return 0;printf ("\n\n"); system ("pause"); return 0;

}}

Page 32: CES-10  INTRODUÇÃO À COMPUTAÇÃO

Exemplo: inversão dos dígitos de um nExemplo: inversão dos dígitos de um noo inteirointeiro

Método: ilustrado com a inversão do Método: ilustrado com a inversão do número 48728 para 82784número 48728 para 82784

48728 10

8 4872 10

2 487 10

7 48 10

8 4 10

4 0* 10 +

88 * 10 + 282 * 10 +

7827 * 10 + 88278 * 10 +

4 82784

0

48728numaux

inv

aux

inv

aux = num; inv = 0;while (aux != 0) { inv = 10 * inv + aux % 10; aux = aux/10;}

Page 33: CES-10  INTRODUÇÃO À COMPUTAÇÃO

#include <stdio.h>#include <stdio.h>

#include <stdlib.h>#include <stdlib.h>

int main () {int main () {

int num, aux, inv; char c, lixo;int num, aux, inv; char c, lixo;

printf ("Inverter numero? (s/n): ");printf ("Inverter numero? (s/n): ");

do scanf ("%c", &c); while (c != 's' && c != 'n');do scanf ("%c", &c); while (c != 's' && c != 'n');

while (c == 's') {while (c == 's') {

printf ("\n\n\tNumero: "); scanf("%d%c",&num,&lixo);printf ("\n\n\tNumero: "); scanf("%d%c",&num,&lixo);

Obter o inverso de num;Obter o inverso de num; printf ("\n\t%d invertido torna-se %d", num, printf ("\n\t%d invertido torna-se %d", num,

inv);inv);

printf ("\n\nInverter numero? (s/n): ");printf ("\n\nInverter numero? (s/n): ");

do scanf ("%c", &c); while (c != 's' && c != 'n');do scanf ("%c", &c); while (c != 's' && c != 'n');

}}

printf ("\n\n"); system ("pause"); return 0;printf ("\n\n"); system ("pause"); return 0;

}}

Esqueleto para vários números

Substitui-se a frase em amarelo pelo trecho já estabelecido anteriormente

Page 34: CES-10  INTRODUÇÃO À COMPUTAÇÃO

#include <stdio.h>#include <stdio.h>

#include <stdlib.h>#include <stdlib.h>

int main () {int main () {

int num, aux, inv; char c, lixo;int num, aux, inv; char c, lixo;

printf ("Inverter numero? (s/n): ");printf ("Inverter numero? (s/n): ");

do scanf ("%c", &c); while (c != 's' && c != 'n');do scanf ("%c", &c); while (c != 's' && c != 'n');

while (c == 's') {while (c == 's') {

printf ("\n\n\tNumero: "); scanf("%d%c",&num,&lixo);printf ("\n\n\tNumero: "); scanf("%d%c",&num,&lixo);

aux = num; inv = 0;aux = num; inv = 0;

while (aux != 0) {while (aux != 0) {

inv = 10 * inv + aux % 10; aux = inv = 10 * inv + aux % 10; aux = aux/10;aux/10;

}}

printf ("\n\t%d invertido torna-se %d", num, inv);printf ("\n\t%d invertido torna-se %d", num, inv);

printf ("\n\nInverter numero? (s/n): ");printf ("\n\nInverter numero? (s/n): ");

do scanf ("%c", &c); while (c != 's' && c != 'n');do scanf ("%c", &c); while (c != 's' && c != 'n');

}}

printf ("\n\n"); system ("pause"); return 0;printf ("\n\n"); system ("pause"); return 0;

}}

Usando a seguir o comando for

Page 35: CES-10  INTRODUÇÃO À COMPUTAÇÃO

#include <stdio.h>#include <stdio.h>

#include <stdlib.h>#include <stdlib.h>

int main () {int main () {

int num, aux, inv; char c, lixo;int num, aux, inv; char c, lixo;

printf ("Inverter numero? (s/n): ");printf ("Inverter numero? (s/n): ");

do scanf ("%c", &c); while (c != 's' && c != 'n');do scanf ("%c", &c); while (c != 's' && c != 'n');

while (c == 's') {while (c == 's') {

printf ("\n\n\tNumero: "); scanf("%d%c",&num,&lixo);printf ("\n\n\tNumero: "); scanf("%d%c",&num,&lixo);

for (aux = num, inv = 0; aux != 0; aux = for (aux = num, inv = 0; aux != 0; aux = aux/10)aux/10)

inv = 10 * inv + aux % 10;inv = 10 * inv + aux % 10;

printf ("\n\t%d invertido torna-se %d", num, inv);printf ("\n\t%d invertido torna-se %d", num, inv);

printf ("\n\nInverter numero? (s/n): ");printf ("\n\nInverter numero? (s/n): ");

do scanf ("%c", &c); while (c != 's' && c != 'n');do scanf ("%c", &c); while (c != 's' && c != 'n');

}}

printf ("\n\n"); system ("pause"); return 0;printf ("\n\n"); system ("pause"); return 0;

}}

Page 36: CES-10  INTRODUÇÃO À COMPUTAÇÃO

Exercícios 4.4:Exercícios 4.4:

1.1. Considerando o programa da figura do próximo slide:Considerando o programa da figura do próximo slide:

a)a) Determinar qual será a sua saída, se a entrada for Determinar qual será a sua saída, se a entrada for 13251325

b)b)Trocar o comando Trocar o comando “for” “for” desse programa por um desse programa por um trecho equivalente contendo um comando trecho equivalente contendo um comando ““whilewhile”, ”, sem alterar a funcionalidade do programa sem alterar a funcionalidade do programa

c)c) Trocar o comando Trocar o comando “do-while” “do-while” desse programa por um desse programa por um trecho equivalente contendo um comando trecho equivalente contendo um comando “while”“while”, , sem alterar a funcionalidade do programasem alterar a funcionalidade do programa

Page 37: CES-10  INTRODUÇÃO À COMPUTAÇÃO

#include <stdio>int main () {

long a, b, c, d, e, f, g;scanf("%d", &a);b = 0; g = 0;do {

f = a / 10; e = a;for (c=0, d=0; d<10; d=d+1, e=e-f) {c

= c + b;}b = e + c; a = f; g = g + e;printf("%d\t%d\n", e, g);

} while (a != 0);printf("%d\n", b);printf ("\n\n"); system ("pause"); return 0;

}

Page 38: CES-10  INTRODUÇÃO À COMPUTAÇÃO

2.2. Seja a equação Seja a equação AxAx + + ByBy + + CzCz + + DD = 0, onde = 0, onde AA, , BB, , CC e e DD são números inteiros. são números inteiros.

Fazer um programa para encontrar todas as soluções Fazer um programa para encontrar todas as soluções inteiras [inteiras [xx, , yy, , zz] dessa equação, que obedecem às ] dessa equação, que obedecem às restrições 0 restrições 0 xx nn, 0 , 0 yy nn e 0 e 0 zz nn, onde , onde nn é é inteiro e inteiro e nn > 0. > 0.

O programa deve ter um aninhamento de menor O programa deve ter um aninhamento de menor número possível de comandos repetitivos. número possível de comandos repetitivos.

Os valores de Os valores de AA, , BB, , CC, , DD e de e de nn devem ser digitados devem ser digitados durante a execução.durante a execução.

3.3. PalíndromoPalíndromo é um número tal que, invertendo-se a é um número tal que, invertendo-se a ordem de seus dígitos, o número obtido é igual ao ordem de seus dígitos, o número obtido é igual ao original. Escrever umoriginal. Escrever um programa para ler vários programa para ler vários números inteiros e verificar se cada um é palíndromonúmeros inteiros e verificar se cada um é palíndromo

Page 39: CES-10  INTRODUÇÃO À COMPUTAÇÃO

4.4. Escrever um programa para ler vários números Escrever um programa para ler vários números inteiros e dizer se cada um é primointeiros e dizer se cada um é primo

5.5. Escrever um programa em C para ler um número Escrever um programa em C para ler um número inteiro, positivo e guardá-lo na variável inteiro, positivo e guardá-lo na variável n n e depois, e depois, calcular e imprimir o valor do seguinte somatório:calcular e imprimir o valor do seguinte somatório:

6.6. Fazer um programa para calcular o seno e o cosseno Fazer um programa para calcular o seno e o cosseno de vários ângulos dados em graus, usando séries de de vários ângulos dados em graus, usando séries de MacLaurin. Quando um ângulo MacLaurin. Quando um ângulo é dado em radianos as é dado em radianos as Séries de MacLaurin são:Séries de MacLaurin são:

Page 40: CES-10  INTRODUÇÃO À COMPUTAÇÃO

7.7. Um distribuidor de brinquedos fez um acordo de compra de Um distribuidor de brinquedos fez um acordo de compra de vários brinquedos pequenos, embalados em caixas de vários brinquedos pequenos, embalados em caixas de formato de paralelepípedo de tamanhos variados. Ele formato de paralelepípedo de tamanhos variados. Ele pretende colocar essas caixas em embalagens esféricas de pretende colocar essas caixas em embalagens esféricas de plástico, coloridas, e revendê-las como pacotes surpresa. As plástico, coloridas, e revendê-las como pacotes surpresa. As esferas são fornecidas em 4 diâmetros internos diferentes: esferas são fornecidas em 4 diâmetros internos diferentes: 10, 15, 20 e 25 centímetros. Para pedir as esferas, ele precisa 10, 15, 20 e 25 centímetros. Para pedir as esferas, ele precisa saber quantas de cada diâmetro ele necessita. Para saber quantas de cada diâmetro ele necessita. Para dimensioná-las, ele precisa determinar a maior medida de dimensioná-las, ele precisa determinar a maior medida de cada caixa, que é a sua diagonal, usando as dimensões de cada caixa, que é a sua diagonal, usando as dimensões de cada caixa (comprimento, largura e altura).cada caixa (comprimento, largura e altura).

Fazer um programa para ler o número de brinquedos e as Fazer um programa para ler o número de brinquedos e as dimensões de cada caixa, determinar e imprimir o número de dimensões de cada caixa, determinar e imprimir o número de esferas de cada tamanho necessárias para embalar as caixas esferas de cada tamanho necessárias para embalar as caixas de brinquedos, bem como o número de caixas que não cabem de brinquedos, bem como o número de caixas que não cabem na esfera de maior dimensão.na esfera de maior dimensão.

Observação:Observação: uma caixa que cabe numa esfera de tamanho uma caixa que cabe numa esfera de tamanho xx não deve ser guardada numa esfera de tamanho não deve ser guardada numa esfera de tamanho yy, sendo , sendo y>xy>x, sendo , sendo xx e e yy dois dos 4 tamanhos especificados. dois dos 4 tamanhos especificados.

Page 41: CES-10  INTRODUÇÃO À COMPUTAÇÃO

Capítulo IV – Comandos Capítulo IV – Comandos de Controle de Fluxode Controle de Fluxo

4.1 – Comandos compostos4.1 – Comandos compostos

4.2 – Comandos condicionais4.2 – Comandos condicionais

4.3 – Expressões condicionais4.3 – Expressões condicionais

4.4 – Comandos repetitivos4.4 – Comandos repetitivos

4.5 – Comandos de escape4.5 – Comandos de escape

4.6 – Comandos de seleção4.6 – Comandos de seleção

4.7 – Introdução à metodologia top-4.7 – Introdução à metodologia top-down down

Page 42: CES-10  INTRODUÇÃO À COMPUTAÇÃO

4.5 – Comandos de Escape4.5 – Comandos de Escape

4.5.1 – Descrição sintática4.5.1 – Descrição sintática

CmdEscape → CmdGoto | CmdBreak | CmdEscape → CmdGoto | CmdBreak | CmdContinueCmdContinue

CmdGoto → CmdGoto → gotogoto Rótulo ; Rótulo ;

CmdBreak → CmdBreak → break ;break ;

CmdContinue → CmdContinue → continue ;continue ;

Page 43: CES-10  INTRODUÇÃO À COMPUTAÇÃO

4.5.2 – Comando goto4.5.2 – Comando goto

É um É um desvio incondicionaldesvio incondicional para um comando para um comando rotuladorotulado

Exemplo:Exemplo:i = 0; scanf (“%d”, &n);Rot1: n--;

if (i > n)goto Rot2;

else {i++;goto Rot 1;

}Rot 2: printf (“i = %d; n = %d;”, i, n);

Quando usado sem critério, o comando goto desestrutura muito os programas

Rótulos e goto não serão usados em CES-10

goto Rótulo ;

Page 44: CES-10  INTRODUÇÃO À COMPUTAÇÃO

4.5.3 – Comando break4.5.3 – Comando break

É uma É uma saída anormalsaída anormal de um de um comando comando repetitivorepetitivo ou de ou de seleçãoseleção mais interno mais interno

Exemplo:Exemplo:

O comando break só será usado em CES-10 para cooperar na boa estruturação dos comando de seleção (switch-case – Tópico 4.6)

break ;

Page 45: CES-10  INTRODUÇÃO À COMPUTAÇÃO

4.5.4 – Comando continue4.5.4 – Comando continue

Encerra a Encerra a repetição correnterepetição corrente e inicia a e inicia a repetição seguinterepetição seguinte

Exemplo: trechos equivalentes:Exemplo: trechos equivalentes:

O comando continue não será usado em CES-10

continue ;

for (Expr1; Expr2; Expr3) {

Comandos 1if ( ...... )

continue;Comandos 2

}

Expr1;while (Expr2) {

Comandos 1if ( ...... ) goto

next;Comandos 2

next: Expr3;}

Page 46: CES-10  INTRODUÇÃO À COMPUTAÇÃO

Exercícios 4.5:Exercícios 4.5:

1.1. Reescrever os dois trechos de programa a seguir, Reescrever os dois trechos de programa a seguir, eliminando e evitando o uso dos comandos eliminando e evitando o uso dos comandos breakbreak, , continuecontinue e e gotogoto::

scanf (“%c%c”, &c, &lixo); cont = contdig = 0;scanf (“%c%c”, &c, &lixo); cont = contdig = 0;

whilewhile (c) { (c) {

ifif (c == ‘E’) (c == ‘E’) breakbreak;;

cont++;cont++; ifif (c >= ‘0’ && c <= ‘9’) contdig++; (c >= ‘0’ && c <= ‘9’) contdig++;

scanf (“%c%c”, &c, &lixo);scanf (“%c%c”, &c, &lixo);

}}

i = -5; n = 50;i = -5; n = 50;

while while (i < n) { (i < n) {

i++;i++;

ifif (i == 0) (i == 0) continuecontinue;;

total += i; printf (“i = %d; total = %d\n”, i, total);total += i; printf (“i = %d; total = %d\n”, i, total);

}}