Você está na página 1de 56

Lógica de Programação I

Linguagem C
Unidade 4

Sávio Braga

1
Programa

1. Variável e Comandos de E/S


2. Funções
3. Estruturas de Seleção
4. Estruturas de Repetição
5. Vetores

2
Conceito, Operadores Lógicos, Relacionais e Expressões Lógicas

PARTE I

3
Conceito
 Decisão: também conhecida por seleção ou estrutura
condicional. A execução dos comandos obedece a
veracidade de uma condição (verdadeira ou falsa).
 São recursos utilizados para controlar o fluxo de
execução do programa de acordo com condições lógicas.
 Essas estruturas permitem que o programa faça escolhas
baseadas em condições especificadas e,
consequentemente, execute diferentes instruções de
acordo com o resultado da avaliação dessas condições.
4
Conceito

 O comando condicional permite a inclusão de blocos de


código que dependem da veracidade de uma ou mais
condições para sua execução.
 A condição pode ser qualquer expressão cujo valor
(verdadeiro ou falso) possa ser calculado ao se executar
o comando condicional.

5
Conceito

 No Fluxograma:
Início

Exiba:
É> Sim “Parabéns!
Ler Nota Média? Continue
assim.”

Não

Exiba:

“Estude
Fim
mais!”
6
Operadores Lógicos

 Álgebra Booleana: estrutura


algébrica que "captura a
essência" das operações lógicas
E, OU e NÃO. É o fundamento
da matemática computacional.
 Os operadores da álgebra
booleana podem ser
representados de várias formas.
É comum serem escritos como
7 E, OU e NAO (AND, OR e NOT).
Operadores Lógicos
 Os operadores lógicos servem para combinar resultados de
expressões, retornando se o resultado final é verdadeiro ou
falso.
 Expressão lógica: qualquer expressão que resulte em
FALSO ou VERDADEIRO
 Exemplos:
– 3 > 5 (F)
– 10 = 10 (V)
– (2*3) > (4*2) (F)
8 – (6-5) <= (15-14) (V)
Operadores Lógicos

 && (E/AND): retorna verdadeiro se as duas


expressões em ambos os lados do operador
são verdadeiras.
 || (OU/OR): retorna verdadeiro se pelo menos
uma das expressões em ambos os lados do
operador é verdadeira.
 ! (NÃO/NOT): inverte o resultado de uma
expressão, retornando verdadeiro se a
expressão original for falsa e vice-versa.
9
Operadores Lógicos

 Tabela Verdade:

E 0 1 OU 0 1 NAO
0 0 0 0 0 1 0 1
1 0 1 1 1 1 1 0

10
Operadores Lógicos

 Precedência:
1. !
2. &&
3. ||

 Podem ser utilizados parênteses para


“impor” a precedência
11
Operadores Relacionais

 == (igual a)
 != (diferente de)
 < (menor que)
 > (maior que)
 <= (menor ou igual a)
 >= (maior ou igual a)

12
Expressões Lógicas

 Para as variáveis A = 6, B = 7 e C =5, os


resultados das expressões seriam:
Expressão Resultado
A == B && B > C Falso
A != B || B < C Verdadeiro
!(A > B) Verdadeiro
A < B && B > C Verdadeiro
A >= B || B = C Falso
!(A <= B) Falso
13
Exemplo

 Vamos resolver as expressões lógicas para as


seguintes variáveis: A = 2, B = 1 e C = 5
Expressão
A == B && B < C Falso
A != B || B < C Verdadeiro
!(A > B) Falso
A < B && B <= C Falso
A >= B || B = C Verdadeiro
!(A <= B) Verdadeiro
14
Exercício

1. Considere as proposições P e Q, ambas


verdadeiras. Qual o valor lógico da expressão
"P OU Q"?
2. Seja R uma proposição falsa. Qual o valor
lógico da expressão "R E (não R)"?
3. Sejam as proposições P e Q, ambas
verdadeiras. Qual o valor lógico da expressão
"P OU (não Q)"?
4. Escreva as expressões acima na sintaxe do
15 C
Exercício

1. Considere as proposições P e Q, ambas


verdadeiras. Qual o valor lógico da expressão "P
OU Q"?
– V ou V = Verdadeiro
2. Seja R uma proposição falsa. Qual o valor lógico
da expressão "R E (não R)"?
– F e V = Falso
3. Sejam as proposições P e Q, ambas
verdadeiras. Qual o valor lógico da expressão "P
OU (não Q)"?
16 – V ou F = Verdadeiro
Exercício

 Escreva as expressões acima na sintaxe do C:


1. P || Q
2. R && !R
3. P || !Q

17
Estrutura Condicional Simples (if)

PARTE II

18
Estrutura Condicional Simples (If)

 Sintaxe:

if (condição)
instrução;
else //else é opcional
instrução;

19
Estrutura Condicional Simples (If)

 Em C, as chaves após o IF são opcionais quando


a expressão a ser executada após o IF é apenas
uma única instrução. No entanto, é altamente
recomendado que você sempre use as chaves,
mesmo quando há apenas uma única instrução.
Isso torna o código mais legível e menos propenso
a erros. Além disso, se você precisar adicionar
instruções adicionais ao bloco IF posteriormente, já
haverá um conjunto de chaves para adicioná-las.
20
Estrutura Condicional Simples (If)

 Sintaxe:

if (condição){
instrução;
}
else { //else é opcional
instrução;
21
}
Estrutura Condicional Simples (If)

 Exemplo:

if (idade >= 18) {


printf("Você é maior de idade.\n");
}
else {
printf("Você é menor de idade.\n");
}
22
Estrutura Condicional Simples (If)

 Exemplo:
– Faça um programa em C que lê um inteiro e verifica
se é maior ou igual a 21. Em caso afirmativo, imprime
a mensagem “Número é maior ou igual a 21”, caso
contrário, imprime a mensagem “Número é menor que
21”

23
Estrutura Condicional Simples (If)

 Exemplo:
#include <stdio.h>
main(){
int num;
printf(“Informe um numero: ”);
scanf(“%d”, &num);
if (num >= 21) {
printf(“Número é maior ou igual a 21.\n");
} else {
printf(" Número é menor que a 21.\n");
24 }}
Estrutura Condicional Simples (If)

 A importância da indentação:

25
Estrutura Condicional Simples (If)

Exercícios:
1. Faça um programa em C que leia dois valores
numéricos inteiros e efetue a adição e informe caso
o resultado seja maior que 10.
2. Faça um programa em C que leia 3 notas de um
aluno, calcule a média e imprima Aprovado se a
média >= 5, caso contrário, imprima Reprovado.
3. Faça um programa que leia um número, verifique se
é múltiplo de 3 e imprima uma das duas mensagens:
26 "É múltiplo de 3"ou "Não é múltiplo de 3".
Estrutura Condicional com vários blocos (If)

 Como fazer se tivermos mais de duas opções?


 Foi visto if para a execução de um bloco e if-else
para dois blocos.
 Como fazer para 3 blocos ou mais?
– É necessário associar o else com o if

27
Estrutura Condicional com vários blocos (If)

 Exemplo: Vamos um código que reajusta o salário de


funcionários a depender do cargo:

28
Estrutura Condicional com vários blocos (If)

29
Estrutura Condicional com vários blocos (If)

Exercícios
1. Faça um programa em C que lê um número inteiro,
verifica se é positivo, negativo ou zero, imprimindo
na tela o resultado.
2. Faça um programa em C que gere aleatoriamente
um número de 1 a 7 e imprima o dia da semana,
sendo 1 considerado domingo e assim
sucessivamente até 7 que seria sábado.
30
Estrutura Cond. com condições compostas (If)

Nós vimos os operadores lógicos, mas ainda não os


utilizamos, relembrando:

 && = E/ AND
 || = OU/ OR
 ! = NÃO/ NOT

31
Estrutura Cond. com condições compostas (If)

Exemplo:
Um hospital está fazendo um cadastro de potenciais
doadores de sangue. Para doar, é necessário ter entre
16 e 69 anos, pesar pelo menos 50kg, estar bem
alimentado e não estar resfriado.
Faça um programa que lê o nome, idade, peso, se está
bem alimentado, se está resfriado e imprima o
resultado.
32
Estrutura Cond. com condições compostas (If)

Exemplo:

33
Estrutura Cond. com condições compostas (If)

Exemplo:

34
Estrutura Cond. com condições compostas (If)

Exercício:
Faça um programa em C que lê a idade (em anos) e
verifica a faixa etária da pessoa da seguinte forma
(imprima o resultado):
– Até 12 = Criança
– De 13 a 18 = Adolescente
– De 19 a 60 = Adulto
– Maior que 60 = Idoso
Observação: Se idade menor que zero deve ser considerada
inválida
35
Estrutura Cond. com condições compostas (If)
Exercício: Revise o programa que calcula o IMC. De acordo com
o resultado, utilizando Condições Compostas e blocos, classifique
a categoria da pessoa.

As tabelas abaixo só se aplicam para o público adulto.


Masculino Feminino

36
Condições Aninhadas

PARTE III

37
If Aninhados

Sintaxe
if (condição1) {
// código a ser executado se a condição1 for verdadeira
if (condição2) {
// código a ser executado se a condição2 for verdadeira
} else {
// código a ser executado se a condição2 for falsa
}
} else {
// código a ser executado se a condição1 for falsa
}
38
If Aninhados

Exemplo:
Vamos implementar um código que verifica se uma pessoa
está apta a dirigir.
Para isso, precisamos avaliar a idade e se ela possui carteira
de habilitação. Podemos fazer isso com ifs aninhados, da
seguinte forma:

39
If Aninhados
if (idade >= 18) {
if (possui_carteira) {
printf("Pode dirigir!");
} else {
printf("Não pode dirigir, pois não possui
carteira de habilitação.");
}
} else {
printf("Não pode dirigir, pois é menor de
idade.");
}
40
If Aninhados

Exercícios:
1. Refatore o código do IMC, usando Ifs Aninhados e
acrescente a verificação se foi digitado M ou F, se for
digitado algo diferente informe “Gênero inválido”
2. Escreva um código em C que leia duas notas de prova, se a
média parcial (MP) for maior ou igual a 5, solicite a terceira
nota (V3). A média final (MF) será igual a (MP+V3)/2. Se
MF maior ou igual a 5 e V3 maior ou igual a 4, o aluno
estará Aprovado. Se a MF for menor que 5 ou V3 < 4, o
aluno estará Reprovado.
41
Extra

Debugando ou Depurando o código no DEVC++

42
Debugando o código no DEVC++
 Menu
Ferramentas
– Opções do
Compilador

 Utilizar um
compilador com
DEBUG

43
Debugando o código no DEVC++
 Depurador (na
parte inferior)

44
Debugando o código no DEVC++
 Depurador (na
parte inferior)
 Clica em
Adicionar
Marcador e
informe as
variáveis que
quer
acompanhar

45
Debugando o código no DEVC++
 Os marcadores
aparecem ao
clicar em
Depurador na
parte superior,
painel esquerdo

46
Debugando o código no DEVC++
 Adiciona um
ponto de parada
clicando na
linha desejada
 Clica em
Depurar na
parte inferior

47
Debugando o código no DEVC++
 No modo DEBUG, ao chegar
no ponto de parada, o
programa passa o comando
para a console
 É possível, acompanhar linha
a linha, continuar até o
próximo ponto de parada (se
houver) ou parar a execução

48
Debugando o código no DEVC++
 Veja o resultado
após a execução
da próxima linha

49
Cláusula SWITCH

PARTE IV

50
SWITCH

O switch é um comando com possibilidades mais simplificadas


que o if-else.
Permite apenas a comparação de igualdade com variáveis do
tipo int, char e long.
O switch é vantajoso quando é necessário fazer muitas
comparações, pois neste caso, o switch irá oferecer maior
agilidade na implementação.

51
SWITCH
switch (expressao) {
case valor1:
// código a ser executado caso a expressão seja igual a valor1
break;

case valor2:
// código a ser executado caso a expressão seja igual a valor2
break;

// outros casos podem ser adicionados

default:
// código a ser executado caso a expressão não seja igual a nenhum
dos valores anteriores
break;
}

52
SWITCH

Exemplo:
Um programa precisa verificar a opção digitada pelo usuário
que será de 1 a 3 (Como se fosse um menu).

Segue uma possível implementação usando switch:

53
SWITCH
#include <stdio.h>
int main() {
int opcao;
printf("Escolha uma opção (de 1 a 3):\n");
scanf("%d", &opcao);
switch (opcao) {
case 1:
printf("Você escolheu a opção 1.\n");
break;
case 2:
printf("Você escolheu a opção 2.\n");
break;
case 3:
printf("Você escolheu a opção 3.\n");
break;
default:
printf("Opção inválida.\n");
54 }}
SWITCH

Exercício:
Usando SWITCH, faça um programa em C que gere
aleatoriamente um número de 1 a 7 e imprima o dia da
semana, sendo 1 considerado domingo e assim
sucessivamente até 7 que seria sábado

55
Exercícios

Vamos praticar!

56

Você também pode gostar