Módulo 3 Controle de Fluxo

Documentos relacionados
Cap. 3 Entrada e Saída e Controle de Fluxo

Tópicos Cap. 3 Entrada e Saída e Controle de Fluxo Livro printf e scanf if e? while for switch break continue Entrada e Saída Entrada e Saída

INF1007: Programação 2. 0 Revisão. 06/08/2015 (c) Dept. de Informática - PUC-Rio 1

Controle de Fluxo Utilizando C

Linguagem C: Elementos fundamentais

Controle de Fluxo Utilizando C

Controle de Fluxo - Condicionais. INF1005 Programação I Profa. Simone D.J. Barbosa sala 410 RDC

Controle de Fluxo - Condicionais

controle de fluxo - condicionais

Programação de Computadores II. Cap. 4 Funções

Programação de Computadores II. Cap. 5 Vetores

Estruturas de Dados. Módulo 4 Funções. 9/8/2005 (c) Dept. Informática - PUC-Rio 1

Introdução à Programação. Expressões Booleanas e Comandos Condicionais

Métodos Computacionais. Comandos Condicionais e de Repetição em C

Operadores. A linguagem C é muito rica em operadores internos. Ela define quatro classes de operadores:

LÓGICA DE PROGRAMAÇÃO. PROFª. M.Sc. JULIANA H Q BENACCHIO

Modulo 3: Else, Case, For...

Linguagem C. Prof.ª Márcia Jani Cícero

Linguagem C (estruturas condicionais)

GFM015 Introdução à Computação Algoritmos e Programação / Controle de Fluxo / Estutura Condicional

Introdução à Programação SCC-121

Exercícios Capítulos 5 e 6

Linguagem de Programação C

COMANDOS DE CONTROLE DE FLUXO. Luís Charneca.

Linguagem C estruturas de repetição

Aula 06: Condicionais (switch)

C Comandos de Controle

Linguagem de Programação C. Comandos de Seleção e Desvio

Aula 2 Comandos de Decisão

Entrada. Comando 1 Comando 2. Saída

Estruturas de Controle em Linguagem C

Comandos de Controle do Programa

Parte 1. Programação (linguagem C) Introdução Geral

Algoritmos e Técnicas de Programação. Professora: Luciana Faria

Aula 14: Estruturas de Seleção e Controle em C

SSC304 Introdução à Programação Para Engenharias. Controle de Fluxo. GE4 Bio

Introdução à Programação I

Introdução à Programação. Estruturas de Repetição

Comandos de Repetição -Laços

Declarações. C diferencia letras maiúsculas de minúsculas! int n, N; n é diferente de N!

Lógica de Programação I

Linguagem C (repetição)

Capítulo 1: Introdução à Linguagem C. Pontifícia Universidade Católica Departamento de Informática

O comando for permite que um certo trecho de programa seja executado um determinado número de vezes. A forma do comando for é a seguinte:

15/03/2018. Professor Ariel da Silva Dias Paradigma Imperativo

controle de fluxo repetições iterativas

5 - COMANDOS DE CONTROLE DE PROGRAMA Em C existem os comandos de decisões, os comandos de iteração (ou de laços) e os comandos de desvios.

Técnicas de Programação: Comandos de Controle de DEE UFPB

COMANDOS DE DECISÕES. O COMANDO if. O comando if instrui o computador a tomar uma decisão simples. Forma Geral: if (expressão de teste) instrução;

ICMC USP. 1.semestre/2011 SCC120 - ICC. Aula: Comandos em C. Profa. Roseli Ap. Francelin Romero

Programação Estruturada Aula - Estruturas de Repetição

Introdução à Linguagem C++

CURSO SUPERIOR DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS DISCIPLINA : INTRODUÇÃO À LÓGICA DE PROGRAMAÇÃO ASSUNTO: C

PROGRAMAÇÃO INSTRUÇÕES DA LINGUAGEM C

Introdução à Programação

C Comandos de Controle

Programação de Computadores I Funções de Repetição da Linguagem C PROFESSORA CINTIA CAETANO

Fundamentos de Programação 1

Programação de Computadores I Introdução ao C PROFESSORA CINTIA CAETANO

Algoritmos e Programação

Linguagem C. André Tavares da Silva.

Comandos de decisão. Tiago Alves de Oliveira. Adaptado de slides das Profas. Patrícia Jaques, Mônica Py e Deise Sacol

Aula 6 Oficina de Programação Estruturas Condicionais no C. Profa. Elaine Faria UFU

Estruturas de Repetição

LÓGICA DE PROGRAMAÇÃO. PROFª. M.Sc. JULIANA H Q BENACCHIO

INF 1007 Programação II

ESTRUTURAS CONDICIONAIS. Baseado nos slides de autoria de Rosely Sanches e Simone Senger de Souza

Introdução à Programação

Controlo de Execução. K&R: Capitulo 3

Aula 02 -Introdução àlinguagc Programação: Estrutura-Seleção. OPL e IC1 Prof: Anilton Joaquim da Silva

Suponha um conjunto habitacional, com várias famílias... imagina se todas elas morassem em uma única casa?

MC-102 Aula 06 Comandos Repetitivos

Estruturas de Dados. Módulo 2 Expressões. 9/8/2005 (c) Marco A. Casanova - PUC-Rio 1

Computação 2. Diego Addan Aula 3. Funções

Hello World. Linguagem C. Tipos de Dados. Palavras Reservadas. Operadores Aritméticos. Pré e pós incremento e pré e pós decremento

3. Linguagem de Programação C

Estrutura do programa

CONTROLE DE FLUXO. Algoritmos e Programação. Prof. Alceu Britto Slides cedidos pelo Prof. Edson J. R. Justino (PUCPR) Aula 9 e 10

MC102 Algoritmos e Programação de Computadores

Estruturas de Repetição

ESTRUTURAS CONDICIONAIS. Introdução à Ciência da ComputaçãoI Simone Senger de Souza

Introdução à Linguagem C

Estruturas de Dados. Módulo 11 Pilhas. 9/8/2005 (c) Dept. Informática - PUC-Rio 1

Faculdade Anglo-Americano Curso de Ciência da Computação Linguagem de Programação. Lista de Exercícios 1

Estruturas de Controle

Introdução à Programação em C

Linguagem C Controle do Fluxo de Execução. Lógica de Programação

Aula 01. Programação Condicional Programação repetitiva

Capítulo 2: Condicionais. Pontifícia Universidade Católica Departamento de Informática

Programação Estruturada

Comando Switch. Embora a escada if else-if possa executar testes de várias maneiras, ela não é de maneira nenhuma elegante.

Modulo 4: while do while (limites de variáveis)

Capítulo 4: Condicionais

Revisão para Prova 2. Mirella M. Moro

Seleção Múltipla Laços (while, do-while, for) AULA 05

Treinamento Olimpíada Brasileira de Informática

Aula 03 -Introdução àlinguagc Programação: Estrutura-Repetição. OPL e IC1 Prof: Anilton Joaquim da Silva

Disciplina de Introdução à Ciência da Computação ICC 1 - Teoria

Linguagem C. Linguagem artificial e formal usada para comunicar instruções ao computador. Proposta por Dennis Ritchie entre 1969 e 1973.

Transcrição:

Estruturas de Dados Módulo 3 Controle de Fluxo 16/8/2005 (c) Marco A. Casanova - PUC-Rio 1

Referências Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora Campus (2004) Capítulo 3 Controle de fluxo 16/8/2005 (c) Marco A. Casanova - PUC-Rio 2

Tópicos Tomada de decisão Construções com laços Seleção 16/8/2005 (c) Marco A. Casanova - PUC-Rio 3

Tomada de Decisão Exemplo: função para qualificar a temperatura: se a temperatura for menor do que 20 o C, então está frio se a temperatura estiver entre 20 o C e 30 o C, então está agradável se a temperatura for maior do que 30 o C, então está quente 16/8/2005 (c) Marco A. Casanova - PUC-Rio 4

Tomada de Decisão Comando if : comando básico para codificar tomada de decisão se expr for verdadeira ( 0), executa o bloco de comandos 1 se expr for falsa (= 0), executa o bloco de comandos 2 if ( expr ) bloco de comandos 1 else bloco de comandos 2 ou if ( expr ) bloco de comandos 16/8/2005 (c) Marco A. Casanova - PUC-Rio 5

Tomada de Decisão /* temperatura (versao 1 - incorreta) */ #include <stdio.h> int main (void) int temp; printf("digite a temperatura: "); scanf("%d", &temp); if (temp < 30) if (temp > 20) printf(" Temperatura agradável \n"); else printf(" Temperatura quente \n"); return 0; 16/8/2005 (c) Marco A. Casanova - PUC-Rio 6

Tomada de Decisão /* temperatura (versao 1 - incorreta) */ #include <stdio.h> int main (void) int temp; printf("digite a temperatura: "); scanf("%d", &temp); if (temp < 30) if (temp > 20) printf(" Temperatura agradável \n"); else printf(" Temperatura quente \n"); return 0; 16/8/2005 (c) Marco A. Casanova - PUC-Rio 7

Tomada de Decisão /* temperatura (versao 2) */ #include <stdio.h> int main (void) int temp; printf ( "Digite a temperatura: " ); scanf ( "%d", &temp ); if ( temp < 30 ) if ( temp > 20 ) printf ( " Temperatura agradável \n" ); else printf ( " Temperatura quente \n" ); return 0; 16/8/2005 (c) Marco A. Casanova - PUC-Rio 8

/* temperatura (versao 3) */ #include <stdio.h> int main (void) int temp; printf("digite a temperatura: "); scanf("%d", &temp); if (temp < 10) printf("temperatura muito fria \n"); else if (temp < 20) printf(" Temperatura fria \n"); else if (temp < 30) printf("temperatura agradável \n"); else printf("temperatura quente \n"); return 0; 16/8/2005 (c) Marco A. Casanova - PUC-Rio 9

/* temperatura (versao 3) */ #include <stdio.h> int main (void) int temp; printf("digite a temperatura: "); scanf("%d", &temp); if (temp < 10) printf("temperatura muito fria \n"); else if (temp < 20) printf(" Temperatura fria \n"); else if (temp < 30) printf("temperatura agradável \n"); else printf("temperatura quente \n"); return 0; 16/8/2005 (c) Marco A. Casanova - PUC-Rio 10

Tomada de Decisão Estrutura de bloco: declaração de variáveis: só podem ocorrer no início do corpo da função ou de um bloco (esta restrição não existe no C99) escopo de uma variável: uma variável declarada dentro de um bloco é válida no bloco após o término do bloco, a variável deixa de existir if ( n > 0 ) int i;...... /* a variável i não existe neste ponto do programa */ 16/8/2005 (c) Marco A. Casanova - PUC-Rio 11

Tomada de Decisão Operador condicional: formato geral: se a condição for verdadeira, a expressão1 é avaliada; caso contrário, a expressão2 é avaliada exemplo: condição? expressão1 : expressão2; comando maximo = a > b? a : b ; comando if equivalente if ( a > b ) maximo = a; else maximo = b; 16/8/2005 (c) Marco A. Casanova - PUC-Rio 12

Construções com laços Exemplo: fatorial de um número inteiro não negativo: n! = n ( n onde : 0! = 1 1) ( n 2)...3 2 1 16/8/2005 (c) Marco A. Casanova - PUC-Rio 13

Construções com laços Exemplo: definição recursiva da função fatorial: Ν Ν fatorial(0) = 1 fatorial(n) = n x fatorial(n-1) cálculo não recursivo de fatorial(n) comece com: k = 1 f = 1 faça enquanto k n f = f * k incremente k 16/8/2005 (c) Marco A. Casanova - PUC-Rio 14

Construções com laços Comando while : enquanto expr for verdadeira, o bloco de comandos é executado quando expr for falsa, o comando termina while ( expr ) bloco de comandos 16/8/2005 (c) Marco A. Casanova - PUC-Rio 15

/* Fatorial */ #include <stdio.h> int main (void) int k; int n; long int f = 1; printf("digite um numero inteiro nao negativo:"); scanf("%d", &n); /* calcula fatorial */ k = 1; while (k <= n) f = f * k; /* a expressão f = f * i é equivalente a f *= k */ k = k + 1; /* a expressão k = k + 1 é equivalente a k++ */ printf(" Fatorial = %d \n", f); return 0; 16/8/2005 (c) Marco A. Casanova - PUC-Rio 16

Construções com laços Exercício: 1. Implemente o programa para calcular fatorial. 2. Execute-o para 5, 10 e 20. 3. Explique o comportamento do programa. 16/8/2005 (c) Marco A. Casanova - PUC-Rio 17

Construções com laços Comando for : forma compacta para exprimir laços for (expressão_inicial; expressão_booleana; expressão_de_incremento) bloco de comandos equivalente a: expressão_inicial; while ( expressão_booleana ) bloco de comandos... expressão_de_incremento 16/8/2005 (c) Marco A. Casanova - PUC-Rio 18

/* Fatorial (versao 2) */ #include <stdio.h> int main (void) int k; int n; int f = 1; printf("digite um numero inteiro nao negativo:"); scanf("%d", &n); /* calcula fatorial */ for (k = 1; k <= n; k=k+1) /* a expressão k = k + 1 é equivalente a i++ */ f = f * k; /* a expressão f = f * k é equivalente a f *= k */ printf(" Fatorial = %d \n", f); return 0; 16/8/2005 (c) Marco A. Casanova - PUC-Rio 19

/* Fatorial (versao 2) */ #include <stdio.h> int main (void) int k; int n; int f = 1; printf("digite um numero inteiro nao negativo:"); scanf("%d", &n); /* calcula fatorial */ for (k = 1; k <= n; k+1) /* o que acontece com este programa? */ f = f * k; printf(" Fatorial = %d \n", f); return 0; 16/8/2005 (c) Marco A. Casanova - PUC-Rio 20

Construções com laços Comando do-while : teste de encerramento é avaliado no final do bloco de comandos while (expr); 16/8/2005 (c) Marco A. Casanova - PUC-Rio 21

/* Fatorial (versao 3) */ #include <stdio.h> int main (void) int k; int n; int f = 1; /* requisita valor do usuário até um número não negativo ser informado */ do printf("digite um valor inteiro nao negativo:"); scanf ("%d", &n); while (n<0); /* calcula fatorial */ for (k = 1; k <= n; k++) f *= k; printf(" Fatorial = %d\n", f); return 0; 16/8/2005 (c) Marco A. Casanova - PUC-Rio 22

/* Fatorial (versao 4) */ #include <stdio.h> int main (void) int k; int n; int f = 1; /* O que faz este programa? */ do printf("digite um valor inteiro nao negativo:"); scanf ("%d", &n); /* calcula fatorial */ for (k = 1; k <= n; k++) f *= k; printf(" Fatorial = %d\n", f); while (n>=0); return 0; 16/8/2005 (c) Marco A. Casanova - PUC-Rio 23

Construções com laços Interrupção de laços - Comando break : termina a execução do comando de laço #include <stdio.h> int main (void) int i; for (i = 0; i < 10; i++) if (i == 5) break; printf("%d ", i); printf("fim\n"); return 0; A saída deste programa, se executado, será: 0 1 2 3 4 fim 16/8/2005 (c) Marco A. Casanova - PUC-Rio 24

Construções com laços Interrupção de laços - Comando continue : termina a iteração corrente e passa para a próxima #include <stdio.h> int main (void) int i; for (i = 0; i < 10; i++ ) if (i == 5) continue; printf("%d ", i); printf("fim\n"); return 0; gera a saída: 0 1 2 3 4 X5 6 7 8 9 fim 16/8/2005 (c) Marco A. Casanova - PUC-Rio 25

Construções com laços Interrupção de laços - Comando continue : deve-se ter cuidado para não criar uma iteração eterno /* INCORRETO */ #include <stdio.h> int main (void) int i = 0; while (i < 10) if (i == 5) continue; printf("%d ", i); i++; printf("fim\n"); return 0; cria iteração eterna pois i não será mais incrementado quando chegar a 5 16/8/2005 (c) Marco A. Casanova - PUC-Rio 26

Construções com laços Comando switch : seleciona uma entre vários casos ( op k deve ser um inteiro ou caractere) switch ( expr ) case op1: bloco de comandos 1; break; case op2: bloco de comandos 2; break;... default: bloco de comandos default; break; 16/8/2005 (c) Marco A. Casanova - PUC-Rio 27

/* calculadora de quatro operações */ #include <stdio.h> int main (void) float num1, num2; char op; printf("digite: numero op numero\n"); scanf ("%f %c %f", &num1, &op, &num2); switch (op) case '+': printf(" = %f\n", num1+num2); break; case '-': printf(" = %f\n", num1-num2); break; case '*': printf(" = %f\n", num1*num2); break; case '/': printf(" = %f\n", num1/num2); break; default: printf("operador invalido!\n"); break; return 0; 16/8/2005 (c) Marco A. Casanova - PUC-Rio 28

Resumo if ( expr ) bloco de comandos else bloco de comandos condição? expressão1 : expressão2; while (expr) bloco de comandos for ( expr_inicial; expr_booleana; expr_de_incremento) bloco de comandos do bloco de comandos while ( expr ); switch ( expr ) case op1: bloco de comandos 1; break; case op2: bloco de comandos 2; break;... default: bloco de comandos default; break; 16/8/2005 (c) Marco A. Casanova - PUC-Rio 29