Elementos de programação em C



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

Programação: Estruturas de seleção

LINGUAGEM C. Estrutura básica de um programa

compreender a importância de cada estrutura de controle disponível na Linguagem C;

A linguagem C oferece quatro estruturas de decisão: if, if-else, switch e o operador condicional.

9 Comandos condicionais

7. Estrutura de Decisão

Algoritmos e Programação

Prof. Vania Gimenez.Notas de aula Lógica de programação- Este material não substitui os livros indicados no site no link bibliografia.

Convertendo Algoritmos para a Linguagem C

Programando em C++ Histórico da Linguagem C

Apresentar os conceitos básicos e as estruturas de linguagem relacionadas à tomada de decisão ofertadas pela linguagem C, tais como:

O comando switch. c Professores de ALPRO I 04/2012. Faculdade de Informática PUCRS. ALPRO I (FACIN) O comando switch 04/ / 31

Programação científica C++

Programação. MEAer. Bertinho Andrade da Costa. Instituto Superior Técnico. Introdução ao Pré-Processador. 2011/2012 1º Semestre

INTRODUÇÃO À LINGUAGEM C++

Instruções condicionais. Instruções de repetição. Programa simples. Se fizeres barulho então apanhas um estalo!!!! Se condição então acção.

Estrutura Condicional em Java

Estruturas de Controle em PHP

Introdução à Programação. Armazenamento de Grande Quantidade de Informação Usando Vetores

Estrutura switch if-else switch switch switch if-else-if switch switch case default break switch switch break Observações: case

Elementos de programação em C

PROGRAMAÇÃO FUNÇÕES NA LINGUAGEM C

José Romildo Malaquias

Conceitos básicos da linguagem C

Linguagem C: Estruturas de Controle. Prof. Leonardo Barreto Campos 1

Operadores unários de incremento/decremento. Ciclo for

5 Apresentando a linguagem C

P r o g r a m a ç ã o d e C o m p u t a d o r e s 1 o S e m P r o f. A n d r é A m a r a n t e L u i z L A B 5 tag %2d while printf PE1:

INF 1007 Programação II

O COMPUTADOR. Introdução à Computação

14.1 Vetor - Problemas

Linguagem C Funções definidas pelo usuário. Lógica de Programação

Comandos If-else. Unesp Campus de Guaratinguetá. Curso de Programação Computadores Prof. Aníbal Tavares Profa. Cassilda Ribeiro. 5.

Introdução à Programação

Algoritmos e Estruturas de Dados I. Universidade Federal de São João del-rei Pedro Mitsuo Shiroma Sala 119 Bloco 3

Programação Engenharia Informática (11543) 1º ano, 1º semestre Tecnologias e Sistemas de Informação (6619) 1º ano, 1º semestre

Tabela ASCII de caracteres de controle

Q1 Q2 Q3 Nota. Departamento de Informática - PUC-Rio INF 1005 Programação I P2 20/10/2010. Aluno: Exemplo (apenas um exemplo!):

Linguagem C. TGSI Lógica de Programação / Linguagem C Prof. Marcos Roberto

Computadores Digitais 2. Prof. Rodrigo de Souza Couto

Variáveis e Comandos de Atribuição

Curso C: Controle de Fluxo

Comandos de repetição while

Programação Estruturada e Orientada a Objetos REVISÃO

LTP-IV. Prof. Dr. Silvio do Lago Pereira. Departamento de Tecnologia da Informação Faculdade de Tecnologia de São Paulo

9.1.2 Laços Controlados por Entrada: Contador

Programação Orientada a Objectos - P. Prata, P. Fazendeiro. Cartão de fidelização de clientes das distribuidoras de combustível.

Estrutura Condicional C++

Java Como Programar, 8/E

Exercícios de Revisão Java Básico

insfcanceof new public switch transient while byte continue extends for int null

Linguagem de Programação I

17 - Funções e Procedimentos em C Programação Modular

Expressões. Prof. Alberto Costa Neto Linguagens de Programação. Departamento de Computação Universidade Federal de Sergipe

Elementos de programação em C

Listas (Parte 2) Túlio Toffolo BCC202 Aula 10 Algoritmos e Estruturas de Dados I

Estrutura de Dados. Prof. Gustavo Willam Pereira. Créditos: Profa. Juliana Pinheiro Campos

INFORMÁTICA E COMPUTAÇÃO CMP 1060 CONTROLE DE FLUXO ESTRUTURA CONDICIONAL 1

Introdução a Programação. Ponteiros e Strings, Alocação Dinâmica

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

Linguagem C estruturas de repetição

Linguagem C. Programação Estruturada. Fundamentos da Linguagem. Prof. Luis Nícolas de Amorim Trigo

Aula 06 - Funções. O que é uma Função - Comando return - Protótipos de Funções - Tipos de Funções - Escopo de Variáveis - Passagem de parâmetros

UNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 6 Filas

Exercícios práticos - Folha 3

Programação por Objectos. Java

3. INTRODUÇÃO À LINGUAGEM C 3.1. CONCEITOS BÁSICOS. Lógica de Programação

Linguagem C: variáveis, operadores, entrada/saída. Prof. Críston Algoritmos e Programação

Estruturas de entrada e saída

GFM015 Introdução à Computação Linguagem C / Introdução à Modularização de Programas (uso de subprogramas)

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

A Pilha. Aula 02. DPEE 1038 Estrutura de Dados para Automação Curso de Engenharia de Controle e Automação Universidade Federal de Santa Maria

Sintaxe Geral Tipos de Dados. Prof. Angelo Augusto Frozza, M.Sc.

Programação I. Departamento de Engenharia Rural Centro de Ciências Agrárias

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

Desenvolvimento OO com Java Orientação a objetos básica

cast poderia ser usado também para transformar um real (float) em inteiro. A sintaxe C (float)i pode ser substituída em C++ por float(i).

Testando e Comparando Valores

Linguagem C (estruturas condicionais)

1 - INTRODUÇÃO: O QUE É C?

Estruturas de repetição (Ciclos)

PROGRAMA DE DISCIPLINA

Algoritmo Iterativo. Dilema do Martelo x Edifício. O Martelo. O Edifício 01/06/2014. Dilema das ações x declarações

Programação Estruturada I

Técnicas de Programação I

Programação com Posix Threads

Transcrição:

Elementos de programação em C Estruturas condicionais Francisco A. C. Pinheiro, Elementos de Programação em C, Bookman, 2012. Visite os sítios do livro para obter material adicional: www.bookman.com.br e www.facp.pro.br/livroc ( ) Elementos de programação em C 1 / 17

Sumário 1 Comando if 2 Comando switch 3 Obrigações de prova 4 Manutenibilidade 5 Bibliografia ( ) Elementos de programação em C 2 / 17

Comando if Comando if ComandoIf ::= if ( Condição ) CláusulaEntão [ else CláusulaSenão ] Condição ::= Expressão do tipo escalar resultando em um valor verdadeiro (diferente de 0) ou falso (igual a 0). CláusulaEntão ::= BlocoInstr CláusulaSenão ::= BlocoInstr BlocoInstr ::= Bloco Instrução Bloco ::= { { Instrução Instrução ::= DeclVarLocal Comando ( ) Elementos de programação em C 3 / 17

Comando if Sem cláusula-senão Comando if sem cláusula-senão if ( Condição ) CláusulaEntão Exemplo # include <stdio.h> int main ( void ) { int a; scanf ("% d", &a); if (a > 30) { printf ("% d maior que 30\ n", a); a = a - 30; printf ("% d menor ou igual a 30\ n", a); return 0; ( ) Elementos de programação em C 4 / 17

Comando if Sem cláusula-senão Comando if sem cláusula-senão if ( Condição ) CláusulaEntão Exemplo # include <stdio.h> int main ( void ) { int a; scanf ("% d", &a); if (a > 30) { printf ("% d maior que 30\ n", a); a = a - 30; printf ("% d menor ou igual a 30\ n", a); return 0; O que é impresso pelo programa ao lado, se for lido o número 38? ( ) Elementos de programação em C 4 / 17

Comando if Sem cláusula-senão Comando if sem cláusula-senão if ( Condição ) CláusulaEntão Exemplo # include <stdio.h> int main ( void ) { int a; scanf ("% d", &a); if (a > 30) { printf ("% d maior que 30\ n", a); a = a - 30; printf ("% d menor ou igual a 30\ n", a); return 0; O que é impresso pelo programa ao lado, se for lido o número 38? Resposta: 38 maior que 30 8 menor ou igual a 30 ( ) Elementos de programação em C 4 / 17

Comando if Sem cláusula-senão Comando if sem cláusula-senão Exemplo O que é impresso pelo programa ao lado, se for lido o número 38? # include <stdio.h> int main ( void ) { int a; scanf ("% d", &a); if (a > 30) printf ("% d maior que 30\ n", a); printf ("% d menor ou igual a 30\ n", a); return 0; ( ) Elementos de programação em C 5 / 17

Comando if Sem cláusula-senão Comando if sem cláusula-senão Exemplo O que é impresso pelo programa ao lado, se for lido o número 38? Resposta: 38 maior que 30 38 menor ou igual a 30 # include <stdio.h> int main ( void ) { int a; scanf ("% d", &a); if (a > 30) printf ("% d maior que 30\ n", a); printf ("% d menor ou igual a 30\ n", a); return 0; ( ) Elementos de programação em C 5 / 17

Comando if Com cláusula-senão Comando if com cláusula-senão if ( Condição ) CláusulaEntão else ClásulaSenão Exemplo # include <stdio.h> int main ( void ) { int a; scanf ("% d", &a); if (a > 30) printf (" maior que 30\ n "); else printf (" menor ou igual a 30\ n "); printf (" fim "); return 0; ( ) Elementos de programação em C 6 / 17

Comando if Com cláusula-senão Comando if com cláusula-senão if ( Condição ) CláusulaEntão else ClásulaSenão Exemplo # include <stdio.h> int main ( void ) { int a; scanf ("% d", &a); if (a > 30) printf (" maior que 30\ n "); else printf (" menor ou igual a 30\ n "); printf (" fim "); return 0; O que é impresso pelo programa ao lado, se o número lido for a) maior que 30? b) menor ou igual a 30? ( ) Elementos de programação em C 6 / 17

Comando if Com cláusula-senão Comando if com cláusula-senão if ( Condição ) CláusulaEntão else ClásulaSenão Exemplo # include <stdio.h> int main ( void ) { int a; scanf ("% d", &a); if (a > 30) printf (" maior que 30\ n "); else printf (" menor ou igual a 30\ n "); printf (" fim "); return 0; Resposta: a é maior que 30 a é menor ou igual a 30 maior que 30 menor ou igual a 30 fim fim O que é impresso pelo programa ao lado, se o número lido for a) maior que 30? b) menor ou igual a 30? ( ) Elementos de programação em C 6 / 17

Comando if Comandos aninhados Comandos if aninhados Exemplo # include <stdio.h> int main ( void ) { int num, val, taxa ; scanf ("% d", & num ); scanf ("% d", & val ); scanf ("% d", & taxa ); if ( num > val ) { printf (" 1 "); printf (" 2 "); else { if ( val > taxa ) printf (" 3 "); printf (" 4 "); printf (" 5\n"); return 0; ( ) Elementos de programação em C 7 / 17

Comando if Comandos aninhados Comandos if aninhados Exemplo # include <stdio.h> int main ( void ) { int num, val, taxa ; scanf ("% d", & num ); scanf ("% d", & val ); scanf ("% d", & taxa ); if ( num > val ) { printf (" 1 "); printf (" 2 "); else { if ( val > taxa ) printf (" 3 "); printf (" 4 "); printf (" 5\n"); return 0; O que é impresso pelo programa ao lado, se a) num for maior que val? b) num for menor ou igual a val e val for maior que taxa? c) num for menor ou igual a val e val for menor ou igual a taxa? ( ) Elementos de programação em C 7 / 17

Comando if Comandos aninhados Comandos if aninhados Exemplo # include <stdio.h> int main ( void ) { int num, val, taxa ; scanf ("% d", & num ); scanf ("% d", & val ); scanf ("% d", & taxa ); if ( num > val ) { printf (" 1 "); printf (" 2 "); else { if ( val > taxa ) printf (" 3 "); printf (" 4 "); printf (" 5\n"); return 0; O que é impresso pelo programa ao lado, se a) num for maior que val? b) num for menor ou igual a val e val for maior que taxa? c) num for menor ou igual a val e val for menor ou igual a taxa? Resposta: a) 1 2 5 b) 3 4 5 c) 4 5 ( ) Elementos de programação em C 7 / 17

Comando if Cláusulas vazias Comando if cláusulas vazias if (a > 5) { if (a > 23) ; if (a < 12) { else ; O uso de cláusulas vazias pode ser justificado para melhorar a legibilidade, tornando explícito que nada deve ser executado em certas situações. ( ) Elementos de programação em C 8 / 17

Comando switch Comando switch ComandoSwitch ::= switch ( ExprInt ) CorpoSwitch CorpoSwitch ::= BlocoInstr CláusulaSwitch { { CláusulaSwitch CláusulaSwitch ::= RótuloSwitch { BlocoInstr RótuloSwitch ::= case ExprCteInt : default : ExprInt ExprCteInt ::= Expressão de um tipo inteiro. ::= Expressão constante de um tipo inteiro. ( ) Elementos de programação em C 9 / 17

Comando switch Comando switch switch (a * 2) { case 14: case 8: x = 3 - a; case 4: x = a; default: x = 0; Avaliação Comparação Transferência Finalização ( ) Elementos de programação em C 10 / 17

Comando switch Comando switch swicth (a * 2) { case 14: case 8: x = 3 - a; case 4: x = a; default: x = 0; Avaliação Avalia a expressão. Comparação Transferência Finalização ( ) Elementos de programação em C 10 / 17

Comando switch Comando switch switch (a * 2) { case 14: case 8: x = 3 - a; case 4: x = a; default: x = 0; Avaliação Comparação Compara o resultado com os rótulos das cláusulas. Transferência Finalização ( ) Elementos de programação em C 10 / 17

Comando switch Comando switch switch (a * 2) { case 14: case 8: x = 3 - a; case 4: x = a; default: x = 0; Avaliação Comparação Transferência Transfere o controle para o comando da primeira cláusula com rótulo igual ao da expressão, ou para a cláusula default. Finalização ( ) Elementos de programação em C 10 / 17

Comando switch Comando switch switch (a * 2) { case 14: case 8: x = 3 - a; case 4: x = a; default: x = 0; Avaliação Comparação Transferência Finalização Prossegue com o próximo comando. ( ) Elementos de programação em C 10 / 17

Comando switch Comando switch Exemplo. # include <stdio.h> int main ( void ) { int a; scanf ("% d", &a); switch (2 + a) { case 23: printf (" primeiro \ n "); default : printf (" nenhum \n "); case 5 * 9 / 3: case 2: printf (" segundo \ n "); case 4: printf (" ultimo \n "); printf (" fim \n "); return 0; ( ) Elementos de programação em C 11 / 17

Comando switch Comando switch Exemplo. O que é impresso pelo programa ao lado, se o número lido for a) 21? b) 13? c) 10? # include <stdio.h> int main ( void ) { int a; scanf ("% d", &a); switch (2 + a) { case 23: printf (" primeiro \ n "); default : printf (" nenhum \n "); case 5 * 9 / 3: case 2: printf (" segundo \ n "); case 4: printf (" ultimo \n "); printf (" fim \n "); return 0; ( ) Elementos de programação em C 11 / 17

Comando switch Comando switch Exemplo. O que é impresso pelo programa ao lado, se o número lido for a) 21? b) 13? c) 10? Resposta: a = 21 a = 13 a = 10 primeiro segundo nenhum nenhum ultimo segundo segundo fim ultimo ultimo fim fim # include <stdio.h> int main ( void ) { int a; scanf ("% d", &a); switch (2 + a) { case 23: printf (" primeiro \ n "); default : printf (" nenhum \n "); case 5 * 9 / 3: case 2: printf (" segundo \ n "); case 4: printf (" ultimo \n "); printf (" fim \n "); return 0; ( ) Elementos de programação em C 11 / 17

Comando switch Interrompendo a execução Comando switch - break O comando break interrompe a execução do switch que o contém. # include <stdio.h> int main ( void ) { int a; scanf ("% d", &a); switch (2 + a) { case 23: printf (" primeiro apos 23\ n "); break ; default : case 15: case 2: printf (" primeiro apos 2\ n "); break ; case 4: printf (" primeiro apos 4\ n "); break ; printf (" fim \n "); return 0; ( ) Elementos de programação em C 12 / 17

Comando switch Interrompendo a execução Comando switch - break O comando break interrompe a execução do switch que o contém. O programa ao lado, se o valor lido for 21, imprimirá: primeiro apos 23 fim # include <stdio.h> int main ( void ) { int a; scanf ("% d", &a); switch (2 + a) { case 23: printf (" primeiro apos 23\ n "); break ; default : case 15: case 2: printf (" primeiro apos 2\ n "); break ; case 4: printf (" primeiro apos 4\ n "); break ; printf (" fim \n "); return 0; ( ) Elementos de programação em C 12 / 17

Comando switch Comandos aninhados Comandos switch aninhados O que é impresso pelo comando comando switch ao lado se o valor de a for igual a 2? switch (a) { case 1: printf (" rotulo 1\n"); break ; case 2: a = 3 * a; switch (a) { case 6: printf (" rotulo 6, apos 2\ n "); break ; case 8: printf (" rotulo 8, apos 2\ n "); printf (" rotulo 2\n"); break ; default : printf (" rotulo default \ n "); ( ) Elementos de programação em C 13 / 17

Comando switch Comandos aninhados Comandos switch aninhados O que é impresso pelo comando comando switch ao lado se o valor de a for igual a 2? Resposta: rotulo 6, apos 2 rotulo 2 switch (a) { case 1: printf (" rotulo 1\n"); break ; case 2: a = 3 * a; switch (a) { case 6: printf (" rotulo 6, apos 2\ n "); break ; case 8: printf (" rotulo 8, apos 2\ n "); printf (" rotulo 2\n"); break ; default : printf (" rotulo default \ n "); ( ) Elementos de programação em C 13 / 17

Comando switch Situações especiais Comando switch situações especiais As sguintes situações especiais devem ser evitadas: Comportamento invariável, devido a cláusulas vazias ou comando contendo apenas a cláusula default. Cláusula fora de bloco, pois dificulta a legibilidade. Declarações no corpo de um switch, pois podem não ser iniciadas adequadamente. Declarações de vetores variáveis. Todo o switch deve estar no escopo do vetor. ( ) Elementos de programação em C 14 / 17

Obrigações de prova Obrigações de prova Ao usar comandos condicionais deve-se assegurar que 1 A condição do comando if pode assumir tanto o valor verdadeiro quanto o falso. 2 Todas as alternativas devem poder ser executadas. ( ) Elementos de programação em C 15 / 17

Manutenibilidade Promovendo a manutenibilidade As condições de um comando condicional devem ser mantidas simples: Modificando os operadores.!(a < c) é equivalente a (a >= c). Modificando a estrutura para eliminar (ou introduzir) disjunções e conjunções. Uma disjunção pode ser implementada com uma cláusula-senão e uma conjunção com comandos aninhados. Evitando operadores com efeitos colaterais. Deve-se também evitar o uso de else ambíguo. ( ) Elementos de programação em C 16 / 17

Bibliografia Bibliografia ISO/IEC C Programming Language Standard ISO/IEC 9899:2011, International Organization for Standardization; International Electrotechnical Commission, 3rd edition, WG14/N1570 Committee final draft, abril de 2011. Francisco A. C. Pinheiro Elementos de programação em C Bookman, Porto Alegre, 2012. www.bookman.com.br, www.facp.pro.br/livroc ( ) Elementos de programação em C 17 / 17