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

Documentos relacionados
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

Módulo 3 Controle de Fluxo

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

Linguagem C: Elementos fundamentais

Controle de Fluxo Utilizando C

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

Cap. 2 Expressões na linguagem C

Tópicos de hoje: Cap. 2 Expressões na linguagem C. Bits, Bytes e Palavras. Variáveis e Constantes. Números inteiros num Byte

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

Controle de Fluxo Utilizando C

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

Introdução à Linguagem C Variáveis e Expressões

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

PROGRAMAÇÃO I E N T R A DA E S A Í DA D E DA D O S

Introdução a Programação de Jogos

Controle de Fluxo - Condicionais

controle de fluxo - condicionais

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

Programação de Computadores II. Cap. 7 Cadeias de Caracteres 1/2

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

Introdução a Computação

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

Programação de Computadores II. Cap. 7 Cadeias de Caracteres

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

Aula 2 Comandos de Decisão

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

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

Estruturas da linguagem C. 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões.

Linguagem C (estruturas condicionais)

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

Linguagem C: Introdução

Aula 06: Condicionais (switch)

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

Introdução à Linguagem C

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

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

Modulo 3: Else, Case, For...

C Comandos de Controle

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

Fundamentos de Programação 1

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

Linguagem de Programação C

Sistemas Operacionais e Introdução à Programação. Programação com linguagem C

Introdução à Programação

Entrada. Comando 1 Comando 2. Saída

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

Comandos de entrada. e saída. Comandos de entrada. Comandos de entrada. Comandos de entrada. Comandos de entrada. Comandos de entrada.

Estruturas de Controle em Linguagem C

Algoritmos e Programação

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

COMANDOS DE CONTROLE DE FLUXO. Luís Charneca.

Linguagens de Programação PROGRAMAÇÃO DE COMPUTADORES. Linguagem C. Linguagem C Estrutura Básica. Constante (literais) Linguagem C Primeiro Programa

Linguagem C. André Tavares da Silva.

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

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;

Comandos de Controle do Programa

Comandos de Repetição -Laços

Introdução à Programação

Capítulo 2: Introdução à Linguagem C

Módulo 7 Cadeias de Caracteres

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

Introdução à Programação C

INF 1005 Programação I

Linguagens de Programação I

Programação Estruturada

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

Programação de Computadores II. Cap. 17 Busca

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

3. Linguagem de Programação C

MC-102 Aula 06 Comandos Repetitivos

ECT1203 Linguagem de Programação

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

PROGRAMAÇÃO INSTRUÇÕES DA LINGUAGEM C

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

3.1 - Funções para manipular dados de entrada e saída padrão

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:

Treinamento Olimpíada Brasileira de Informática

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

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.

Linguagem C estruturas de repetição

MC102 Algoritmos e Programação de Computadores

Linguagem de Programação C

Capítulo 4: Condicionais

C Comandos de Controle

REVISÃO DE C. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

Algoritmos e Estruturas de Dados I (AEDI) Introdução - AEDI. Prof. Paulo Henrique Pisani

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

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

Aula 05: Condicionais (if / else)

Linguagem C (repetição)

3. Linguagem de Programação C

Métodos Computacionais. Operadores, Expressões Aritméticas e Entrada/Saída de Dados

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

ponteiros INF Programação I Prof. Roberto Azevedo

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

Estruturas de repetição

INF1005: Programação 1. Condicionais. 08/03/10 (c) Rogério Rodrigues 1

Computação 2. Aula 1. Profª. Fabiany Estruturas básicas de programação.

Transcrição:

Programação de Computadores II Cap. 3 Entrada e Saída e Controle de Fluxo Livro: Waldemar Celes, Renato Cerqueira, José Lucas Rangel. Introdução a Estruturas de Dados, Editora Campus (2004) Slides adaptados dos originais dos profs.: Marco Antonio Casanova e Marcelo Gattass (PUC-Rio) 17/03/2011 1

Tópicos Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora Campus (2004) Capítulo 2 I/O Capítulo 3 Controle de fluxo Entrada e saída: printf e scanf Tomada de decisão: if e? Construções com laços: while, for, do Seleção: switch Interruptores: break e continue 17/03/2011 2

Entrada e Saída Função printf : possibilita a saída de valores segundo um determinado formato printf (formato, lista de constantes/variáveis/expressões...); printf ("%d %g", 33, 5.3); tem como resultado a impressão da linha: 33 5.3 printf ("Inteiro = %d Real = %g", 33, 5.3); com saída: Inteiro = 33 Real = 5.3 17/03/2011 3

Entrada e Saída Especificação de formato: %c especifica um char %d especifica um int %u especifica um unsigned int %f especifica um double (ou float) %e especifica um double (ou float) no formato científico %g especifica um double (ou float) no formato mais apropriado (%f ou %e) %s especifica uma cadeia de caracteres 17/03/2011 4

Entrada e Saída Especificação de tamanho de campo: %4d 3 3 4 %7.2f 5. 3 0 2 7 17/03/2011 5

Entrada e Saída Impressão de texto: printf("curso de Estruturas de Dados\n"); exibe na tela a mensagem: Curso de Estruturas de Dados 17/03/2011 6

Entrada e Saída Função scanf : captura valores fornecidos via teclado scanf (formato, lista de endereços das variáveis...); int n; scanf ("%d", &n); valor inteiro digitado pelo usuário é armazenado na variável n 17/03/2011 7

Entrada e Saída Especificação de formato: %c especifica um char %d especifica um int %u especifica um unsigned int %f,%e,%g especificam um float %lf, %le, %lg especificam um double %s especifica uma cadeia de caracteres 17/03/2011 8

Entrada e Saída Função scanf (cont.): caracteres diferentes dos especificadores no formato servem para cercar a entrada espaço em branco dentro do formato faz com que sejam "pulados" eventuais brancos da entrada %d, %f, %e e %g automaticamente pulam os brancos que precederem os valores numéricos a serem capturados scanf ("%d:%d", &h, &m); valores (inteiros) fornecidos devem ser separados pelo caractere dois pontos (:) 17/03/2011 9

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 17/03/2011 10

/* nota */ #include <stdio.h> Exemplo int main (void) float nota ; printf("digite sua nota: "); scanf("%f", &nota); if (nota >= 7 ) printf(" Boa nota, parabens! \n"); else printf(" Voce precisa melhorar. \n"); return 0; 17/03/2011 11

/* nota */ #include <stdio.h> Exemplo int main (void) float nota ; printf("digite sua nota: "); scanf("%f", &nota); if (nota >= 7 ) printf(" Boa nota, parabens! \n"); else printf(" Voce precisa melhorar. \n"); return 0; 17/03/2011 12

Bloco de comandos comando1; comando2;... ou comando; 17/03/2011 13

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 17/03/2011 14

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; Em C, um else está associado ao último if que não tiver seu próprio else. 17/03/2011 15

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; 17/03/2011 16

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; 17/03/2011 17

/* 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; 17/03/2011 18

/* 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; 17/03/2011 19

/* 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; 17/03/2011 20

/* 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; 17/03/2011 21

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 */ 17/03/2011 22

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 ) else maximo = a; maximo = b; 17/03/2011 23

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 17/03/2011 24

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 fatorial = 1 faça enquanto k n fatorial = fatorial * k incremente k 17/03/2011 25

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 17/03/2011 26

/* Fatorial */ #include <stdio.h> int main (void) int i; int n; long int f = 1; printf("digite um numero inteiro nao negativo:"); scanf("%d", &n); /* calcula fatorial */ i = 1; while (i <= n) f = f * i; /* equivalente a f *= i */ i = i + 1; /* equivalente a i++ */ printf(" Fatorial = %d \n", f); return 0; 17/03/2011 27

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 17/03/2011 28

/* Fatorial (versao 2) */ #include <stdio.h> int main (void) int i; int n; int f = 1; printf("digite um numero inteiro nao negativo:"); scanf("%d", &n); /* calcula fatorial */ for (i = 1; i <= n; i=i+1) f = f * i; printf(" Fatorial = %d \n", f); return 0; 17/03/2011 29

/* Fatorial (versao 2) */ #include <stdio.h> int main (void) int i; int n; int f = 1; printf("digite um numero inteiro nao negativo:"); scanf("%d", &n); /* calcula fatorial */ for (i = 1; i <= n; i+1) /* o que acontece com este programa? */ f = f * i; printf(" Fatorial = %d \n", f); return 0; 17/03/2011 30

Construções com laços Comando do-while : teste de encerramento é avaliado no final do bloco de comandos while (expr); 17/03/2011 31

/* Fatorial (versao 3) */ #include <stdio.h> int main (void) int i; int n; int f = 1; /* requisita valor 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 (i = 1; i <= n; i++) f *= i; printf(" Fatorial = %d\n", f); return 0; 17/03/2011 32

/* Fatorial (versao 4) */ #include <stdio.h> int main (void) int i; int n; int f = 1; /* O que faz este programa? */ do printf("digite um valor inteiro nao negativo:"); scanf ("%d", &n); /* calcula fatorial */ for (i = 1; i <= n; i++) f *= i; printf(" Fatorial = %d\n", f); while (n>=0); return 0; 17/03/2011 33

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 17/03/2011 34

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 17/03/2011 35

Construções com laços Interrupção de laços - Comando continue : deve-se ter cuidado para 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 17/03/2011 36

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; 17/03/2011 37

/* 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; 17/03/2011 38