Você está na página 1de 26

Simula¸c˜ao de c´odigo Decis˜ao simples e decis˜ao m´ultipla O comando switch

Roteiro

1
1

Simula¸c˜ao de c´odigo

2
2

Decis˜ao simples e decis˜ao m´ultipla

3
3

O comando switch

de c´odigo 2 Decis˜ao simples e decis˜ao m´ultipla 3 O comando switch MC-102 — Aula 06

MC-102 — Aula 06

Simula¸c˜ao de c´odigo Decis˜ao simples e decis˜ao m´ultipla O comando switch

Introdu¸c˜ao

`

As vezes, acontece de programarmos um c´odigo, por´em ele n˜ao faz o que esper´avamos que fizesse.e decis˜ao m´ultipla O comando switch Introdu¸c˜ao ` Isso acontece por v´arios motivos, entre os quais

Isso acontece por v´arios motivos, entre os quais destacam-se:por´em ele n˜ao faz o que esper´avamos que fizesse. Erros de programa¸c˜ao: instru¸c˜oes escritas erradas.

Erros de programa¸c˜ao: instru¸c˜oes escritas erradas.acontece por v´arios motivos, entre os quais destacam-se: Erros da nossa l´ogica: o conjunto de passos

Erros da nossa l´ogica: o conjunto de passos pensados que parecia resolver o problema na realidade n˜ao cobre todas as situa¸c˜oes.Erros de programa¸c˜ao: instru¸c˜oes escritas erradas. Eventualmente, simplesmente olhar o c´odigo pode n˜ao

Eventualmente, simplesmente olhar o c´odigo pode n˜ao trazer a tona o erro.o problema na realidade n˜ao cobre todas as situa¸c˜oes. Por isso, utiliza-se uma t´ecnica de simula¸c˜ao

Por isso, utiliza-se uma t´ecnica de simula¸c˜ao do c´odigoolhar o c´odigo pode n˜ao trazer a tona o erro. Pode ser automatizada (utilizando um debugger

Pode ser automatizada (utilizando um debugger ) debugger )

Pode ser feita manualmente, utilizando papel e caneta.utiliza-se uma t´ecnica de simula¸c˜ao do c´odigo Pode ser automatizada (utilizando um debugger ) MC-102 —

ser automatizada (utilizando um debugger ) Pode ser feita manualmente, utilizando papel e caneta. MC-102 —

MC-102 — Aula 06

Simula¸c˜ao de c´odigo Decis˜ao simples e decis˜ao m´ultipla O comando switch

Simula¸c˜ao Manual

Bem simples: Existem apenas 2 passos.decis˜ao m´ultipla O comando switch Simula¸c˜ao Manual “Aloca¸c˜ao” dos espa¸cos de vari´aveis

“Aloca¸c˜ao” dos espa¸cos de vari´aveisSimula¸c˜ao Manual Bem simples: Existem apenas 2 passos. “Execu¸c˜ao” de uma instru¸c˜ao de cada vez.

“Execu¸c˜ao” de uma instru¸c˜ao de cada vez.2 passos. “Aloca¸c˜ao” dos espa¸cos de vari´aveis Aloca¸c˜ao de mem´oria: Ex. Suponha o c´odigo: 1. int

Aloca¸c˜ao de mem´oria:“Execu¸c˜ao” de uma instru¸c˜ao de cada vez. Ex. Suponha o c´odigo: 1. int divisor,dividendo; 2. float

Ex. Suponha o c´odigo:de uma instru¸c˜ao de cada vez. Aloca¸c˜ao de mem´oria: 1. int divisor,dividendo; 2. float resultado; Ap´os

1. int divisor,dividendo;

2. float resultado;

Ap´os “executar” a linha 1o c´odigo: 1. int divisor,dividendo; 2. float resultado; Tipo int int Nome divisor dividendo

Tipo

int

int

Nome

divisor

dividendo

Valor

?

?

Ap´os “executar” a linha 1 Tipo int int Nome divisor dividendo Valor ? ? MC-102 —

MC-102 — Aula 06

Simula¸c˜ao de c´odigo Decis˜ao simples e decis˜ao m´ultipla O comando switch

Simula¸c˜ao Manual

Bem simples: Existem apenas 2 passos.decis˜ao m´ultipla O comando switch Simula¸c˜ao Manual “Aloca¸c˜ao” dos espa¸cos de vari´aveis

“Aloca¸c˜ao” dos espa¸cos de vari´aveisSimula¸c˜ao Manual Bem simples: Existem apenas 2 passos. “Execu¸c˜ao” de uma instru¸c˜ao de cada vez.

“Execu¸c˜ao” de uma instru¸c˜ao de cada vez.2 passos. “Aloca¸c˜ao” dos espa¸cos de vari´aveis Aloca¸c˜ao de mem´oria: Ex. Suponha o c´odigo: 1. int

Aloca¸c˜ao de mem´oria:“Execu¸c˜ao” de uma instru¸c˜ao de cada vez. Ex. Suponha o c´odigo: 1. int divisor,dividendo; 2. float

Ex. Suponha o c´odigo:de uma instru¸c˜ao de cada vez. Aloca¸c˜ao de mem´oria: 1. int divisor,dividendo; 2. float resultado; Ap´os

1. int divisor,dividendo;

2. float resultado;

Ap´os “executar” a linha 2o c´odigo: 1. int divisor,dividendo; 2. float resultado; Tipo int int float Nome divisor dividendo

Tipo

int

int

float

Nome

divisor

dividendo

resultado

Valor

?

?

?

2 Tipo int int float Nome divisor dividendo resultado Valor ? ? ? MC-102 — Aula

MC-102 — Aula 06

Simula¸c˜ao de c´odigo Decis˜ao simples e decis˜ao m´ultipla O comando switch

Simula¸c˜ao Manual

Execu¸c˜ao em mem´oria:decis˜ao m´ultipla O comando switch Simula¸c˜ao Manual Ex. Suponha o c´odigo: 1. int divisor,dividendo; ´ 2.

switch Simula¸c˜ao Manual Execu¸c˜ao em mem´oria: Ex. Suponha o c´odigo: 1. int divisor,dividendo; ´ 2.

Ex. Suponha o c´odigo:

1. int divisor,dividendo;

´

2. float resultado; Ultimo executado

3. divisor=10; Pr´oximo Comando

4. dividendo=13;

5. resultado = dividendo / divisor;

Ap´os “executar” a linha 24. dividendo=13; 5. resultado = dividendo / divisor; Tipo int int float Nome divisor dividendo

Tipo

int

int

float

Nome

divisor

dividendo

resultado

Valor

?

?

?

2 Tipo int int float Nome divisor dividendo resultado Valor ? ? ? MC-102 — Aula

MC-102 — Aula 06

Simula¸c˜ao de c´odigo Decis˜ao simples e decis˜ao m´ultipla O comando switch

Simula¸c˜ao Manual

Execu¸c˜ao em mem´oria:decis˜ao m´ultipla O comando switch Simula¸c˜ao Manual Ex. Suponha o c´odigo: 1. int divisor,dividendo; 2. float

switch Simula¸c˜ao Manual Execu¸c˜ao em mem´oria: Ex. Suponha o c´odigo: 1. int divisor,dividendo; 2. float

Ex. Suponha o c´odigo:

1. int divisor,dividendo;

2. float resultado;

´

3. divisor=10; Ultimo executado

4. dividendo=13; Pr´oximo Comando

5. resultado = dividendo / divisor;

Ap´os “executar” a linha 3← Pr´oximo Comando 5. resultado = dividendo / divisor; Tipo int int float Nome divisor dividendo

Tipo

int

int

float

Nome

divisor

dividendo

resultado

Valor

?

?

?

10

int int float Nome divisor dividendo resultado Valor ? ? ? 10 MC-102 — Aula 06

MC-102 — Aula 06

Simula¸c˜ao de c´odigo Decis˜ao simples e decis˜ao m´ultipla O comando switch

Simula¸c˜ao Manual

Execu¸c˜ao em mem´oria:decis˜ao m´ultipla O comando switch Simula¸c˜ao Manual Ex. Suponha o c´odigo: 1. int divisor,dividendo; 2. float

switch Simula¸c˜ao Manual Execu¸c˜ao em mem´oria: Ex. Suponha o c´odigo: 1. int divisor,dividendo; 2. float

Ex. Suponha o c´odigo:

1. int divisor,dividendo;

2. float resultado;

3. divisor=10;

4. dividendo=13; Ultimo executado

5. resultado = dividendo / divisor; Pr´oximo

Comando

´

Ap´os “executar” a linha 4resultado = dividendo / divisor; ← Pr´oximo Comando ´ Tipo int int float Nome divisor dividendo

Tipo

int

int

float

Nome

divisor

dividendo

resultado

Valor

?

?

?

10

13

int int float Nome divisor dividendo resultado Valor ? ? ? 10 13 MC-102 — Aula

MC-102 — Aula 06

Simula¸c˜ao de c´odigo Decis˜ao simples e decis˜ao m´ultipla O comando switch

Simula¸c˜ao Manual

Execu¸c˜ao em mem´oria:decis˜ao m´ultipla O comando switch Simula¸c˜ao Manual Ex. Suponha o c´odigo: 1. int divisor,dividendo; 2. float

switch Simula¸c˜ao Manual Execu¸c˜ao em mem´oria: Ex. Suponha o c´odigo: 1. int divisor,dividendo; 2. float

Ex. Suponha o c´odigo:

1. int divisor,dividendo;

2. float resultado;

3. divisor=10;

4. dividendo=13;

5. resultado = dividendo / divisor; Ultimo

executado

´

Ap´os “executar” a linha 5resultado = dividendo / divisor; ← Ultimo executado ´ Tipo int int float Nome divisor dividendo

Tipo

int

int

float

Nome

divisor

dividendo

resultado

Valor

?

?

?

10

13

1.0

int float Nome divisor dividendo resultado Valor ? ? ? 10 13 1.0 MC-102 — Aula

MC-102 — Aula 06

Simula¸c˜ao de c´odigo Decis˜ao simples e decis˜ao m´ultipla O comando switch

Simula¸c˜ao Manual

Execu¸c˜ao em mem´oria:decis˜ao m´ultipla O comando switch Simula¸c˜ao Manual Ex. Suponha o c´odigo: 1. int divisor,dividendo; 2. float

switch Simula¸c˜ao Manual Execu¸c˜ao em mem´oria: Ex. Suponha o c´odigo: 1. int divisor,dividendo; 2. float

Ex. Suponha o c´odigo:

1. int divisor,dividendo;

2. float resultado;

3. divisor=10;

4. dividendo=13;

5. resultado = dividendo / divisor; Ultimo

executado

´

T´ermino da execu¸c˜ao (n˜ao h´a mais comandos)resultado = dividendo / divisor; ← Ultimo executado ´ Tipo int int float Nome divisor dividendo

Tipo

int

int

float

Nome

divisor

dividendo

resultado

Valor

?

?

?

10

13

1.0

int float Nome divisor dividendo resultado Valor ? ? ? 10 13 1.0 MC-102 — Aula

MC-102 — Aula 06

Simula¸c˜ao de c´odigo Decis˜ao simples e decis˜ao m´ultipla O comando switch

Simula¸c˜ao Manual

Execu¸c˜ao em mem´oria:decis˜ao m´ultipla O comando switch Simula¸c˜ao Manual Ex. Suponha o c´odigo (corrigido): 1. int

switch Simula¸c˜ao Manual Execu¸c˜ao em mem´oria: Ex. Suponha o c´odigo (corrigido): 1. int

Ex. Suponha o c´odigo (corrigido):

1. int divisor,dividendo;

2. float resultado;

3. divisor=10;

4. dividendo=13;

5. resultado = (float)dividendo / (float)divisor;

Execu¸c˜ao completa5. resultado = (float)dividendo / (float)divisor; Tipo int int float Nome divisor dividendo

Tipo

int

int

float

Nome

divisor

dividendo

resultado

Valor

?

?

?

10

13

1.3

int float Nome divisor dividendo resultado Valor ? ? ? 10 13 1.3 MC-102 — Aula

MC-102 — Aula 06

Simula¸c˜ao de c´odigo Decis˜ao simples e decis˜ao m´ultipla O comando switch

Decis˜ao simples e decis˜ao m´ultipla

O comando switch Decis˜ao simples e decis˜ao m´ultipla Dependendo do problema proposto, o programa pode ser

Dependendo do problema proposto, o programa pode ser formado por um conjunto muito grande de comandos if e express˜oes l´ogicas.

Exemplo

Exemplo

Fa¸ca um programa que, dado um RA, emite uma mensagem se o aluno estiver matriculado em uma turma de MC102.

 
 
 
 
dado um RA, emite uma mensagem se o aluno estiver matriculado em uma turma de MC102.

MC-102 — Aula 06

Simula¸c˜ao de c´odigo Decis˜ao simples e decis˜ao m´ultipla O comando switch

Decis˜ao simples

Para apenas um aluno, a solu¸c˜ao seria:

main () { int a; scanf("%d", &a); if (a == 10129) { printf("O aluno %d est´a matriculado\n", a);

}

}

&a); if (a == 10129) { printf("O aluno %d est´a matriculado\n", a); } } MC-102 —

MC-102 — Aula 06

Simula¸c˜ao de c´odigo Decis˜ao simples e decis˜ao m´ultipla O comando switch

Decis˜ao m´ultipla

Para dois alunos, a solu¸c˜ao seria:

main () { int a; scanf("%d", &a); if (a == 10129 || a == 16267) { printf("O aluno %d est´a matriculado\n", a);

}

}

&a); if (a == 10129 || a == 16267) { printf("O aluno %d est´a matriculado\n", a);

MC-102 — Aula 06

Simula¸c˜ao de c´odigo Decis˜ao simples e decis˜ao m´ultipla O comando switch

Decis˜ao m´ultipla

Problema: cada turma de MC102 possui cerca de 60 alunos e temos 14 turmas neste semestre.decis˜ao m´ultipla O comando switch Decis˜ao m´ultipla if (a == 2582 || a == 10129 ||

if (a == 2582 || a == 10129 ||

a == 16267 ||

a = 962185) {

printf("O aluno %d est´a matriculado\n", a);

}

Ter´ıamos muitas condi¸c˜oes a serem testadas.|| a == 10129 || a == 16267 || a = 962185) { printf("O aluno %d

aluno %d est´a matriculado\n", a); } Ter´ıamos muitas condi¸c˜oes a serem testadas. MC-102 — Aula 06

MC-102 — Aula 06

Simula¸c˜ao de c´odigo Decis˜ao simples e decis˜ao m´ultipla O comando switch

Decis˜ao simples e decis˜ao m´ultipla

Exemplo 2

Exemplo 2 Fa¸ca um programa que, dado um RA, mostre o nome desse aluno.

Fa¸ca um programa que, dado um RA, mostre o nome desse aluno.

e decis˜ao m´ultipla Exemplo 2 Fa¸ca um programa que, dado um RA, mostre o nome desse

MC-102 — Aula 06

Simula¸c˜ao de c´odigo Decis˜ao simples e decis˜ao m´ultipla O comando switch

Decis˜ao simples

Para apenas um aluno, a solu¸c˜ao seria:

main () { int a; scanf("%d", &a); if (a == 10129) { printf("Maria C^andida Moreira Telles\n");

}

}

scanf("%d", &a); if (a == 10129) { printf("Maria C^andida Moreira Telles\n"); } } MC-102 — Aula

MC-102 — Aula 06

Simula¸c˜ao de c´odigo Decis˜ao simples e decis˜ao m´ultipla O comando switch

Decis˜ao m´ultipla

main () { int a; scanf("%d", &a); if (a == 10129) printf("Maria C^andida Moreira Telles\n"); if (a == 33860) printf("Larissa Garcia Alfonsi\n"); if (a == 33967) printf("Leonardo Kozlowiski Kenupp\n");

}

Garcia Alfonsi\n"); if (a == 33967) printf("Leonardo Kozlowiski Kenupp\n"); } MC-102 — Aula 06

MC-102 — Aula 06

Simula¸c˜ao de c´odigo Decis˜ao simples e decis˜ao m´ultipla O comando switch

Decis˜ao m´ultipla

Novamente, temos um conjunto muito grande de alunos.decis˜ao m´ultipla O comando switch Decis˜ao m´ultipla Al´em disso, n˜ao podemos utilizar os operadores l´ogicos

Al´em disso, n˜ao podemos utilizar os operadores l´ogicos que utilizamos anteriormente.Novamente, temos um conjunto muito grande de alunos. Podemos tentar diminuir o n´umero de testes realizados?

Podemos tentar diminuir o n´umero de testes realizados?os operadores l´ogicos que utilizamos anteriormente. Uma constru¸c˜ao bem comum ´e o uso da seq¨uˆencia if

Uma constru¸c˜ao bem comum ´e o uso da seq¨uˆencia if else if : if else if:

if (<condi¸c~ao1>) <comando> else if (<condi¸c~ao2>) <comando>

else if (<condi¸c~aoN>) <comando>

else if (<condi¸c~ao2>) <comando> else if (<condi¸c~aoN>) <comando> MC-102 — Aula 06

MC-102 — Aula 06

Simula¸c˜ao de c´odigo Decis˜ao simples e decis˜ao m´ultipla O comando switch

O comando switch

e decis˜ao m´ultipla O comando switch O comando switch O objetivo do comando switch ´e simplificar

O objetivo do comando switch ´e simplificar uma express˜ao onde uma vari´avel inteira ou caracter deve fazer diferentes opera¸c˜oes dependendo exclusivamente de seu valor.

Sintaxe

switch (vari´avel inteira) { case valor: comandos break; case valor: comandos break;

}

Sintaxe switch (vari´avel inteira) { case valor: comandos break; case valor: comandos break; }
switch (vari´avel inteira) { case valor: comandos break; case valor: comandos break; } MC-102 — Aula

MC-102 — Aula 06

Simula¸c˜ao de c´odigo Decis˜ao simples e decis˜ao m´ultipla O comando switch

O comando switch

switch(a) { case 10129:

printf("Maria C^andida Moreira Telles\n"); break; case 33860:

printf("Larissa Garcia Alfonsi\n"); break; case 33967:

printf("Leonardo Kozlowiski Kenupp\n"); break;

}

Garcia Alfonsi\n"); break; case 33967: printf("Leonardo Kozlowiski Kenupp\n"); break; } MC-102 — Aula 06

MC-102 — Aula 06

Simula¸c˜ao de c´odigo Decis˜ao simples e decis˜ao m´ultipla O comando switch

O comando switch

Os comandos come¸cam a ser executados a partir do ponto onde o valor da vari´avel corresponde ao valor antes dos dois pontos (:).e decis˜ao m´ultipla O comando switch O comando switch Executa todos os comandos at´e que encontre

Executa todos os comandos at´e que encontre um comando break ou que chegue ao final do bloco de comandos do switch break ou que chegue ao final do bloco de comandos do switch

comandos at´e que encontre um comando break ou que chegue ao final do bloco de comandos

MC-102 — Aula 06

Simula¸c˜ao de c´odigo Decis˜ao simples e decis˜ao m´ultipla O comando switch

Valor padr˜ao

e decis˜ao m´ultipla O comando switch Valor padr˜ao Vocˆe pode utilizar, ao inv´es de um valor,

Vocˆe pode utilizar, ao inv´es de um valor, o valor default. A execu¸c˜ao dos comandos inicia no comando default se nenhum outro valor for correspondente ao valor da vari´avel.

Sintaxe

switch (vari´avel inteira) { valor: comandos break; default: comandos

}

Sintaxe switch (vari´avel inteira) { valor: comandos break; default: comandos }
vari´avel. Sintaxe switch (vari´avel inteira) { valor: comandos break; default: comandos } MC-102 — Aula 06

MC-102 — Aula 06

Simula¸c˜ao de c´odigo Decis˜ao simples e decis˜ao m´ultipla O comando switch

Valor padr˜ao

switch(a) { case 10129:

printf("Maria C^andida Moreira Telles\n"); break; case 33860:

printf("Larissa Garcia Alfonsi\n"); break; default:

printf("O aluno n~ao est´a matriculado\n");

}

Garcia Alfonsi\n"); break; default: printf("O aluno n~ao est´a matriculado\n"); } MC-102 — Aula 06

MC-102 — Aula 06

Simula¸c˜ao de c´odigo Decis˜ao simples e decis˜ao m´ultipla O comando switch

Exerc´ıcios

Dada uma letra, escreva na tela se essa letra ´e ou n˜ao uma vogal (pode considerar apenas letras min´usculas).e decis˜ao m´ultipla O comando switch Exerc´ıcios Dado um caracter, escreva na tela se esse caracter

Dado um caracter, escreva na tela se esse caracter ´e uma letra min´uscula.escreva na tela se essa letra ´e ou n˜ao uma vogal (pode considerar apenas letras min´usculas).

letras min´usculas). Dado um caracter, escreva na tela se esse caracter ´e uma letra min´uscula. MC-102

MC-102 — Aula 06

Simula¸c˜ao de c´odigo Decis˜ao simples e decis˜ao m´ultipla O comando switch

Exerc´ıcios

e decis˜ao m´ultipla O comando switch Exerc´ıcios Escreva um programa que recebe um operando, um operador

Escreva um programa que recebe um operando, um operador aritm´etico e outro operando e calcule a opera¸c˜ao indicada. As opera¸c˜oes poss´ıveis s˜ao soma(+), subtra¸c˜ao( ), multiplica¸c˜ao(*) e divis˜ao(/).

Exemplo

Exemplo

10 + 2 imprime 12 na tela.

 
 
 
 
− ), multiplica¸c˜ao(*) e divis˜ao(/). Exemplo 10 + 2 imprime 12 na tela.     MC-102

MC-102 — Aula 06

Simula¸c˜ao de c´odigo Decis˜ao simples e decis˜ao m´ultipla O comando switch

Exerc´ıcios

Escreva um programa que mostre na tela um menu de pratos (pelo menos 5), cada um associado a um n´umero. menu de pratos (pelo menos 5), cada um associado a um n´umero.

Prato 1 - Miojo Prato 2 - Ensopado

Quando um n´umero ´e selecionado, o programa deve exibir uma breve descri¸c˜ao do prato. Por exemplo, ao digitar 1, o programa mostra: “Macarr˜ao instantˆaneo”um menu de pratos (pelo menos 5), cada um associado a um n´umero. Prato 1 -

descri¸c˜ao do prato. Por exemplo, ao digitar 1, o programa mostra: “Macarr˜ao instantˆaneo” MC-102 — Aula

MC-102 — Aula 06