Estruturas de Decisão.

Slides:



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

Estruturas de Controle
Estrutura Condicional
LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS INSTRUÇÕES DE CONTROLE – PARTE I Prof. Thiago Pereira Rique
Universidade Federal de São Carlos Introdução à Linguagem C Comandos.
Introdução à Computação - Jorge Macêdo
Linguagem C Estruturas de Controle de Fluxos
Estruturas de Repetição
Linguagem C Estruturas de Seleção.
LINGUAGENS DE PROGRAMAÇÃO PROF. DANIELA PIRES
Aula 6 - Estruturas de Controle
Algoritmo e Programação
BC-0505 Processamento da Informação
PCI- Estrutura Condicional Profa. Mercedes Gonzales Márquez.
Algoritmo e Programação
Profa. Maria Augusta Constante Puget
Profa. Maria Augusta Constante Puget
11 Revisão da Linguagem C Prof. Kariston Pereira Adaptado de Material gentilmente fornecido pelo Prof. Rui Tramontin (DCC/UDESC)
Linguagem de Programação 11 Estruturas de Decisão e Repetição. Prof. Luiz José Hoffmann Filho
ALGORITMOS Profº Antonio Carlos Marcelino de Paula 1.
Algoritmo e Estrutura de Dados I Linguagem C – Comandos if-else-if e Switch Márcia Marra.
Prof. Tertuliano Estrutura Condicional em C++. Sumário „ Estrutura Condicional Simples „ Estrutura Condicional Composta „ Estrutura Condicional Simples.
Linguagens de Programação Conceitos e Técnicas Comandos Prof. Isabel Cafezeiro
Linguagens de Programação Conceitos e Técnicas Expressões Prof. Isabel Cafezeiro
Pseudocódigo É a técnica na construção de algoritmos mais próxima de uma linguagem de programação. Estrutura básica: Algoritmo [Variáveis:, : ] Início.
Linguagem de Programação 11 Estruturas de Decisão e Repetição. Prof. Luiz José Hoffmann Filho
Estruturas de Repetição
Aula 3 - Estruturas de Repetição
Algoritmos e Estruturas de Dados I
Introdução à Computação para Engenharia MAC2166
Grupos de Slides No 7. Prof. SIMÃO
Algoritmo e Estrutura de Dados I
Profa. Mercedes Gonzales Márquez
PCI- Estruturas de Controle
ab LÓGICA DE PROGRAMAÇÃO ab
Estruturas de Repetição
Introdução a Programação
Introdução à Linguagem JavaScript
Estrutura Escolha/caso
Prof. Wellington Franco
FUNDAMENTO DE PROGRAMAÇÃO
Módulo I Capítulo 3: Fluxo de Código e Operador Condicional
Representação de um Algoritmo na Forma de Pseudocódigo
Fundamentos de Programação 1
FUNDAMENTO DE PROGRAMAÇÃO PROF. BRUNO DE CASTRO H. SILVA
FUNDAMENTO DE PROGRAMAÇÃO PROF. BRUNO DE CASTRO H. SILVA
FUNDAMENTO DE PROGRAMAÇÃO
FUNDAMENTO DE PROGRAMAÇÃO PROF. BRUNO DE CASTRO H. SILVA
Algoritmos e Lógica de Programação
Programação de Computadores I – Arquivos
Algoritmos e Técnicas CEFET/RN.
Estruturas de Repetição
Dilvan Moreira (baseado no livro Big Java e T. Munzner)
PROGRAMAÇÃO I UNIDADE 3.
Daniel Paulo SQL Server 2016 Módulo II Daniel Paulo
Algoritmos e Programação I
Tecnologia para Internet - II
Módulo I Capítulo 4: Operador de Repetição
Aula 22 Modularização 22/10/08.
Prof.: Carlos Alberto Algoritmos Prof.: Carlos Alberto
DHD – Desenvolvimento em Hardware
Professora Roberta Bonamichi Guidi Garcia
Linguagem de Programação I
Curso básico de PHP. 1 Vantagens: Gratuito Multiplataforma Estável Rapidez Comunicação.
Laboratório I Mateus Raeder.
Representação de Algoritmos
Programação de Computadores LINGUAGEM C – AULA 03 – PROF. WELLINGTON TELLES.
Programação de Computadores LINGUAGEM C – AULA 05 - PROF. WELLINGTON TELLES.
Introdução a progrmação Comandos condicionais: if e switch
Aula 2 Professores: Conteúdo: Dante Corbucci Filho
Transcrição da apresentação:

Estruturas de Decisão

Sumário Operadores Relacionais e Lógicos; Estruturas de Controles: Comandos if e if-else; Operador Condicional Ternário ? : Comando switch-case.

Operadores Relacionais Os operadores relacionais são os usuais: < menor que; <= menor ou igual a; > maior que; >= maior ou igual a; == igual a; != diferente de;

Operadores Lógicos Os operadores lógicos (booleanos) são os usuais: ! NOT (negação lógica); && AND (e lógico); || OR (ou inclusivo lógico).

Precedências dos Operadores Como as expressões Aritméticas, Relacionais e Lógicas podem ser combinadas, deve estar clara a ordem de precedência dentre os três tipos de operadores. O operador ! é o de maior precedência, a mesma que a do operador menos unário.

Comandos Estruturados São comandos compostos de outros comandos, podendo ser executados sequencialmente, condicionalmente ou repetidamente.

Sequência Sequência finita de instruções onde cada comando é executado uma vez, um após o outro e sem desvios. A sequência é delimitada pelo símbolo { no início e } no final e seus comandos separados pelo delimitador “;” (ponto-e-vírgula). { <comando 1>; <comando 2>; ⁞ <comando n>; }

Estruturas de Controle O C como toda linguagem de programação, possui estruturas que permitem o controle do fluxo de execução de comandos baseadas em tomadas de decisão.

Estruturas de Decisão São comandos que causam o desvio do processamento, permitindo que uma determinada sequência possa ser escolhida para ser executada. Veremos a seguir as seguintes estruturas de decisão: if, if-else e switch-case.

Estrutura if O comando if (se-então) causa um desvio no processamento ao selecionar uma sequência para ser executada. A sequência a ser executada depende do valor lógico da condição utilizada. O comando também pode ser formado pelas cláusulas if-else. Primeiramente será apresentado o comando na sua forma mais simples.

Estrutura if if ( <expressão> ) <sequência>

Estrutura if A sequência de comandos só será executada se a condição (expressão booleana) for verdadeira. Caso contrário será executado o comando seguinte à sequência relacionada ao comando if. A condição deverá ser uma expressão que retorna um valor lógico.

Exemplo 1 #include <stdio.h> int main() { int n; /* Ler um nro inteiro e informar se é negativo, positivo ou nulo */ #include <stdio.h> int main() { int n; printf("Digite um numero: "); scanf("%d", &n); if (n < 0) printf("O número digitado é negativo!\n"); if (n > 0) printf("O número digitado é positivo!\n"); if (n == 0) printf("O número digitado é nulo!\n"); return 0; }

Exemplo 2 /* Ler dois números distintos e imprimi-los ordenados. */ #include <stdio.h> #include <stdlib.h> int main() { int a, b, aux; printf("Digite o primeiro numero: "); scanf("%d", &a); printf("Digite o segundo numero: "); scanf("%d", &b); /*se o primeiro for maior que o segundo inverter os valores*/ if (a > b) { aux = a; a = b; b = aux; } printf("Valores ordenados => %d %d\n", a, b); return 0;

Exemplo 2 O programa lê dois números e ordena o par caso “a” seja maior que “b”. Caso contrário a troca não será executada e o comando seguinte à sequência (printf) será executado.

Estrutura if-else A cláusula opcional else permite a execução de outra sequência de comandos, caso a condição seja falsa.

Estrutura if-else if ( <expressão> ) <sequência 1> else <sequência 2>

Estrutura if-else A sequência 1 de comandos só será executada se a expressão for verdadeira. Se a expressão for falsa, a sequência de comandos relacionada à cláusula else (sequência 2) será executada. Jamais ambas ou nenhuma das sequências de comandos serão executadas.

Exemplo 3 /* Ler dois números distintos e imprimir o maior deles */ #include <stdio.h> #include <stdlib.h> int main() { int a, b; printf("Digite o primeiro numero: "); scanf("%d", &a); printf("Digite o segundo numero: "); scanf("%d", &b); if (a > b) printf("O numero maior e %d\n", a); else printf("O numero maior e %d\n", b); return 0; }

Estruturas de Decisão Aninhados É importante perceber que dentro de uma sequência é possível ter outros comandos de decisão aninhados. if ( <expressão 1> ) <sequência 1> else if ( <expressão 2> ) <sequência 2> else <sequência>

Exemplo 4 #include <stdio.h> #include <stdlib.h> /* Ler um nro inteiro e informar se é negativo, positivo ou nulo */ #include <stdio.h> #include <stdlib.h> int main() { int n; printf("Digite um numero: "); scanf("%d", &n); if (n < 0) printf("O número digitado é negativo!\n"); else if (n > 0) printf("O número digitado é positivo!\n"); else printf("O número digitado é nulo!\n"); return 0; }

Exemplo 6 /* Ler três números inteiros distintos e imprimir o maior */ #include <stdio.h> #include <stdlib.h> int main() { int a, b, c; printf("Digite o primeiro numero: "); scanf("%d", &a); printf("Digite o segundo numero: "); scanf("%d", &b); printf("Digite o terceiro numero: "); scanf("%d", &c); printf("O maior dos 3 é "); if (a > b && a > c) printf("%d\n", a); else if (b > a && b > c) printf("%d\n", b); else if (c > a && c > b) printf("%d\n", c); return 0; }

Operador Condicional Ternário ? : O operador condicional fornece uma maneira compacta de expressar uma simples instrução if-else. Este operador consiste em dois operadores separando a expressão toda em três diferentes expressões e é o único operador ternário em C.

Operador Condicional Ternário ? : Forma geral: <condição> ? <expressão1> : <expressão2> ; A condição consiste em uma expressão lógica avaliada como verdadeira ou falsa. A condição é avaliada e se for verdadeira (diferente de zero) a expressão condicional toda assume o valor da expressão 1, se falsa a expressão assume o valor da expressão 2.

Exemplo max = (num1 > num2) ? num1 : num2; esta expressão é equivalente à construção if-else seguinte, mas bem mais compacta. if (num1 > num2) max = num1; else max = num2;

Exemplo esta expressão é equivalente à construção if-else seguinte: abs = (num < 0) ? -num : num; esta expressão é equivalente à construção if-else seguinte: if (num < 0) abs = -num; else abs = num;

Exemplo #include <stdio.h> #include <stdlib.h> int main () { int x; printf("Digite um numero: "); scanf("%d", &x); (x%2 == 0) ? printf("Par\n") : printf("Impar\n"); return 0; }

Estrutura switch-case O comando if-else permite que seja selecionada uma de duas sequências de ações de acordo com o valor de uma condição. O comando switch-case é uma generalização deste comando. O comando permite que seja executada uma de “várias” ações, dependendo do valor de uma expressão seletora.

Comando switch-case switch ( <seletor> ) { case <valor 1> : <sequência 1> case <valor 2> : <sequência 2> : case <valor N> : <sequência N> default : <sequência> }

Comando switch-case O valor da expressão seletora é comparado com cada elemento da lista de valores. Se existir um valor igual será executada a sequência relacionada ao valor. Caso contrário, ou nenhuma sequência será executada, ou a sequência relacionada à cláusula default será executada, se existir. Pode ser atribuído mais de um valor para a seleção de uma sequência. Por exemplo: case 2: case 3: case 5: <comandos>; break;

Comando switch-case O comando switch avalia a expressão entre parênteses, após a palavra switch, e compara seu valor com os rótulos dos casos. A expressão entre parênteses deve ser um valor inteiro ou caractere. Cada caso deve ser rotulado por uma constante do tipo inteiro ou caractere ou por uma expressão constante. Pode haver uma ou mais instruções seguindo cada case. Estas instruções não devem estar entre chaves. O corpo de um switch deve estar envolto por chaves.

Comando switch-case Se um caso for igual ao valor da expressão, a execução começa nele. Se nenhum caso for satisfeito e existir um caso default: a execução começará nele, senão o programa processará as instruções seguintes ao bloco switch. Um default: é opcional. O comando break causa uma saída imediata do switch. Se não existir um comando break seguindo as instruções de um caso, o programa segue executando todas as instruções dos casos abaixo.

Exemplo 9 /* Ler um número de 1 a 5 e imprimir o valor por extenso */ #include <stdio.h> int main() { int Nro; printf("Digite um numero entre 1 e 5 : "); scanf("%d", &Nro); switch (Nro) case 1 : printf("Um\n"); break; case 2 : printf("Dois\n"); break; case 3 : printf("Tres\n"); break; case 4 : printf("Quatro\n"); break; case 5 : printf("Cinco\n"); break; default: printf("Numero Invalido!\n"); } return 0;

Exemplo 10 /* Ler um número de 1 a 5 e imprimir o valor por extenso */ #include <stdio.h> int main() { int Nro; printf("Digite um numero entre 1 e 5 : "); scanf("%d", &Nro); if (Nro == 1) printf("Um\n"); else if (Nro == 2) printf("Dois\n"); else if (Nro == 3) printf("Tres\n"); else if (Nro == 4) printf("Quatro\n"); else if (Nro == 5) printf("Cinco\n"); else printf("Numero Invalido! \n"); return 0; }

Exemplo 11 /* Ler o número de um mês do ano e informar quantos dias tem o mês */ #include <stdio.h> int main() { int Mes; printf("Digite o Numero do Mes: "); scanf("%d", &Mes); switch (Mes) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: printf("31 dias\n"); break; case 2: printf("28 ou 29 dias\n"); break; case 4: case 6: case 9: case 11: printf("30 dias\n"); break; default: printf("Mês deve estar entre 1 e 12.\n"); } return 0;

if-else x switch-case A condição do comando if-else permite o uso dos operadores lógicos e relacionais, enquanto o switch não o permite; Se dentro de um programa há diferentes sequências a executar, de acordo com valores de uma certa variável, o comando switch torna-se mais apropriado que o comando if-else; O comando switch somente permite a comparação de uma variável com diversos valores do mesmo tipo, enquanto o comando if-else permite uma combinação indefinida de comparação de valores e variáveis do mesmo tipo em uma condição; Valores do Tipo Real não são permitidos no comando switch, devendo-se optar pela estrutura if-else.

Referências MANZANO, José Augusto N. G., Estudo Dirigido: ALGORITMOS - Editora Érica, 2000. Página Prof. Simão: http://www.dainf.ct.utfpr.edu.br/~jeansimao/