1. ANHANGUERA – 2016.2
ALGORITMOS E TÉCNICAS DE PROGRAMAÇÃO
AULA 04 – ESTRUTURAS DE CONTROLE
Prof. Thomás da Costa
thomascosta@aedu.com
2. ALGORITMOS E TÉCNICAS DE PROGRAMAÇÃO – Prof. Thomás da Costa
ESTRUTURAS DE CONTROLE
ESTRUTURAS DE CONTROLE
3. ALGORITMOS E TÉCNICAS DE PROGRAMAÇÃO – Prof. Thomás da Costa
ESTRUTURAS DE CONTROLE
Condicionais
O que é?:
É uma instrução ou comando dentro de uma programa em C, que determina a
veracidade de uma determinada condição. Essa condição normalmente é
formada por uma ou mais proposições simples.
4. ALGORITMOS E TÉCNICAS DE PROGRAMAÇÃO – Prof. Thomás da Costa
ESTRUTURAS DE CONTROLE
Condicionais
Condicional IF – ELSE:
A primeira instrução condicional que vamos estudar é o comando if. Neste
comando, o primeiro bloco determinada que a condição é verdadeira. O
segundo bloco que começa pela instrução else, determina que a condição é
falsa.
if (condição)
<resultado verdadeiro>
else
<resultado falso>
5. ALGORITMOS E TÉCNICAS DE PROGRAMAÇÃO – Prof. Thomás da Costa
ESTRUTURAS DE CONTROLE
Condicionais
Exemplo:
if (media >= 6)
printf("Aluno aprovado !!!");
else
printf("Aluno reprovado !!!");
Condição é verdadeira.
Condição é falsa.
6. ALGORITMOS E TÉCNICAS DE PROGRAMAÇÃO – Prof. Thomás da Costa
#include <stdio.h>
int main()
{
double nota_b1;
double nota_b2;
double media;
printf("Digite a nota da B1:");
scanf("%lf", ¬a_b1);
printf("Digite a nota da B2:");
scanf("%lf", ¬a_b2);
media = ((nota_b1 * 0.4) + (nota_b2 * 0.6));
printf("Média: %.2fn", media);
if (media >= 6)
printf("Aluno aprovado !!!");
else
printf("Aluno reprovado !!!");
}
7. ALGORITMOS E TÉCNICAS DE PROGRAMAÇÃO – Prof. Thomás da Costa
ESTRUTURAS DE CONTROLE
Condicionais
Importante:
Em um bloco condicional if, quando as instruções seguintes ao if não estão
dentro de chaves, somente a linha abaixo da condição será executada. Caso
desejamos que o bloco condicional execute mais de uma linha, devemos incluir
as chaves, criando um novo escopo. Isso é válido também para instrução else.
if (condição)
{
<instrução 1>;
<instrução 2>;
}
8. ALGORITMOS E TÉCNICAS DE PROGRAMAÇÃO – Prof. Thomás da Costa
ESTRUTURAS DE CONTROLE
Condicionais
Exemplo:
if (numero >=0 && numero <= 10)
{
printf("Número válido !!!n");
printf("Número digitado: %dn", numero);
}
else
printf("Número inválido !!!n");
As chaves colocam as linhas dentro
de um escopo.
Sem chaves somente a
linha seguinte é executada.
9. ALGORITMOS E TÉCNICAS DE PROGRAMAÇÃO – Prof. Thomás da Costa
#include <stdio.h>
#include <locale.h>
#include <conio.h>
int main()
{
int numero;
setlocale(LC_ALL, "Portuguese");
printf("Digite um número entre 0 e 10: ");
scanf("%d", &numero);
if (numero >=0 && numero <= 10)
{
printf("Número válido !!!n");
printf("Número digitado: %dn", numero);
}
else
printf("Número inválido !!!n");
printf("Bye !!!n");
getch();
}
10. ALGORITMOS E TÉCNICAS DE PROGRAMAÇÃO – Prof. Thomás da Costa
Condicionais
Operadores:
ESTRUTURAS DE CONTROLE
Negação Conjunção
> Maior
>= Maior igual
< Menor
<= Menor igual
!= Diferente de
== Igual
= Atribuição de valores
11. ALGORITMOS E TÉCNICAS DE PROGRAMAÇÃO – Prof. Thomás da Costa
Condicionais
Proposições:
No próximo exemplo, vamos estudar um problema com condições mais
complexas. Essas condições, possuem as mesmas regras das expressões
proposicionais.
ESTRUTURAS DE CONTROLE
Negação Conjunção Disjunção
! && ||
• A ordem de resolução dos conectivos segue a tabela abaixo.
• Quando existir uma expressão com parênteses, eles deverão ser
resolvidos primeiro.
12. ALGORITMOS E TÉCNICAS DE PROGRAMAÇÃO – Prof. Thomás da Costa
#include <stdio.h>
#include <stdbool.h>
#include <locale.h>
int main()
{
setlocale(LC_ALL, "Portuguese");
bool p;
bool q;
bool r;
p = true;
q = false;
r = true;
if (((q && r) || (!p && r)) && r)
printf("Verdadeiro !!!n");
else
printf("Falso !!!n");
printf("Resultado da expressão: %dn", ((q && r) || (!p && r)) && r);
}
13. ALGORITMOS E TÉCNICAS DE PROGRAMAÇÃO – Prof. Thomás da Costa
Condicionais
Condicional IF – ELSE IF:
ESTRUTURAS DE CONTROLE
Em determinadas situações de um programa, pode existir mais de uma
condição verdadeira em um comando if. Para resolver este problema,
utilizamos o comando else if que verifica a veracidade de outras condições.
Caso nenhuma das condições seja verdadeira, a condicional entra no bloco
else.
if (condição 1)
<resultado verdadeiro>
else if (condição 2)
<resultado verdadeiro>
else
<resultado falso>
14. ALGORITMOS E TÉCNICAS DE PROGRAMAÇÃO – Prof. Thomás da Costa
Condicionais
Exemplo:
ESTRUTURAS DE CONTROLE
if (opcao_menu == 1)
printf("Opção de incluir aluno selecionado");
else if (opcao_menu == 2)
printf("Opção de listar aluno selecionado");
else if (opcao_menu == 3)
printf("Saindo !!!");
else
printf("Opção inválida !!!");
Condições verdadeiras.
Condição falsa.
15. ALGORITMOS E TÉCNICAS DE PROGRAMAÇÃO – Prof. Thomás da Costa
#include <stdio.h>
#include <locale.h>
int main()
{
setlocale(LC_ALL, "Portuguese");
int opcao_menu;
printf("Digite uma opçãon");
printf("1 - Incluir alunon");
printf("2 - Listar alunon");
printf("3 - Sairn");
scanf("%d", &opcao_menu);
if (opcao_menu == 1)
printf("Opção de incluir aluno selecionado");
else if (opcao_menu == 2)
printf("Opção de listar aluno selecionado");
else if (opcao_menu == 3)
printf("Saindo !!!");
else
printf("Opção inválida !!!");
}
16. ALGORITMOS E TÉCNICAS DE PROGRAMAÇÃO – Prof. Thomás da Costa
Condicionais
ESTRUTURAS DE CONTROLE
Condicional SWITCH:
Vamos estudar um novo comando condicional: o switch. A instrução switch é
um comando que valida a informação de uma determinada variável.
Normalmente, a variável utilizada para verificação de um valor é do tipo int.
Não conseguimos validar proposições mais complexas em um comando switch.
switch (variável)
{
case <constante 1>:
{
<instrução 1>;
break;
}
...
default:
{
<nenhuma das opções anteriores>;
break;
}
}
17. ALGORITMOS E TÉCNICAS DE PROGRAMAÇÃO – Prof. Thomás da Costa
Condicionais
ESTRUTURAS DE CONTROLE
Exemplo:
switch (opcao_menu)
{
case 1:
{
printf("Opção de incluir aluno selecionado");
break;
}
case 2:
{
printf("Opção de listar aluno selecionado");
break;
}
...
default:
{
printf("Opção inválida !!!");
break;
}
}
Variável condicional.
Condições
verdadeiras.
Condição falsa.
18. ALGORITMOS E TÉCNICAS DE PROGRAMAÇÃO – Prof. Thomás da Costa
#include <stdio.h>
#include <locale.h>
int main()
{
setlocale(LC_ALL, "Portuguese");
int opcao_menu;
printf("Digite uma opçãon");
printf("1 - Incluir alunon");
printf("2 - Listar alunon");
printf("3 - Sairn");
scanf("%d", &opcao_menu);
switch (opcao_menu)
{
case 1:
{
printf("Opção de incluir aluno selecionado");
break;
}
case 2:
{
printf("Opção de listar aluno selecionado");
break;
}
case 3:
{
printf("Saindo !!!");
break;
}
default:
{
printf("Opção inválida !!!");
break;
}
}
}
19. ALGORITMOS E TÉCNICAS DE PROGRAMAÇÃO – Prof. Thomás da Costa
Laços
ESTRUTURAS DE CONTROLE
O que é?:
São comandos utilizados para repetir um determinado conjunto de instruções
até que uma determinada condição seja satisfeita. Vamos estudar os 3 tipos de
laços encontrados em programação.
20. ALGORITMOS E TÉCNICAS DE PROGRAMAÇÃO – Prof. Thomás da Costa
Laços
ESTRUTURAS DE CONTROLE
Laço - WHILE:
A primeira instrução de laço que vamos estudar é o while. Esta instrução de
laço, executa um bloco de comando enquanto uma condição for verdadeira.
Além disso, o comando while pode ser ou não executado caso a condição não
seja verdadeira inicialmente.
while (condição)
{
<instrução 1>;
<instrução 2>;
}
21. ALGORITMOS E TÉCNICAS DE PROGRAMAÇÃO – Prof. Thomás da Costa
Laços
ESTRUTURAS DE CONTROLE
Exemplo:
int opcao_menu = 0;
while (opcao_menu != 3)
{
system("cls");
printf("Digite uma opçãon");
printf("1 - Incluir alunon");
printf("2 - Listar alunon");
printf("3 - Sairn");
...
}
Condição.
Bloco de comando que vai ser repetir
enquanto a condição for verdadeira.
22. ALGORITMOS E TÉCNICAS DE PROGRAMAÇÃO – Prof. Thomás da Costa
#include <stdio.h>
#include <locale.h>
#include <stdlib.h>
#include <conio.h>
int main()
{
setlocale(LC_ALL, "Portuguese");
int opcao_menu = 0;
while (opcao_menu != 3)
{
system("cls");
printf("Digite uma opçãon");
printf("1 - Incluir alunon");
printf("2 - Listar alunon");
printf("3 - Sairn");
scanf("%d", &opcao_menu);
switch (opcao_menu)
{
case 1:
{
printf("Opção de incluir aluno selecionado.n");
getch();
break;
}
case 2:
{
printf("Opção de listar aluno selecionado.n");
getch();
break;
}
case 3:
{
printf("Saindo !!!n");
getch();
break;
}
default:
{
printf("Opção inválida !!!n");
getch();
break;
}
}
}
}
23. ALGORITMOS E TÉCNICAS DE PROGRAMAÇÃO – Prof. Thomás da Costa
Laços
ESTRUTURAS DE CONTROLE
Laço DO – WHILE:
A instrução do – while tem a mesma semelhança que a instrução while. Neste
tipo de laço, o bloco de comando é executado pelo menos uma vez, antes de
validar a condição do laço.
do
{
<instrução 1>;
<instrução 2>;
} while (condição);
24. ALGORITMOS E TÉCNICAS DE PROGRAMAÇÃO – Prof. Thomás da Costa
#include <stdio.h>
#include <locale.h>
#include <stdlib.h>
#include <conio.h>
int main()
{
setlocale(LC_ALL, "Portuguese");
int opcao_menu;
do
{
system("cls");
printf("Digite uma opçãon");
printf("1 - Incluir alunon");
printf("2 - Listar alunon");
printf("3 - Sairn");
scanf("%d", &opcao_menu);
switch (opcao_menu)
{
case 1:
{
printf("Opção de incluir aluno selecionado.n");
getch();
break;
}
case 2:
{
printf("Opção de listar aluno selecionado.n");
getch();
break;
}
case 3:
{
printf("Saindo !!!n");
getch();
break;
}
default:
{
printf("Opção inválida !!!n");
getch();
break;
}
}
} while (opcao_menu != 3);
}
Este bloco é executado pelo menos
uma vez, independente da condição,
pois a mesma é validada depois.
25. ALGORITMOS E TÉCNICAS DE PROGRAMAÇÃO – Prof. Thomás da Costa
Operadores
ESTRUTURAS DE CONTROLE
Detalhes:
Antes de estudar o próximo laço, vamos conhecer alguns operadores em C.
Operador Conjunção
++ Incremento
-- Decremento
+= Atribuição de soma
-= Atribuição de subtração
*= Atribuição de multiplicação
/= Atribuição de divisão
26. ALGORITMOS E TÉCNICAS DE PROGRAMAÇÃO – Prof. Thomás da Costa
#include <stdio.h>
#include <locale.h>
int main()
{
setlocale(LC_ALL, "Portuguese");
int a = 1;
int b = 1;
int c = 1;
printf("Variável: %dn", a);
printf("Pós-incremento: %dn", a++);
printf("Variável: %dnn", a);
printf("Variável: %dn", a);
printf("Pré-incremento: %dn", ++a);
printf("Variável: %dnn", a);
printf("%dn", b--);
printf("%dn", --b);
c += 1;
printf("%dn", c);
c -= 1;
printf("%dn", c);
c *= 2;
printf("%dn", c);
c /= 2;
printf("%dn", c);
}
Operadores de Pós-incremento:
Valor é usado antes de ser
incrementado.
Operadores de Pré-incremento:
Valor é incrementado e depois
o novo valor é utilizado.
27. ALGORITMOS E TÉCNICAS DE PROGRAMAÇÃO – Prof. Thomás da Costa
Laços
ESTRUTURAS DE CONTROLE
Laços FOR:
No laço for, a repetição de um bloco de comando, acontece a partir de um
início determinado, uma condição final e uma operação de incremento e
decremento, indicando se o laço é crescente ou decrescente. Utilizamos o laço
for principalmente quando temos uma faixa entre dois valores e precisamos
efetuar operações de repetições.
for (início;condição;incremento/decremento)
{
<instrução 1>;
<instrução 2>;
}
28. ALGORITMOS E TÉCNICAS DE PROGRAMAÇÃO – Prof. Thomás da Costa
#include <stdio.h>
int main()
{
int i;
for (i=0;i<=10;i++)
{
printf("Contando %dn", i);
}
}
Inicio do laço.
Condição.
Incremento ou decremento:
indicando se o laço será
crescente ou decrescente.
29. ALGORITMOS E TÉCNICAS DE PROGRAMAÇÃO – Prof. Thomás da Costa
#include <stdio.h>
#include <locale.h>
int main()
{
int i;
int inicio, fim;
setlocale(LC_ALL, "Portuguese");
printf("Digite um número inicial:");
scanf("%d", &inicio);
printf("Digite um número final:");
scanf("%d", &fim);
for (i=inicio;i<=fim;i++)
{
printf("Contando %dn", i);
}
}
30. ALGORITMOS E TÉCNICAS DE PROGRAMAÇÃO – Prof. Thomás da Costa
#include <stdio.h>
#include <locale.h>
int main()
{
int i;
int inicio, fim;
setlocale(LC_ALL, "Portuguese");
printf("Digite um número inicial:");
scanf("%d", &inicio);
printf("Digite um número final:");
scanf("%d", &fim);
for (i=inicio;i<=fim;i++)
{
if ((i % 2) == 0)
printf("Número %d par !!!n", i);
else
printf("Número %d impar !!!n", i);
}
}
31. ALGORITMOS E TÉCNICAS DE PROGRAMAÇÃO – Prof. Thomás da Costa
Escopo
Não esquecer !!!:
Em uma condicional ou em um laço, somente a instrução seguinte será
executada. As instruções devem ser colocadas dentro de blocos com chaves,
para que um conjunto de instruções seja executado.
ESTRUTURAS DE CONTROLE
Chaves !!!
32. ALGORITMOS E TÉCNICAS DE PROGRAMAÇÃO – Prof. Thomás da Costa
Funções
O que é?:
São rotinas que tem como objetivo, executar trechos de códigos de forma
modular, melhorando a organização do programa e evitando repetição de
código. As funções são reutilizáveis dentro de um programa.
ESTRUTURAS DE CONTROLE
33. ALGORITMOS E TÉCNICAS DE PROGRAMAÇÃO – Prof. Thomás da Costa
ESTRUTURAS DE CONTROLE
Funções
Estrutura de uma função:
Retorno da função.
Parâmetros da função.
Corpo da função.
Escopo de início e fim da função.
double somar(double x, double y)
{
double resultado = x + y;
return resultado;
}
Nome da função.
34. ALGORITMOS E TÉCNICAS DE PROGRAMAÇÃO – Prof. Thomás da Costa
#include <stdio.h>
#include <locale.h>
double somar(double x, double y);
int main()
{
setlocale(LC_ALL, "Portuguese");
double valor = somar(10, 10);
printf("%lf", valor);
}
double somar(double x, double y)
{
double resultado = x + y;
return resultado;
}
Protótipo da função.
Chamando a função “somar”
passando os parâmetros 10 e 10.
Retornando o valor para a
variável “valor”.
35. ALGORITMOS E TÉCNICAS DE PROGRAMAÇÃO – Prof. Thomás da Costa
ESTRUTURAS DE CONTROLE
Funções
Estrutura de uma função:
• Tipos de retorno da função:
• double, float, int, char, void e outros tipos
• Parâmetros da função
• Cada parâmetro é composto pelo tipo, nome e separados por
virgulas.
• Retorno da função:
• Quando uma função deve retornar um valor, devemos usar a palavra
reservada return seguido de um valor, variável ou operação do
mesmo tipo de retorno.
• Corpo da função:
• Código fonte com a funcionalidade que a função deve executar.
• Protótipo:
• As funções possuem protótipos para definir sua estrutura.
36. ALGORITMOS E TÉCNICAS DE PROGRAMAÇÃO – Prof. Thomás da Costa
#include <stdio.h>
#include <locale.h>
void ola_mundo();
int main()
{
setlocale(LC_ALL, "Portuguese");
ola_mundo();
}
void ola_mundo()
{
printf("Olá Mundo !!!");
}
void não retornar nenhum valor
para a função.
Não existe a declaração da
variável do tipo void.
37. ALGORITMOS E TÉCNICAS DE PROGRAMAÇÃO – Prof. Thomás da Costa
Resumo
• As instruções condicionais são utilizadas para verificar a veracidade de uma
determinada condição proposicional.
• Os laços executam um bloco de instruções repetidas vezes até uma
condição seja satisfeita.
• Existem os operadores condicionais, incremento, decremento e de
atribuição matemática.
• Funções são blocos de instruções reutilizáveis dentro de um programa.
ESTRUTURAS DE CONTROLE