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

Slides:



Advertisements
Apresentações semelhantes
INTRODUÇÃO A COMPUTAÇÃO ENG. CIVIL
Advertisements

CES-10 INTRODUÇÃO À COMPUTAÇÃO
Capítulo II – Algoritmos e Programas
Estruturas de Repetição
Recursividade Função recursiva é aquela que chama a si própria.
Linguagem de Programação VI Tipos de Dados Compostos - structs
Listas duplamente encadeadas
Pearson Education Slide 1. Pearson Education Slide 2 Capítulo 2 Criado por Frederick H. Colclough, Colorado Technical University Fluxo de Controle.
Introdução à Computação - Jorge Macêdo
Introdução à Programação
Algoritmos e Programação Estruturada Conceitos básicos
Prof. Luis Otavio Alvares
Linguagem C Estruturas de Controle de Fluxos
Linguagem C LPG-I – Estruturas de Repetição Prof. Flavio Marcello
UDESC - Prof. Juliano Maia1 Funções. UDESC - Prof. Juliano Maia2 Índice Seção 1 – Funções em C Seção 2 – Iniciação Ponteiros Seção 3 – Recursão.
LINGUAGEM ESTRUTURADA TURBO C
Introdução à Programação Um enfoque orientado a construção de modelos em programas baseados em objetos Gustavo Motta Departamento de Informática - UFPB.
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013 Capítulo II Confecção de Tabelas.
LINGUAGEM C Centro Federal de Educação Tecnológica da Paraíba Coordenação de Informática Professor: Lafayette B. Melo.
Laboratório de Programação de Computadores II 2S/2009.
Cronograma de SCII - 2o. Ano de STPD - Profs. Fátima e Paulo
Linguagem C Funções.
Vetores, Matrizes e Funções
Estruturas de Dados Homogêneas Unidimensionais – Vetores e Strings
Armazenamento de Dados em Arquivos
Estruturas de Dados Homogêneas Multidimensionais – Matrizes
Matrizes e Funções - Continuação
Slides: Prof. João Fabro UTFPR - Curitiba
Estruturas de Decisão Permitir testes para decidir acções alternativas: if if - else switch (?:) Operador Condicional MF.
Revisão da Linguagem C.
O Portal do Estudante de Computação
Introdução a Computação e Cálculo Numérico
Prof. Natalia Castro Fernandes Engenharia de Telecomunicações – UFF 2º semestre/2012.
PROGRAMAÇÃO ESTRUTURADA II
Linguagem de Programação II Parte IV
© 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C (continuação)
UNIDADE 6 - complemento Funções recursivas
Programação II Estruturas de Dados Aula 02 - continuação
Estruturas de Dados Módulo 3 – Controle de Fluxo
Semana 03 Comandos de desvio de fluxo. Expressões lógicas.
Linguagem de programação
Aula 6 - Estruturas de Controle
Algoritmo e Programação
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2014
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2014
APRENDER A APRENDER deve ser nossa meta. Comandos de Controle de Programa Comandos de Seleção Prof. Me. Jeime Nunes.
PROGRAMAÇÃO ou LINGUAGEM C?
Introdução à Linguagem C
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.
DESENVOLVIMENTO WEB II Estruturas de Decisão – IF..ELSE.
Aula prática 2 Operadores e Expressões Comandos de Decisão Comentários
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2014 Capítulo VII Variáveis Indexadas Numéricas.
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013
Capítulo VI – Variáveis Indexadas 6.1 – A necessidade de variáveis indexadas 6.2 – Vetores e matrizes 6.3 – Aplicações com vetores numéricos 6.4 – Aplicações.
Prof. Alessandro Gonçalves
PCI- Estrutura Condicional Profa. Mercedes Gonzales Márquez.
Revisão Luis Antonio Tavares
Comando de Seleção switch
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2014 Capítulo III Comandos de Controle.
Algoritmos e Estrutura de Dados I
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2014 Capítulo IX Subprogramação e Recursividade.
Laboratório I Mateus Raeder. Mateus Raeder – abril de 2010 Expressões booleanas  Tipo boolean -Tipo de dado primitivo -Possui os valores: true e false.
Profa. Maria Augusta Constante Puget
ALGORITMOS Profº Antonio Carlos Marcelino de Paula 1.
Fundamentos de Programação 1 Aula N. 02 Prof. SIMÃO Jean Marcelo SIMÃO Linguagem C “Laços de Repetição em C”
1Unidade 04 – Estruturas de Repetição Algoritmos e Linguagens de Programação Estruturas de Repetição Prof.: Guilherme Baião S. Silva
1 CCO 016 FUNDAMENTOS DE PROGRAMAÇÃO Universidade Federal de Itajubá Prof. Dr. Edison Oliveira de Jesus.
IFRN Técnico em Informática para Internet Estruturas Condicionais Prof. Gilbert Azevedo.
Prof. Tertuliano Estrutura Condicional em C++. Sumário „ Estrutura Condicional Simples „ Estrutura Condicional Composta „ Estrutura Condicional Simples.
Transcrição da apresentação:

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 4.6 – Comandos de seleção 4.7 – Introdução à metodologia top-down

4.1 – Comandos Compostos – Definição Comando composto: sequência linear de comandos delimitada por abre e fecha-chaves (‘{’ e ‘}’) Comando composto: sequência linear de comandos delimitada por abre e fecha-chaves (‘{’ e ‘}’) Muitas vezes o escopo de um comando condicional ou repetitivo é um comando composto Muitas vezes o escopo de um comando condicional ou repetitivo é um comando composto

4.1.2 – Descrições sintáticas informais de comandos tradicionais CmdComposto → { Comando Comando... Comando } CmdComposto → { Comando Comando... Comando } Comando → CmdComposto | CmdCondicional | CmdRepetitivo | CmdSeleção | CmdAtribuição | CmdEntrada | CmdSaída | CmdEscape | ChamadaFunção | CmdReturn | CmdVazio Comando → CmdComposto | CmdCondicional | CmdRepetitivo | CmdSeleção | CmdAtribuição | CmdEntrada | CmdSaída | CmdEscape | ChamadaFunção | CmdReturn | CmdVazio CmdAtribuição → Variável = Expressão ; CmdAtribuição → Variável = Expressão ; CmdVazio → ; CmdVazio → ; As descrições de CmdCondicional, CmdRepetivo e outros serão vistas oportunamente

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 4.6 – Comandos de seleção 4.7 – Introdução à metodologia top-down

4.2 – Comandos Condicionais – Descrição sintática CmdCondicional → if ( Expressão ) Comando | CmdCondicional → if ( Expressão ) Comando | if ( Expressão ) Comando else Comando

4.2.2 – Fluxogramas if ( Expressão ) Comando if ( Expressão ) Comando else Comando Comando Expressão VF Comando Expressão V F Comandos

4.2.3 – Ambiguidade O seguinte esqueleto tem dupla interpretação: O seguinte esqueleto tem dupla interpretação: if ( Expr1 ) if (Expr2) Comando else Comando A qual dos dois if’s corresponde o else?

if ( Expr1 ) if (Expr2) Cmd1 else Cmd2 Cmd2 Expr2 VF 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

if ( Expr1 ) if (Expr2) Cmd1 else Cmd2 Cmd2 Expr2 VF Cmd1 Expr1 V F Regra desambiguificadora: O ‘else’ deve corresponder ao último ‘if’ if ( Expr1 ) if (Expr2) Cmd1 else Cmd2

if ( 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

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

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 4.6 – Comandos de seleção 4.7 – Introdução à metodologia top-down

4.3 – Expressões Condicionais São expressões especiais da Linguagem C São expressões especiais da Linguagem C Forma: Forma: Expr1 ? Expr2 : Expr3 Calcula-se Expr1 Calcula-se Expr1 Se Expr1 ≠ 0 (True), calcula-se o valor de Expr2, que será o valor da expressão condicional Se Expr1 ≠ 0 (True), calcula-se o valor de Expr2, que será o valor da expressão condicional Se Expr1 = 0 (False), calcula-se o valor de Expr3, que será o valor da expressão condicional Se Expr1 = 0 (False), calcula-se o valor de Expr3, que será o valor da expressão condicional

Exemplo: seja o programa: #include #include int main () { int a, b, x; a = 2; b = 3; x = a > b ? a + b : b - a; printf ("a = %d; b = %d; x = %d;", a, b, x); printf ("\n\n"); system ("pause"); printf ("\n\n"); system ("pause"); return 0; } Resultado: a = 2; b = 3; x = 1; Pressione...

Alguns comandos if-else simples podem ser substituídos por expressões condicionais Alguns comandos if-else simples podem ser substituídos por expressões condicionais a = 2; b = 3; a > b ? (a = 5, b = 15) : (a = 50, b = 100); printf ("a = %d; b = %d;\n", a, b); a = 2; b = 3; if (a > b) {a = 5; b = 15;} else {a = 50; b = 100;} printf ("a = %d; b = %d;\n", a, b); Trechos equivalentes

Exercícios 4.3: 1.Sabe-se que a operação matemática min (x, y) pode ser implementada pela seguinte expressão condicional: (x < y) ? x : y De modo similar, usando somente expressões condicionais, implementar as seguintes operações matemáticas: min (x, y, z) e max (x, y, z, w) min (x, y, z) e max (x, y, z, w)

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 4.6 – Comandos de seleção 4.7 – Introdução à metodologia top-down

4.4 – Comandos Repetitivos – Descrição sintática CmdRepetitivo → CmdWhile | CmdDoWhile | CmdFor CmdRepetitivo → CmdWhile | CmdDoWhile | CmdFor CmdWhile → while ( Expressão ) Comando CmdWhile → while ( Expressão ) Comando CmdDoWhile → do Comando while ( Expressão ) ; CmdDoWhile → do Comando while ( Expressão ) ; CmdFor: visto mais adiante CmdFor: visto mais adiante

4.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

4.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);

4.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++; }

Descrição sintática do comando for: CmdFor → for ( Inicializações ; Expressão ; Atualizações ) Comando CmdFor → for ( Inicializações ; Expressão ; Atualizações ) Comando Inicializações e Atualizações: Inicializações e Atualizações:  Listas de zero ou mais CmdAtribuição’s, CmdEntrada’s, CmdSaída’s ou ChamadaFunção’s  Separados por vírgula e não por ponto e vírgula O CmdFor acima equivale a O CmdFor acima equivale a Inicializações while ( Expressão ) { Comando Atualizações }

Fluxograma do comando for: for ( Inicializações ; Expressão ; Atualizações ) Comando for ( Inicializações ; Expressão ; Atualizações ) Comando

#include #include int main () { int a1, r, n, soma, aq, i; printf (“PROGRESSAO ARITMETICA”); printf (“\n\n\tDigite o primeiro termo, o n.o de termos e a razao: ”); scanf (“%d%d%d”, &a1, &n, &r); soma = 0; aq = a1; i = 1; while (i <= n) { soma += aq; aq += r; i++;} printf (“\nProgressao aritmetica:\n\nPrimeiro termo: %d”, a1); printf (“\nRazao: %d\nNumero de termos: %d”, r, n); printf (“\n\nSoma: %d”, soma); 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

#include #include int main () { int a1, r, n, soma, aq, i; printf ("PROGRESSAO ARITMETICA"); printf ("\n\n\tDigite o primeiro termo, o n.o de termos e a razao: "); scanf ("%d%d%d", &a1, &n, &r); for (soma = 0, aq = a1, i = 1; i <= n; i++) { soma += aq; aq += r; } printf ("\nProgressao aritmetica:\n\nPrimeiro termo: %d", a1); printf ("\nRazao: %d\nNumero de termos: %d", r, n); printf ("\n\nSoma: %d", soma); 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)

Exemplo: cálculo do MDC de vários pares de n os lidos Método: ilustrado com o cálculo de MDC(-48, 64) Método: ilustrado com o cálculo de MDC(-48, 64) Para números negativos, toma-se o módulo; então MDC(-48, 64) = MDC(48, 64) a b a % b

MDC(-48, 64) = MDC(48, 64) a b a % b a = abs(a); b = abs(b); while (b > 0) { resto = a % b; a = b; b = resto; } printf ("MDC: %d", a);

#include #include int main () { 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') { printf ("\n\nPar de numeros: "); scanf("%d%d%c",&a,&b,&lixo); printf ("\n\nPar de numeros: "); scanf("%d%d%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; } Esqueleto para vários pares de números Substitui-se a frase em amarelo pelo trecho já estabelecido anteriormente

#include #include int main () { 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') { printf ("\n\nPar de numeros: "); scanf("%d%d%c",&a, &b,&lixo); printf ("\n\nPar de numeros: "); scanf("%d%d%c",&a, &b,&lixo); a = abs(a); b = abs(b); while (b > 0) { resto = a % b; a = b; b = resto; } printf ("MDC: %d", a); 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; } Usando a seguir o comando for

#include #include int main () { 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') { printf ("\n\nPar de numeros: "); scanf("%d%d%c",&a,&b,&lixo); printf ("\n\nPar de numeros: "); scanf("%d%d%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 ("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; }

Exemplo: inversão dos dígitos de um n o inteiro Método: ilustrado com a inversão do número para Método: ilustrado com a inversão do número para     * * * * * num aux inv aux inv aux = num; inv = 0; while (aux != 0) { inv = 10 * inv + aux % 10; aux = aux/10; }

#include #include int main () { 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') { 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, 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; } Esqueleto para vários números Substitui-se a frase em amarelo pelo trecho já estabelecido anteriormente

#include #include int main () { 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') { printf ("\n\n\tNumero: "); scanf("%d%c",&num,&lixo); printf ("\n\n\tNumero: "); scanf("%d%c",&num,&lixo); aux = num; inv = 0; while (aux != 0) { inv = 10 * inv + aux % 10; aux = aux/10; inv = 10 * inv + aux % 10; aux = aux/10;} 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; } Usando a seguir o comando for

#include #include int main () { 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') { 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 = aux/10) for (aux = num, inv = 0; aux != 0; aux = aux/10) inv = 10 * inv + aux % 10; inv = 10 * inv + aux % 10; 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; }

Exercícios 4.4: 1.Considerando o programa da figura do próximo slide: a)Determinar qual será a sua saída, se a entrada for 1325 b)Trocar o comando “for” desse programa por um trecho equivalente contendo um comando “while”, sem alterar a funcionalidade do programa c)Trocar o comando “do-while” desse programa por um trecho equivalente contendo um comando “while”, sem alterar a funcionalidade do programa

#include 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; }

2.Seja a equação Ax + By + Cz + D = 0, onde A, B, C e D são números inteiros. Fazer um programa para encontrar todas as soluções inteiras [x, y, z] dessa equação, que obedecem às restrições 0  x  n, 0  y  n e 0  z  n, onde n é inteiro e n > 0. O programa deve ter um aninhamento de menor número possível de comandos repetitivos. Os valores de A, B, C, D e de n devem ser digitados durante a execução. 3.Palíndromo é um número tal que, invertendo-se a ordem de seus dígitos, o número obtido é igual ao original. Escrever um programa para ler vários números inteiros e verificar se cada um é palíndromo

4.Escrever um programa para ler vários números inteiros e dizer se cada um é primo 5.Escrever um programa em C para ler um número inteiro, positivo e guardá-lo na variável n e depois, calcular e imprimir o valor do seguinte somatório: 6.Fazer um programa para calcular o seno e o cosseno de vários ângulos dados em graus, usando séries de MacLaurin. Quando um ângulo é dado em radianos as Séries de MacLaurin são:

7.Um distribuidor de brinquedos fez um acordo de compra de vários brinquedos pequenos, embalados em caixas de formato de paralelepípedo de tamanhos variados. Ele pretende colocar essas caixas em embalagens esféricas de plástico, coloridas, e revendê-las como pacotes surpresa. As esferas são fornecidas em 4 diâmetros internos diferentes: 10, 15, 20 e 25 centímetros. Para pedir as esferas, ele precisa saber quantas de cada diâmetro ele necessita. Para dimensioná-las, ele precisa determinar a maior medida de cada caixa, que é a sua diagonal, usando as dimensões de cada caixa (comprimento, largura e altura). Fazer um programa para ler o número de brinquedos e as dimensões de cada caixa, determinar e imprimir o número de esferas de cada tamanho necessárias para embalar as caixas de brinquedos, bem como o número de caixas que não cabem na esfera de maior dimensão. Observação: uma caixa que cabe numa esfera de tamanho x não deve ser guardada numa esfera de tamanho y, sendo y>x, sendo x e y dois dos 4 tamanhos especificados.

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 4.6 – Comandos de seleção 4.7 – Introdução à metodologia top-down

4.5 – Comandos de Escape – Descrição sintática CmdEscape → CmdGoto | CmdBreak | CmdContinue CmdEscape → CmdGoto | CmdBreak | CmdContinue CmdGoto → goto Rótulo ; CmdGoto → goto Rótulo ; CmdBreak → break ; CmdBreak → break ; CmdContinue → continue ; CmdContinue → continue ;

4.5.2 – Comando goto É um desvio incondicional para um comando rotulado É um desvio incondicional para um comando rotulado 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 ;

4.5.3 – Comando break É uma saída anormal de um comando repetitivo ou de seleção mais interno É uma saída anormal de um comando repetitivo ou de seleção 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 ;

4.5.4 – Comando continue Encerra a repetição corrente e inicia a repetição seguinte Encerra a repetição corrente e inicia a repetição seguinte Exemplo: trechos equivalentes: Exemplo: trechos equivalentes: O comando continue não será usado em CES-10 continue ; for (Expr1; Expr2; Expr3) { Comandos 1 if ( ) continue; Comandos 2 } Expr1; while (Expr2) { Comandos 1 if ( ) goto next; Comandos 2 next:Expr3; }

Exercícios 4.5: 1.Reescrever os dois trechos de programa a seguir, eliminando e evitando o uso dos comandos break, continue e goto: scanf (“%c%c”, &c, &lixo); cont = contdig = 0; while (c) { if (c == ‘E’) break; if (c == ‘E’) break; cont++; if (c >= ‘0’ && c = ‘0’ && c <= ‘9’) contdig++; scanf (“%c%c”, &c, &lixo); scanf (“%c%c”, &c, &lixo);} i = -5; n = 50; while (i < n) { i++; i++; if (i == 0) continue; if (i == 0) continue; total += i; printf (“i = %d; total = %d\n”, i, total); total += i; printf (“i = %d; total = %d\n”, i, total);}