Algoritmos e Técnicas de Programação - Aula 04

38
ANHANGUERA – 2016.2 ALGORITMOS E TÉCNICAS DE PROGRAMAÇÃO AULA 04 – ESTRUTURAS DE CONTROLE Prof. Thomás da Costa [email protected]

Transcript of Algoritmos e Técnicas de Programação - Aula 04

ANHANGUERA – 2016.2

ALGORITMOS E TÉCNICAS DE PROGRAMAÇÃOAULA 04 – ESTRUTURAS DE CONTROLE

Prof. Thomás da [email protected]

ALGORITMOS E TÉCNICAS DE PROGRAMAÇÃO – Prof. Thomás da Costa

ESTRUTURAS DE CONTROLE

ESTRUTURAS DE CONTROLE

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 averacidade de uma determinada condição. Essa condição normalmente éformada por uma ou mais proposições simples.

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. Nestecomando, o primeiro bloco determinada que a condição é verdadeira. Osegundo bloco que começa pela instrução else, determina que a condição éfalsa.

if (condição)

<resultado verdadeiro>

else

<resultado falso>

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.

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", &nota_b1);

printf("Digite a nota da B2:");

scanf("%lf", &nota_b2);

media = ((nota_b1 * 0.4) + (nota_b2 * 0.6));

printf("Média: %.2f\n", media);

if (media >= 6)

printf("Aluno aprovado !!!");

else

printf("Aluno reprovado !!!");

}

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ãodentro de chaves, somente a linha abaixo da condição será executada. Casodesejamos que o bloco condicional execute mais de uma linha, devemos incluiras chaves, criando um novo escopo. Isso é válido também para instrução else.

if (condição)

{

<instrução 1>;

<instrução 2>;

}

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: %d\n", numero);

}

else

printf("Número inválido !!!\n");

As chaves colocam as linhas dentro de um escopo.

Sem chaves somente a linha seguinte é executada.

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: %d\n", numero);

}

else

printf("Número inválido !!!\n");

printf("Bye !!!\n");

getch();

}

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

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 maiscomplexas. Essas condições, possuem as mesmas regras das expressõesproposicionais.

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.

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: %d\n", ((q && r) || (!p && r)) && r);

}

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 umacondiçã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 blocoelse.

if (condição 1)<resultado verdadeiro>

else if (condição 2)<resultado verdadeiro>

else<resultado falso>

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 !!!");

elseprintf("Opção inválida !!!");

Condições verdadeiras.

Condição falsa.

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ção\n");printf("1 - Incluir aluno\n");printf("2 - Listar aluno\n");printf("3 - Sair\n");

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 !!!");

elseprintf("Opção inválida !!!");

}

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;

}}

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.

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ção\n");printf("1 - Incluir aluno\n");printf("2 - Listar aluno\n");printf("3 - Sair\n");

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;

}}

}

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çõesaté que uma determinada condição seja satisfeita. Vamos estudar os 3 tipos delaços encontrados em programação.

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 delaç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ãoseja verdadeira inicialmente.

while (condição){

<instrução 1>;<instrução 2>;

}

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ção\n");printf("1 - Incluir aluno\n");printf("2 - Listar aluno\n");printf("3 - Sair\n");...

}

Condição.

Bloco de comando que vai ser repetir enquanto a condição for verdadeira.

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ção\n");printf("1 - Incluir aluno\n");printf("2 - Listar aluno\n");printf("3 - Sair\n");

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;

}}

}

}

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. Nestetipo de laço, o bloco de comando é executado pelo menos uma vez, antes devalidar a condição do laço.

do{

<instrução 1>;<instrução 2>;

} while (condição);

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ção\n");printf("1 - Incluir aluno\n");printf("2 - Listar aluno\n");printf("3 - Sair\n");

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.

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

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: %d\n", a);printf("Pós-incremento: %d\n", a++);printf("Variável: %d\n\n", a);

printf("Variável: %d\n", a);printf("Pré-incremento: %d\n", ++a);printf("Variável: %d\n\n", a);

printf("%d\n", b--);printf("%d\n", --b);

c += 1;printf("%d\n", c);

c -= 1;printf("%d\n", c);

c *= 2;printf("%d\n", c);

c /= 2;printf("%d\n", c);

}

Operadores de Pós-incremento: Valor é usado antes de ser

incrementado.

Operadores de Pré-incremento: Valor é incrementado e depois

o novo valor é utilizado.

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 uminício determinado, uma condição final e uma operação de incremento edecremento, indicando se o laço é crescente ou decrescente. Utilizamos o laçofor principalmente quando temos uma faixa entre dois valores e precisamosefetuar operações de repetições.

for (início;condição;incremento/decremento)

{

<instrução 1>;

<instrução 2>;

}

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 %d\n", i);

}

}

Inicio do laço.

Condição.

Incremento ou decremento: indicando se o laço será

crescente ou decrescente.

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 %d\n", i);

}

}

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);

elseprintf("Número %d impar !!!\n", i);

}}

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 !!!

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 formamodular, melhorando a organização do programa e evitando repetição decódigo. As funções são reutilizáveis dentro de um programa.

ESTRUTURAS DE CONTROLE

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.

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”.

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 palavrareservada return seguido de um valor, variável ou operação domesmo 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.

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.

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 umadeterminada condição proposicional.

• Os laços executam um bloco de instruções repetidas vezes até umacondição seja satisfeita.

• Existem os operadores condicionais, incremento, decremento e deatribuição matemática.

• Funções são blocos de instruções reutilizáveis dentro de um programa.

ESTRUTURAS DE CONTROLE

Obrigado !!!

ANHANGUERA – 2016.2