Você está na página 1de 51

Computação

Eletrônica

Entrada e saída, condicionais: if e switch

Prof.: Hansenclever de França Bassani (Hans)
h8@cin.ufpe.br
Site da disciplina: www.cin.ufpe.br/~h8/ce

CIn.ufpe.br
Saída de Dados
•  Os comandos de saída de dados são uFlizados quando
desejamos ver o resultado do processamento do nosso
programa.
•  São também uFlizados para apresentar mensagens na tela,
solicitando que o usuário faça algo, como por exemplo, digitar
alguma informação.
•  Os disposiFvos de saídas de dados mais comuns são: monitor,
impressora e caixas de som.

CIn.ufpe.br
Saída de Dados
•  Veremos os comandos que fornecem saída de dados (texto)
para o disposiFvo de saída padrão que é a tela do computador,
na modalidade “console” ou “terminal”.
•  Console ou terminal é um Fpo de interface de comunicação
com usuários (UI), na qual caracteres são exibidos
sequencialmente linha por linha.
•  Em geral o número de caracteres por linha e o número de
linhas são fixos.
•  Ao aFngir o final da linha o texto automaFcamente conFnua na
linha seguinte.
•  Ao aFngir a úlFma linha o texto é deslocado uma linha para
cima, e abrindo espaço para uma nova linha ao final.

CIn.ufpe.br
Saída de Dados - prin>
•  A função prin> disponível na biblioteca <stdio.h> é um dos
principais comandos de saída em C;
•  print significa “imprimir” e o f no final significa “formatar”.
•  Portanto, este comando é capaz de imprimir na saída
informações (texto e números) de forma formatada.
•  A sintaxe é:
prin](“string de controle”);
•  ou:
prin](“string de controle”, arg1, arg2,...);

CIn.ufpe.br
Saída de Dados - prin> - Sintaxe
•  A string de controle pode conter: texto, códigos especiais e
especificadores de formatos.
•  Quais são os códigos especiais que podem aparecer na string de
controle do prin]?
–  São formados por uma barra inverFda (\), seguida de uma letra.
•  Um código especial não é um caractere a ser impresso, mas
indica uma ação que deve ser executada pelo prin>.

CIn.ufpe.br
Saída de Dados - Códigos
Especiais
Códigos Especiais Ação

Muda o cursor para o início da linha


\n
seguinte.
\t tabulação (tab)

\” Escreve aspas duplas na tela

\\ Escreve uma barra inverFda na tela

\a Produz um alerta sonoro

Mais códigos especiais em: hep://en.cppreference.com/w/cpp/language/escape

CIn.ufpe.br
Saída de Dados - Exemplos

CIn.ufpe.br
Saída de Dados – Especificadores de
Formato
•  Como escrevemos textos e valores, armazenados nas nossas
variáveis, na tela do computador?
•  Para isto, temos que saber mais um detalhe sobre a string de
controle, que são os especificadores de formato.
•  Um especificador de formato marca o lugar e o formato de
impressão das variáveis, conFdas na lista argumentos.
•  Deve haver um especificador de formato para cada variável a
ser impressa.
•  Todos os especificadores de formato começam com um %.

CIn.ufpe.br
Saída de Dados – Especificadores de
Formato

Especificador de Formato Uso

%d, %i Escrever um valor do Fpo inteiro

%f Escrever um valor do Fpo real

%c Escrever um caractere

%s Escrever uma cadeia de caracteres

%e Escreve um valor real em notação cienifica

%p Imprime o endereço de um ponteiro

%% Escrever o caractere ‘%’

Mais formatos em: hep://www.cplusplus.com/reference/cstdio/prin]/


CIn.ufpe.br
Saída de Dados - Exemplos

CIn.ufpe.br
Entrada de Dados
•  Os comandos de entrada de dados são uFlizados quando
desejamos permiFr ao usuário informar um valor para um
nosso programa.
•  Os disposiFvos mais comuns são: teclado, mouse, tela sensível
ao toque, scanner, dentre outros.

CIn.ufpe.br
Entrada de Dados – scanf
•  A execução do comando de leitura pressupõe que os dados
serão fornecidos do meio externo (o teclado é a entrada
padrão), e serão armazenados na memória (variáveis).
•  A função que faz a leitura de um dado fornecido via teclado e o
armazena em uma variável do programa é o scanf, disponível
também na biblioteca <stdio.h>.
•  scan significa “ler”e o f significa “formatado”. Portanto, o
comando lê informações (texto ou números) em um formato
específico (a informação digitada deve estar neste formato).
•  A sintaxe do comando é:

scanf(“string de controle”, &var1, &var2, ...);


CIn.ufpe.br
Entrada de Dados – scanf – Sintaxe
•  A string de controle indicará que Fpo de dado será lido neste
momento. A string de controle deve assumir um dos valores
abaixo:
String de Controle Significado

%d, %i leitura de números inteiros com sinal

%u Leitura de números inteiros sem sinal

%f leitura de números reais

%c leitura de um caractere

%s leitura de cadeia de caracteres

Mais em: hep://www.cplusplus.com/reference/cstdio/scanf/


CIn.ufpe.br
Entrada de Dados – scanf – Sintaxe
•  Observe que a função scanf precisa saber o endereço (&) onde
vai armazenar o valor. Ou seja, qual a posição de memória
associada com a variável que estamos uFlizando. Por isso a
uFlização do & antes das variáveis simples;
•  Obs.: No scanf, não se deve uFlizar & com vetores, pois estes já
indicam posições de memória. Isto funciona em alguns casos
mas não é padrão da linguagem.
Observe os colchetes [ ] (indicam vetores)

CIn.ufpe.br
Entrada de Dados - Exemplos

CIn.ufpe.br
Entrada de Dados - Cadeia de
Caracteres
•  A função scanf com %s, em muitos casos não é adequada para
ler uma cadeia de caracteres.
•  O problema é que, se nesta cadeia de caractere houver um
espaço em branco, separando uma palavra da outra, ao
encontrar o espaço em branco, o scanf entende que a leitura
terminou, desprezando o restante do texto digitado.
•  Além disso, ela não sabe qual o tamanho máximo que pode
armazenar na variável vetor de caracteres.
•  Isto pode ser resolvido uFlizando-se a string de controle:
“%X[^\n]s”
–  onde ‘X’ deve ser subsFtuído pelo tamanho do vetor de caracteres
menos 1, e “[^\n]s” informa que a leitura de caracteres deve terminar
somente ao encontrar um caractere de fim de linha ‘\n’ (enter), não ao
encontrar um espaço.
CIn.ufpe.br
Entrada de Dados - Exemplos

19 = 20-1

Permite a entrada de nomes com espaço. Ex.: “João da silva”


CIn.ufpe.br
Entrada de Dados - Cadeia de
Caracteres
•  Outra opção é uFlizar a função fgets:
fgets (&variavel, maximo, stdin);
•  Para a execução de um fgets, precisamos informar o endereço da
variável que irá receber o valor lido, o tamanho máximo que deve ser
lido e de onde (no caso stdin: a entrada padrão, ou seja, o teclado).
–  Obs.: fgets também inclui no valor lido o ‘\n’ (enter) digitado ao final da string.
•  Uma outra função úFl é a função fflush;
•  Ela limpa o buffer de entrada de dados (stdin), fazendo com que qual
quer caractere digitado, porém não lido ainda, seja descartado, e
evitando que lixo seja lido em lugar da informação desejada.
•  Portanto, é recomendável uFlizar fflush(stdin) antes de um comando
de leitura do teclado.
•  Assim como o scanf e prin>, fgets e o fflush também estão definidos
na biblioteca <stdio.h>;

CIn.ufpe.br
Entrada de Dados - Cadeia de
Caracteres

CIn.ufpe.br
Condicionais
•  Considere o fluxograma de exemplo:

•  Como implementar isso em um programa em C?


CIn.ufpe.br
Condicionais
•  A ordem de execução de um programa é denominado fluxo de
controle;
•  Exceto quando especificado de outra forma, a ordem de
execução é linear, isto é: uma instrução após a outra em
sequencia, de cima para baixo;
•  Alguns comandos em programação nos permitem decidir se a
execução de uma instrução deve ou não ser feita;
•  ÚFl para que certas instruções só sejam executadas sob
determinadas condições;
•  Esta tomada de decisão é baseada em expressões booleanas

CIn.ufpe.br
Condicionais
•  O resultado da avaliação de uma expressão booleana é
verdadeiro ou falso
•  Em C, NÃO existe o Fpo de dado booleano
–  Falso é representado como o inteiro 0 (zero)
–  Qualquer outro número diferente de zero indica verdadeiro.
•  Consideremos então:
–  1: verdadeiro
–  0: falso
•  Uma expressão booleana é composta de operandos booleanos
(lógicos) e operadores relacionais e/ou lógicos

CIn.ufpe.br
Condicionais
•  Operadores relacionais:

CIn.ufpe.br
Condicionais
•  Operadores lógicos:
–  São usados para combinar comparações
–  Operam sobre valores booleanos (0 ou 1)

CIn.ufpe.br
Expressões Booleanas
•  Uma tabela verdade representa todas as combinações
verdadeiro-falso dos operadores lógicos:

CIn.ufpe.br
Expressões Booleanas
•  Operadores lógicos e expressões:
–  x && y
–  x || y
–  !x
•  x e y são expressões booleanas;
•  As expressões resultantes são booleanas, gerando verdadeiro (1) ou
falso (0), como resultado da avaliação;
•  Operadores && e || são ditos short-circuited
–  Operandos da direita só são avaliados, se necessário
–  Existem os operadores bit a bit & e I que representam operações binárias
•  Erros comuns:
–  Confundir && com &
–  Confundir || com |

CIn.ufpe.br
Expressões Booleanas

CIn.ufpe.br
Expressões Booleanas

Parênteses são usados


para evitar
ambiguidades

Qual o valor de b ao final do programa?

1 - verdadeiro

CIn.ufpe.br
Expressões Booleanas

Qual o valor de b ao final do programa?

1 - verdadeiro

CIn.ufpe.br
Comandos Condicionais
•  Um comando condicional nos permite escolher qual deve ser a
próxima instrução executada em um programa
•  A execução de uma determinada instrução depende de uma
condição (expressão booleana)
•  A linguagem C oferece 3 Fpos de comandos condicionais:
–  if – else
–  switch
–  comando ternário (?:)

CIn.ufpe.br
If-else

•  Se a avaliação de expressaoBooleana retornar verdadeiro:


–  comandos são executados
•  Caso contrário:
–  executa-se outros comandos

CIn.ufpe.br
If-else
•  Exemplo:

Obs.: A indentação facilita a leitura do programa

CIn.ufpe.br
If-else
•  Variações:
•  Omissão do else quando não há comandos para o else:

•  Omissão das chaves, quando há apenas um comando no if ou


no else:

CIn.ufpe.br
If-else
•  Outros exemplos:

CIn.ufpe.br
If-else
•  Outros exemplos:

CIn.ufpe.br
If-else
•  Comandos aninhados:

•  Obs.: O else é sempre associado ao if anterior mais próximo


•  Em cada caso, qual valor necessário para as expressões
boleanas para que o comando2 seja executado?

CIn.ufpe.br
If-else
•  Outros exemplos de comandos if aninhados:

Há algo errado?

CIn.ufpe.br
If-else
•  Outros exemplos de comandos if aninhados:

O else é sempre associado ao if anterior mais


próximo dentro do mesmo bloco { }

CIn.ufpe.br
O comando switch
•  O comando if-else é úFl para a escolha de uma entre duas
alternaFvas;
•  Quando mais de duas alternaFvas são necessárias, pode ficar
deselegante e ineficiente uFlizar vários if-else encadeados;
•  Para estes casos o comando switch pode ser a melhor opção:
Para executar um switch:
•  Avalia-se expressao;
•  Executa-se os comandos do case cujo
rótulo é igual ao valor resultante da
expressão;
•  Executa-se os comandos de default caso
o valor resultante não seja igual a
nenhum rótulo;
CIn.ufpe.br
O comando switch
•  O Fpo de expressao só pode ser: int ou char;
•  Os rótulos são constantes diferentes;
•  Existe no máximo uma cláusula default (é opcional);
•  Os Fpos dos rótulos têm que ser do mesmo Fpo de expressao;
•  Vários rótulos podem estar associados ao mesmo comando;
•  Os comandos break são opcionais:
–  Sem o break a execução dos comandos de um
rótulo conFnua nos comandos do próximo, até
chegar ao final ou a um break.
•  No exemplo ao lado:
–  caso expressao seja avaliada para rotulo1, os
comandos 1 e 2 serão executados.
–  caso expressao seja avaliada para rotulo2,
apenas o comando 2 será executado. CIn.ufpe.br
Exemplo de switch
•  Calcular a diferença, o produto, o quociente ou a soma de dois números,
dependendo da operação escolhida e imprimir o resultado.

CIn.ufpe.br
O comando ternário de decisão (?:)
•  O comando ternário (?:) é uma versão do if-else com sintaxe
mais econômica;
•  Sintaxe:
(condicao ? expressao1 : expressao2)
•  Lê-se:
–  Caso condicao seja verdadeira: avalie e retorne como resultado
expressao1, caso contrário, avalie e retorne como resultado expressao2

CIn.ufpe.br
O comando ternário de decisão (?)
•  Os exemplos abaixo são equivalentes:

CIn.ufpe.br
A`vidade 01
•  Compilar e Depurar Programas
–  Execute o programa abaixo passo-a-passo (depurar) e anote o valor de
cada variável em cada ponto indicado:

CIn.ufpe.br
A`vidade 02
•  Variáveis, Entrada e Saída
–  Faça um programa que:
1.  Leia dois valores do teclado e os armazena em duas variáveis;
2.  Troque o conteúdo de uma variável com a outra;
3.  Imprima os valores trocados na tela;

CIn.ufpe.br
A`vidade 03
•  Variáveis, Entrada e Saída
–  Faça um programa que leia do teclado cinco números e imprima na tela
a soma destes cinco números. O programa só pode uFlizar 2 (duas)
variáveis.

CIn.ufpe.br
A`vidade 04
•  Constantes, Variáveis, Entrada e Saída
–  Faça um programa que leia do teclado o raio de uma circunferência e
imprima seu diâmetro, seu perímetro e sua área.
–  Obs.: Declare a constante π

CIn.ufpe.br
A`vidade 05
•  Variáveis, Entrada e Saída, Condicionais
–  Faça um programa que:
1.  Solicite ao usuário digitar três números reais;
2.  Ler os três números digitados do teclado;
3.  Imprima na tela qual o maior número digitado.

–  Três maneiras de implementar este programa:


•  hep://www.programiz.com/c-programming/examples/largest-number-
three

48
CIn.ufpe.br
A`vidade 06
•  Variáveis, Entrada e Saída, Condicionais
–  Faça um programa que leia as três notas de um aluno (entre 0 e 10) ,
calcule a média e imprima o seu conceito final, de acordo com a regra
abaixo:
•  Nota maior ou igual a 9: Conceito A;
•  Nota menor que 9 e maior igual a 7: Conceito: B;
•  Nota menor que 7 e maior igual a 5: Conceito C;
•  Nota menor que 5 e maior igual a 3: Conceito D;
•  Nota menor que 3: Conceito F;

CIn.ufpe.br
A`vidade 07
•  Condicionais e expressões booleanas:
–  Imagine uma avó que só vai aprovar o namoro de seu neto(a), se o
pretendente esFver com mais de 25 e menos de 40 anos, for rico (renda
anual acima de R$75.000,00) e Fver boa aparência (nota acima de 7 em
uma escala de 0 a 10).
–  Faça um programa para descobrir se um pretendente está apto ou não.
Ex.:

Informe a sua idade: 39
Digite o seu rendimento anual: 49000
Como atraFvo é você, em uma escala 0 - 10? 7.5
Você está autorizado a namorar: falso

CIn.ufpe.br
A`vidade 08
•  Desafio:
–  Faça um programa que recebe como entrada o salário bruto de um
trabalhador e sua dedução, e calcule o imposto de renda (IRPF) devido,
de acordo com a tabela abaixo.
•  Obs.: O cálculo do imposto incide sobre o salário menos as deduções;
•  Deve ser aplicado apenas a parte do valor que esFver dentro de cada faixa;
•  Compare com o simulador da receita federal:
hep://www.receita.fazenda.gov.br/aplicacoes/atrjo/simulador/simulador.asp?FpoSimulador=M

Base de cálculo (R$) Alíquota % •  Ex:
–  Salário 10.000,00 deduções: 2.000,00
Até 1.787,77 isento
–  Base de calculo: 8.000,00
De 1.787,78 até 2.679,29 7,5% –  (2.679,29 - 1.787,77) * 7,5% = 66,86
De 2.679,30 até 3.572,43 15,0% –  (3.572,43 - 2.679,29)* 15% = 133,97
De 3.572,44 até 4.463,81 22,5% –  (4.463,81 - 3.572,43) * 22,5% = 200,56
–  (8.000,00 - 4.463,81) * 27,5% = 972,45
Acima de 4.463,81 27,5%
–  Imposto total: 1.373,84
CIn.ufpe.br

Você também pode gostar