Você está na página 1de 49

Atualizao Tcnica e Pedaggica de Professores no componente

de Lgica de Programao com C# (console)

Semana 2
Estruturas de Condio, Seleo e Repetio
Prof. Tiago Jesus de Souza

Introduo
Nesta semana iremos abordar assuntos fundamentais para o desenvolvimento lgico das
atividades do curso.
So comandos/instrues chaves para que seja entendido como um programa realiza o
fluxo de dados com tomadas de deciso, como faz para selecionar a opo de um menu e
tambm como repetir instrues por inmeras vezes at que uma determinada condio
seja satisfeita.
Estrutura Condicional: if / if...else
Estrutura de Seleo: switch
Estruturas de repetio: for / while / do...while

Estrutura Condicional Simples: if (se)


Tem a finalidade de tomar uma deciso e efetuar um desvio no processamento do
programa, dependendo, claro, da condio ser Verdadeira ou Falsa.
Sendo a condio Verdadeira, ser executada a instruo que estiver escrita na linha logo
aps da instruo if.
Caso seja necessrio executar mais de uma instruo para uma condio, elas devero
estar dentro de um bloco, ou seja, devem estar ente { e }.
Sintaxe: if (condio)
instruo 1

ou

if (condio)
{
instruo 1
instruo 2
}

Exemplo 1 Estrutura Condicional Simples


Neste exemplo o usurio dever digitar dois nmeros inteiros. Ser calculada a adio
deste nmeros e na sequncia existe uma condio, que ir testar se o resultado da soma
que est armazenado na varivel X maior que 0 (zero).
Sendo verdadeira a condio, exibir uma mensagem na tela. Caso contrrio,
simplesmente no ser exibida mensagem na tela.

Exemplo 1 Estrutura Condicional Simples - Resultado


Observem na imagem a seguir, que a mensagem foi exibida na tela, pois a condio
testada verdadeira.

J no outro teste, no foi exibida nenhuma mensagem, pois a condio testada falsa.

Exemplo 2 Estrutura Condicional Simples


Considerando o teste da condio falsa, o usurio no entender o que ocorreu no
programa,mesmo porque, no apareceu nenhuma mensagem na tela e ele pode ficar
confuso.
Para solucionar este problema, podemos incluir uma outra condio realizando o teste
para saber se o resultado menor que zero, e assim o usurio ter uma informao como
resultado do programa.

Exemplo 2 Estrutura Condicional Simples - Resultado


Observem que agora existem dois testes lgicos no programa. E como o programa vai
executando os comandos de cima para baixo, primeiramente realizar o teste para
identificar se o resultado da soma maior que zero. Sendo verdadeiro, executar a
instruo logo aps o teste.
Logo aps, obrigatoriamente o programa ir continuar a execuo e realizar um outro
teste para verificar se o resultado da soma menor do que zero. Sendo verdadeiro
executar a instruo que est logo aps este segundo teste.

Mas, e se o resultado da soma for igual a zero? No exibir nenhuma mensagem.


Para resolver isso, basta incluir mais um teste condicional if (X==0) e exibir a mensagem.

Indentao
uma prtica adotada em programao para organizar o cdigo fonte, tornando a leitura
do cdigo muito mais fcil.
Em arquivos pequenos no se percebe tanto a necessidade, mas em arquivos mais
extensos de fundamental importncia.
Para qualquer programador, deve ser um critrio a ter em conta, principalmente, por
aqueles que pretendam partilhar o seu cdigo com outros. A indentao facilita tambm a
modificao, seja para correo ou aprimoramento, do cdigo fonte.
Existem centenas de estilos de indentao, mas, basicamente, consiste na adio de
tabulaes no incio de cada linha na quantidade equivalente ao nmero de blocos em
que cada linha est contida.

Indentao - Continuao
Notem que os dois cdigos apresentados so iguais, o que difere que um est
organizado (indentado) e o outro no, o que dificulta um pouco entender a hierarquia dos
comandos, ou seja, um comando ser realizado sempre ou s quando satisfazer uma
condio?

Estrutura Condicional Composta: if...else (se...seno)


Sendo a condio Verdadeira, ser executada a instruo que estiver posicionada entre as
instrues if e else. Sendo a condio Falsa, ser executada a instruo que estiver
posicionada logo aps a instruo else.
Caso seja necessrio executar mais de uma instruo, elas devero estar dentro de um
bloco, ou seja, devem estar ente { e }.
Sintaxe: if (condio)
instruo 1
else
instruo 2

ou

if (condio)
{
instruo 1
instruo 2
}
else
{
instruo 3
instruo 4
}

Exemplo 3 - Estrutura Condicional Composta


Neste exemplo o usurio dever digitar um nmero inteiro e o programa ir verificar se
este nmero par ou mpar.
Podemos tambm realizar o
clculo, na linha da instruo if,
no precisando desta forma
declarar a varivel R, inclusive
reduzindo o nmero de linhas.

Exemplo 3 - Estrutura Condicional Composta - Resultado


Analisando o cdigo, podemos identificar que,, somente ser informado que o nmero
mpar se a condio (if) for falsa. Com isso chegamos a concluso que o else ser o
responsvel por criar um mecanismo onde tratar as ocorrncias falsas do if.
Exemplificando em algoritmo (portugus estruturado):
se (condio for verdadeira) ento
execute uma instruo
seno
execute outra instruo

Exemplo 4 - Estrutura Condicional Composta


Neste outro exemplo,
o usurio dever
informar o nome e a
idade de duas pessoas.
Na sequncia ser
exibido para o usurio
o nome e a idade da
pessoa mais velha. Ser
tratado ainda, a
condio de idades
iguais.

Exemplo 4 - Estrutura Condicional Composta - Resultado


Notem que realizando a indentao corretamente, fica mais fcil identificar quais
instrues devem ser executadas caso as condies sejam verdadeiras ou falas.
Resultado da 1 condio sendo
Verdadeira.

Resultado da 1 condio sendo


Falsa e a 2 condio verdadeira.

Resultado da 1 condio sendo


Falsa e da 2 condio tambm
sendo falsa.

Exemplo 4 - Estrutura Condicional Composta


Observem que se o primeiro teste condicional for verdadeiro, executar as instrues que
esto dentro do bloco (delimitado pelas chaves), e o programa sequncia ir para o fim do
programa. Ou seja, as demais instrues no sero executadas.
Somente haver o teste da segunda
condio, se a primeira condio
for falsa, executando o bloco de
instrues do else. Na sequncia,
se a segunda condio for verdade
executar as instrues do bloco
seguinte, seno executar a
instruo do bloco do prximo else.
Podemos chamar essa composio de teste encadeado.

Testes Simples x Testes Encadeados


Para uma mesma soluo, porm usando lgica diferente, poderamos utilizar trs
instrues if separadamente, como escrito a seguir:
Ambos exibem os mesmos
resultados na tela, porm
realizando desta forma,
haver um tempo maior
de processamento, pois
sero necessrias trs
comparaes, mesmo as
primeiras sendo verdadeiras.
J no Exemplo 5, se a primeira condio for verdadeira, as outras no sero processadas.

Exemplo 5 Testes usando Operadores Lgicos


Neste exemplo, o usurio dever digitar um valor real e o programa exibir uma
mensagem informando se este valor digitado est entre 10 e 50.

O operador lgico usado foi o && (AND), ou seja, somente ser verdadeiro se estiver entre
10 e 50.

Exemplo 5 Testes usando Operadores Lgicos - Resultados


Teste sendo executado com a condio sendo verdadeira.

Teste sendo executado com a condio sendo falsa.

E se caso o usurio digitar um valor igual a 10 ou 50, qual ser a resposta?

Estrutura de Seleo: switch...case (selecione...caso)


A grande maioria dos programas, jogos e pginas web possuem um menu de opes, para
deixar com que o usurio escolha o que deseja fazer, ou seja, qual das opes o mesmo
deseja selecionar para executar alguma tarefa.
Com base nisso, muitos deles utilizam a estrutura de seleo switch...case, onde o usurio
dever informar a opo desejada e o programa executar as instrues pertencentes
somente quele item escolhido.

Estrutura de Seleo: switch...case (selecione...caso)


Neste comando a execuo segue os seguintes passos:
A expresso avaliada;
Sintaxe:
switch (varivel)
O resultado da expresso comparado com os
{
valores das constantes que aparecem nos
case constante1: sequencia de comandos;
break;
comandos case;
Quando o resultado da expresso for igual a
case constante2: sequencia de comandos;
uma das constantes, a execuo se inicia a partir
break;
.
.
do comando associado com esta constante. A
.
.
execuo continua com a execuo de todos os
.
.
comandos at o fim do comando switch, ou at
case constante_n: sequencia de comandos;
break;
que um comando break seja encontrado;
Caso no ocorra nenhuma coincidncia o
default: sequencia de comandos;
comando default executado.
break;
}

Estrutura de Seleo Pontos importantes


H alguns pontos importantes que devem ser mencionados sobre o comando switch:

Notar que caso no aparea um comando de desvio (break) todas as instrues


seguintes ao teste case que teve sucesso sero executadas, mesmo as que estejam
relacionadas com outros testes case;

O comando switch s pode testar igualdade;

No podem aparecer duas constantes iguais em um case;

Estrutura de Seleo: Sintaxe


Neste comando a execuo segue os seguintes passos:
Sintaxe: switch ( varivel_opo)
A expresso avaliada;
{
O resultado da expresso comparado com os
case valor_constante1:
instrues
valores das constantes que aparecem nos
break;
comandos case;
case valor_constante2:
Quando o resultado da expresso for igual a
instrues
uma das constantes, a execuo se inicia a partir
break;
do comando associado com esta constante. A
case valor_constanteN:
execuo continua com a execuo de todos os
instrues
break;
comandos at o fim do comando switch, ou at
que um comando break seja encontrado;
default:
instrues
Caso no ocorra nenhuma coincidncia o
break;
}
comando default executado.

Exemplo 6 - Estrutura de Seleo


Neste exemplo, em um primeiro momento
o que aparecer na tela para o usurio,
ser um menu com alguns itens. Ele dever
digitar o nmero correspondente a opo
desejada e pressionar <enter>.
Na sequencia ser executado o case de
acordo com a opo digitada.
Observem que neste exemplo a opo
do tipo inteiro.

Exemplo 6 - Estrutura de Seleo - Resultado


Na primeira execuo, foi digitada a opo 1 e na sequencia foi executada a instruo do
case 1.

Em um segundo teste, foi digitada a opo 7. Como no existe case 7, o default ser
acionado para executar as instrues referentes opes que no existem cases.

Exemplo 7 - Estrutura de Seleo


Neste exemplo, bem parecido com o
Anterior. O que muda a forma de tratar
A opo desejada.
Ao invs de nmeros inteiros, so usados
caracteres para identificar cada item do
menu.
E para isso o tipo da varivel opcao char.
E os caracteres correspondentes
relacionados no case, devem estar entre
aspas simples .

Exemplo 7 - Estrutura de Seleo - Resultado


Na primeira execuo, foi digitada a opo I e na sequencia foi executada a instruo do
case I.

No teste da segunda execuo foi digitada a opo E.

Exemplo 8 - Estrutura de Seleo


Neste exemplo, o que muda tambm a
forma de tratar a opo desejada.
Ao invs de nmeros inteiros ou simples
caracteres, so usadas strings para
identificar cada item do menu.
E para isso o tipo da varivel opcao
string.
E as strings correspondentes
relacionados no case, devem estar entre
aspas .

Exemplo 8 - Estrutura de Seleo - Resultado


A opo desejada deve ser digitada exatamente igual a string que consta no case. Caso
contrrio, sero executadas as instrues do default.

Estruturas de Repetio
Em muitas situaes durante o desenvolvimento de programas, existe a necessidade de
repetir por inmeras vezes um determinado trecho de cdigo, ou seja, repetir por vrias
vezes algumas instrues.
Anda em outras palavras, os comandos de repetio permitem que um conjunto de
instrues seja executado at que satisfaa uma determinada condio.
Sendo assim, devemos utilizar estruturas de repetio para que isso seja possvel.
As estruturas de repetio so:
for (para)
while (Enquanto)
do...while (faa...enquanto)

Estrutura de Repetio: Comando FOR


uma estrutura muito utilizada principalmente quando se sabe quantas vezes deve ser
executado um conjunto de instrues.
A forma geral do comando for :
for (inicializao ; condio ; incremento)
{
Intrues;
}
Normalmente, a inicializao realizada atravs de um comando de atribuio, que
usado para colocar um valor na varivel de controle do lao. A condio determina
quando a repetio acaba. O incremento ou decremento define como a varivel de
controle do lao varia cada vez que o lao repetido.

Exemplo 9 - Estrutura de Repetio: Comando FOR (incremento)


Neste exemplo sero exibidos na tela, todos os nmeros de 1 a 10 em ordem crescente.
Resultado

Onde:
x = 1 a inicializao da varivel, que comea o lao de repetio valendo 1.
x <= 10 a condio de parada do lao de repetio, onde enquanto x for menor ou
igual a 10, o bloco de instrues ser executado.
x++ o incremento, onde a cada iterao a varivel x passa a ser incrementada

Exemplo 10 - Estrutura de Repetio: Comando FOR (decremento)


Neste exemplo sero exibidos na tela, todos os nmeros de 1 a 10 em ordem decrescente.
Resultado

Onde:
x = 10 a inicializao da varivel, que comea o lao de repetio valendo 10.
x >= 1 a condio de parada do lao de repetio, onde enquanto x for maior ou igual
a 1, o bloco de instrues ser executado.
x-- o decremento, onde a cada iterao a varivel x passa a ser decrementada

Estrutura de Repetio: Comando WHILE


Esta estrutura de lao de repetio caracteriza-se por efetuar um teste lgico no incio do
lao de repetio, verificando se permitido executar o trecho de instrues subordinado
a ele.
Sintaxe:
while (<condio>)
{
Instrues para condio verdadeira;
}

Estrutura de Repetio: Comando WHILE


A estrutura while tem o seu funcionamento controlado por condio. Desta forma, pode
executar um determinado conjunto de instrues enquanto a condio verificada
permanecer Verdadeira. No momento em que esta condio se torna Falsa, o
processamento da rotina desviado para fora do lao de repetio, ou seja, a execuo do
bloco de instrues encerrada.
Caso seja a condio Falsa logo no incio do lao de repetio, as instrues contidas nele
so ignoradas.
Caso seja necessrio executar mais de uma instruo para uma condio verdadeira
dentro de um lao, elas devem estar definidas dentro de um bloco por meio dos smbolos
de chaves.

Exemplo 11 - Estrutura de Repetio: Comando WHILE


Neste exemplo sero exibidos na tela, todos os nmeros de 1 a 20.
O valor de num inicial 1. Na sequencia ser realizado
o teste condicional do comando while, que ser
verdadeiro, pois o valor de num menor ou igual a 20.
Sendo assim, ser exibido o valor de num na tela e
em seguida haver um incremento de num que passa a
valer 2, e retorna para o teste condicional, que sendo
verdadeiro, continuar a execuo do bloco de
instrues. Caso contrrio ser encerrada a execuo do bloco de instrues.

Resultado

Exemplo 12 - Estrutura de Repetio: Comando WHILE


Neste exemplo o usurio dever digitar um nmero inteiro e exibir todos os nmeros
pares em ordem crescente menores que 20, a partir no nmero digitado pelo usurio.

Exemplo 12 - Estrutura de Repetio: Comando WHILE - Resultado


Observem que quando usurio digita um nmero menor que 20, a condio testada
verdadeira e assim executado o bloco de instrues at que a condio seja falsa.

J se o nmero digitado no for menor do que 20 nenhum resultado ser exibido na tela,
pois a condio inicial no foi verdadeira.

Estrutura de Repetio: Comando DO...WHILE


Esta estrutura faz um teste lgico no final de um lao de repetio. Ela parecida com a
estrutura while. Seu funcionamento controlado tambm por condio. Esse tipo de lao
executa um conjunto de instrues pelo menos uma vez antes de verificar a validade da
condio estabelecida.
Desta forma do...while ir processar um conjunto de instrues, no mnimo uma vez, at
enquanto a condio for verdadeira.
Sintaxe:
do{
instrues enquanto verdadeiras;
}
while (condio);

Exemplo 13 - Estrutura de Repetio: Comando DO...WHILE


Neste exemplo,o bloco de repetio ser executado pelo menos uma vez. Sendo iniciado o
usurio digitar um nmero inteiro. Se este nmero for diferente de zero, exibir o
resultado do dobro deste nmero digitado. Seno informar o fim do programa. Ou seja,
ser executado o bloco de instrues enquanto a condio do while for verdadeira.

Resultado:

Estruturas de Repetio, qual usar?


Conforme conseguimos observar nos exemplos, ambas as estruturas possuem a mesma
finalidade, que executar um bloco de instrues vrias vezes. Mas como saber qual
utilizar? simples, no existe uma regra que diz qual a melhor forma. O que pode existir
um estudo sobre o desempenho de cada estrutura para cada problema a ser resolvido.
O que podemos concluir em linhas gerais para auxiliar na tomada de deciso em qual
estrutura utilizar, analisar o problema e usar:
for: quando se sabe quantas vezes um bloco de instrues dever ser executado.
while: quando desejar que um bloco de instrues seja executado por vrias vezes
somente se a condio inicial for verdadeira (teste no incio).
do...while: quando desejar que um bloco de instrues seja executado pelo menos
uma vez (teste no final).

Exemplo 14 Utilizando Diversas Estruturas


Escreva um programa que exiba o seguinte menu na tela:
1 Par/mpar
2 Decrescente at 0 (zero)
3 - Sair
Para cada item dever ser implementado o que se pede, sendo que se o usurio escolher
a opo:
1, dever ser digitado um nmero e o programa informar se este nmero par ou mpar.
2, dever ser digitado um nmero e o programa exibir todos os nmeros em ordem
decrescente at 0 (zero)
3, dever encerrar o programa.

Exemplo 14 Utilizando Diversas Estruturas - Resoluo

Exemplo 14 Utilizando Diversas Estruturas Comentrios


Neste exemplo foram utilizadas vrias estruturas e instrues j vistas no curso at o
momento:
switch...case, while, do...while, operadores ternrios e decremento
Este foi apenas um exemplo de resoluo deste exerccio, pois poderia ainda ter usado
if...else , em vez de usar operadores ternrios. Poderia utilizar for, me vez de while.
Tente fazer o mesmo programa de outras formas, porm devendo chegar ao mesmo
resultado.
Console.Clear(); instruo para limpar a tela.
Obs.: Nas linhas de instruo para o usurio digitar valores, foi colocado o comando de
entrada de dados na mesma linha, apenas para colocar em um s slide o cdigo fonte.

Exemplo 14 Utilizando Diversas Estruturas - Resultado


Observem que ao iniciar o programa
j exibido um menu.
Escolhendo a opo 1, ser solicitado
ao usurio que digite um nmero e o
resultado ser par ou mpar.
Na sequencia ir retornar ao menu,
e o usurio dever escolher outra
opo, ou seja, somente ser
encerrado o programa, quando
o usurio escolher a opo 3.
Realize todos os testes.

Exemplo 15 Contagem do nmero de elementos de um conjunto


Neste exemplo, o usurio ter que digitar vrios nmeros inteiros e ao final o programa ir
informar a quantidade de nmeros que foram digitados. A condio de parada deste lao
de repetio, ser quando o usurio digitar o valor 0 (zero), que no dever entrar para a
contagem dos nmeros vlidos digitados.

Exemplo 15 Contagem do nmero de elementos de um conjunto


A varivel n serviu para armazenar o nmero
digitado pelo usurio.
A varivel q serviu para a contagem dos nmeros
vlidos digitados, que no caso ela inicia com valor 0
(zero) e na sequencia entra no lao de repetio.
Ao passo que o usurio digita um nmero,
realizada uma verificao para saber se o nmero
digitado diferente de 0 (zero).
Sendo verdadeira a condio ser realizado um
incremento na varivel q.
O programa se encerrado somente quando o usurio digitar o valor 0 (zero).

Exemplo 15 Acmulo de resultados parciais


Neste exemplo, o usurio ter que digitar vrios nmeros reais e ao final o programa ir
informar a soma dos valores que foram digitados. A condio de parada deste lao de
repetio, ser quando o usurio digitar o valor 0 (zero).

Exemplo 15 Acmulo de resultados parciais - Resultado


A varivel n serviu para armazenar o nmero digitado pelo usurio.
A varivel soma serve para armazenar o acmulo do
resultado da soma de todos os valores digitados pelo
usurio. Esta varivel inicia valendo 0 (zero).
O usurio digitar um valor e na sequencia a varivel
soma receber o resultado da adio da varivel soma
com a varivel n.
Ou seja, enquanto o usurio no digitar 0 (zero), o usurio
Ir digitar um valor e ser acumulada na varivel soma o
acmulo da soma dos nmeros digitados pelo usurio.

Bibliografia

Manzano, Jos Augusto N. G., Estudo Dirigido de Microsoft Visual C# 2010 Express.
So Paulo, SP, Editora rica, 2010.

MSDN, Microsoft. Guia de Programao C#. Disponvel:


<http://msdn.microsoft.com/pt-br/library/67ef8sbd(v=vs.80).aspx>. Acesso em 31
jan 2013

http://pt.wikipedia.org/wiki/Indenta%C3%A7%C3%A3o

Você também pode gostar