• Nenhum resultado encontrado

Estruturas de Controle

N/A
N/A
Protected

Academic year: 2022

Share "Estruturas de Controle"

Copied!
9
0
0

Texto

(1)

Estruturas de Controle

Linguagem de Programação Estruturada Prof. Leandro Carlos Fernandes

2º semestre 2015

Estruturas de Controle

ESTRUTURA SEQUENCIAL

ESTRUTURAS CONDICIONAIS Estrutura Condicional Simples Estrutura Condicional Composta

Seleção entre duas ou mais Seqüências de Comandos

ESTRUTURA DE REPETIÇÃO Repetição com Teste no Início Repetição com Teste no Final Repetição Contada

1

Exemplo

Calcular a área de um triangulo, dados os comprimentos de seus lados

algoritmo AreaTri declare

a,b, c, per, area: reais início

leia(a,b,c) per (a+b+c)/2

Execução do Programa AREATRI

Primeira Execução:

A=3; B=4; C=5 PER=(3+4+5)/2 = 6

AREA= raiz (6*(6-3)*(6-4)*(6-5)) = raiz 36=6

Segunda Execução:

A=3; B=4; C=9 PER=(3+4+9)/2 = 8

(2)

Execução do Programa AREATRI

O que acontece é que nem sempre três

números reais são comprimentos dos lados de um triângulo.

Três números só podem ser comprimento dos lados de um triângulo se cada um deles for menor que a soma dos outros dois.

A < B+C e B < (A+C) e C < (A+B)

4

Estrutura de Decisão

Uma estrutura de decisão ou estrutura condicional permite a escolha do grupo de ações a ser executado quando determinadas condições, representadas por expressões lógicas, são ou não satisfeitas.

Mas o que são as expressões lógicas?

5

EXPRESSÃO LÓGICA

Estruturas de Decisão

Expressão Lógica

Denomina-se expressão lógica aquela cujos:

operadores são relacionais ou lógicos e os operandos são relações ou variáveis ou

constantes do tipo lógico.

Exemplo: (A+B == 0) and (C != 1)

(3)

Operadores Relacionais

Utilizam-se os operadores relacionais para realizar comparações entre dois valores de mesmo tipo primitivo.

Tais valores podem ser constantes, variáveis ou expressões aritméticas

O resultado obtido de uma relação é sempre um valor lógico.

8

Operador Relação

> Maior do que

>= Maior ou igual

< Menor do que

<= Menor ou igual

== Igual

!= Diferente de

Operadores Lógicos

Utilizam-se três conectivos básicos para a formação de novas proposições lógicas compostas a partir de outras proposições lógicas simples.

9

Operador Função Exemplo

&& AND (E) (c >=‘0’ && c<=‘9’)

|| OR (OU) (a==‘F’ || b!=32)

! NOT (NÃO) (!var)

Tabela Verdade

A B ! A ! B A && B A || B

Verd. Verd. Falso Falso Verd. Verd.

Verd. Falso Falso Verd. Falso Verd.

Falso Verd. Verd. Falso Falso Verd.

Falso Falso Verd. Verd. Falso Falso

Precedência dos Operadores

( ) [ ] ->

! ~ ++ -- . - (unário) (cast) *(unário) sizeof

* / % + -<< >>

<<= >>=

== !=

&

^|

Maior precedência

(4)

COMANDOS CONDICIONAIS

Estruturas de Decisão

12

Estruturas de Decisão

Classificados em três tipos:

Comando Condicional Simples Comando Condicional Composto

Seleção entre duas ou mais seqüências de comandos

13

Comando Condicional Simples

Estrutura decisão que permite a escolha do grupo de ações a ser executado quando determinada condição é satisfeita.

sim ? não

Comando Condicional Composto

Estrutura decisão que permite a escolha entre dois grupos de ações a serem executado dependendo de se uma condição é ou não satisfeita.

sim ? não

(5)

O Comando IF

if ( expressão lógica)

execute comando ou bloco de comandos; Ex:

if ( num == 0 )

printf("O numero digitado eh zero");

16

Exemplo - IF

#include <stdio.h>

intmain () { intnum;

printf ("Digite um numero: ");

scanf ("%d",&num);

if(num > 10)

printf ("\n\n O numero e maior que 10");

if(num == 10) {

printf ("\n\n Voce acertou!\n");

printf ("O numero e igual a 10.");

}if(num < 10)

printf ("\n\n O numero e menor que 10");

return 0;

}

17

O comando IF-ELSE

Podemos pensar no comando elsecomo sendo um complemento do comando if. O comando if completo tem a seguinte forma geral:

if(condição) {

seqüência_de_comandos_1;

} else{

O comando IF-ELSE

A expressão da condição será avaliada:

Se ela for diferente de zero, a

seqüência_comandos_1 será executada.

Se for zero a seqüência_comandos_2será executada.

É importante nunca esquecer que, quando

(6)

Exemplo IF – ELSE

#include <stdio.h>

intmain ( ) { intnum;

printf ("Digite um numero: ");

scanf ("%d", &num);

if(num == 10) {

printf ("\n\n Voce acertou!\n");

printf ("O numero e igual a 10.\n");

}else{

printf ("\n\n Voce errou!\n");

printf ("O numero e diferente de 10.\n");

return 0;} }

20

Aninhamento de IF

É possível aninhar construções do tipo if- else em diversos níveis:

O ifaninhado é

simplesmente um ifdentro da declaração de um outro ifmais externo.

O único cuidado que devemos ter é o de saber exatamente a qual ifum determinado elseestá ligado.

if(cond1) if(cond2)

comandos if2;

elsecomandos else2;

elseif(cond3) if(cond4)

comandos if4;

elsecomandos else4;

elsecomandos else3;

21

Aninhamento de IF

#include <stdio.h>

intmain () { intnum;

printf ("Digite um numero: ");

scanf ("%d", &num);

if(num == 10) {

printf ("\n\n Voce acertou!\n");

printf ("O numero e igual a 10.\n");

}else{

if(num > 10)

printf ("O numero e maior que 10.");

elseprintf ("O numero e menor que 10.");

return} 0;

}

Aninhamento de IF’s

Observe sempre a correspondência entre if’se else’s

Note que neste caso, a definição de um bloco de comandos garante a correta interpretação do aninhamento dos comandos

if(cond1) if(cond2)

comandos if2;

elsecomandos else1;

if(cond1) { if(cond2)

comandos if2;

}else

comandos else1;

(7)

Encadeamento IF-ELSE-IF

if (teste_1) <comando_1>;

else if (teste _2) <comando _2>;

else if (teste _3) <comando _3>;

. . .

else <comando _n>;

No encadeamento apenas um dos ncomandos será executado: o primeiro cujo teste for verdadeiro

24

Encadeamento IF-ELSE-IF

A estrutura if-else-ifé apenas uma extensão da estrutura if- else. Sua forma geral é:

if(condição_1) {

seqüência_de_comandos_1;

} else if(condição_2) { seqüência_de_comandos_2;

} . . .

else if(condição_n) {

seqüência_de_comandos_n;

} else{

seqüência_de_comandos_default;

}

25

Exemplo ELSE-IF

#include <stdio.h>

intmain () { intnum;

printf ("Digite um numero: ");

scanf ("%d",&num);

if(num > 10)

printf ("\n\n O numero e maior que 10");

else if(num == 10) {

printf ("\n\n Voce acertou!\n");

printf ("O numero e igual a 10.");

Encadeamento IF-ELSE-IF

Exemplo: escrever o nome de um dígito

‘0’“zero”, ‘1’“um”, etc.

...if(ch == ‘0’) printf(“Zero”);

else if(ch==‘1’) printf(“Um”);

else if(ch==‘2’) printf(“Dois”);

else if...

else if(ch==‘9’) printf(“Nove”);

(8)

A Expressão Condicional

Quando o compilador avalia uma condição, ele quer um valor de retorno para poder tomar a decisão. Mas esta expressão não necessita ser uma expressão no sentido convencional.

Uma variável sozinha pode ser uma "expressão" e esta retorna o seu próprio valor.

Assim: intnum;

if(num!=0) ....

if (num==0) ....

for(i = 0; string[i] != '\0'; i++) equivalem: intnum;

if (num) ....

if(!num) ....

for(i = 0; string[i]; i++)

28

O Operador “?”

Uma expressão como:

if(a > 0) b = -150;

else

b = 150;

pode ser simplificada usando-se o operador ?da

seguinte maneira:

b = (a > 0) ? -150 : 150;

29

Exemplo

O que faz o trecho de código abaixo ?

...

intnum = 0;

scanf(“%d”, &num);

printf(”O numero eh %s\n”, (num%2==0)? “par” :“impar” );

O comando Switch

switch( valor ) { casevalor1:

comandos1;

break;

casevalork:

comandosk;

break;

default:

comandos_default;

break;

}

switch

case:

case:break;

case:

break;

switch

case:

case:break;

case:

break;

O

O comando switché próprio para se testar uma variável em relação a diversos valores pré-estabelecidos.

(9)

O comando Switch

A expressão valoré avaliada e o valor obtido é comparado com os valores associados às cláusulas caseem seqüência

Quando o valor associado a uma cláusula é igual ao valor do switchos respectivos comandos são executados até encontrar um break

Se não existir um breakna cláusula selecionada, os comandos das cláusulas seguintes são executados em ordem até encontrar um breakou esgotarem-se as cláusulas do switch

Se nenhuma das cláusulas contém o valor de seleção, a cláusula default, se existir, é executada

32

Exemplo Switch

switch( char_in ) {

case'.': printf("Ponto.\n");

break;

case',': printf("Virgula.\n");

break;

case':': printf("Dois pontos.\n");

break;

case';': printf("Ponto e virgula.\n");

break;

default: printf("Nao eh pontuacao.\n");

}

33

Exemplo Switch sem break

switch( char_in ) {

case’0’: putchar(‘0’); /* 0123456789 */

case‘1’: putchar(‘1’); /* 123456789 */

case’2’: putchar(‘2’); /* 23456789 */

case’3’: putchar(‘3’); /* 3456789 */

case‘4’: putchar(‘4’); /* 456789 */

case‘5’: putchar(‘5’); /* 56789 */

case’6’: putchar(‘6’); /* 6789 */

case’7’: putchar(‘7’); /* 789 */

Referências

Documentos relacionados

A baixa taxa de desconto ao longo dos anos de produção do campo, para o cálculo da função objetivo, aliada a baixa produção de água que a locação de

Percebe-se que os informes financeiros Disponível, Controle de contas a receber e Controle de contas a pagar são disponibilizados a 100% dos gestores. No entanto, todos

Após a colheita, normalmente é necessário aguar- dar alguns dias, cerca de 10 a 15 dias dependendo da cultivar e das condições meteorológicas, para que a pele dos tubérculos continue

Epistemologicamente falando, hoje atravessamos uma crise paradigmática que tem sido problematizada por pesquisadores de diferentes matrizes teóricas, mais recentemente, com

Para o número de perfilhos basais nos períodos de seca e chuvas, somente os cortes efetuados rentes ao solo apresentaram diferença (P&lt;0,05), resultando em número maior de

Câmara dos Santos.. A pesquisa deste casal é divulgada no mundo a partir da publicação do primeiro artigo que tratava da teoria pelo Van Hiele na França, pois até então a teoria

Changes in the gut microbiota appears to be a key element in the pathogenesis of hepatic and gastrointestinal disorders, including non-alcoholic fatty liver disease, alcoholic

Os maiores coeficientes da razão área/perímetro são das edificações Kanimbambo (12,75) e Barão do Rio Branco (10,22) ou seja possuem uma maior área por unidade de