124
Algoritmos de Programação Prof. Alan Alves Oliveira

Algoritmos de Programação

Embed Size (px)

Citation preview

Page 1: Algoritmos de Programação

Algoritmos de Programação

Prof. Alan Alves Oliveira

Page 2: Algoritmos de Programação

Algoritmos

“A arte de programar consiste na arte de

organizar e dominar a complexidade”

Dijkstra

Page 3: Algoritmos de Programação

Algoritmos

• Definição:

“Um algoritmo é a descrição de um padrão de comportamento, expressado em termos de um repertório bem definido e finito de ações primitivas, das quais damos por certo que elas podem ser executadas.”

(GUIMARÃES; LAGES, 1994, p.4)

Page 4: Algoritmos de Programação

Algoritmos

• Definição:

“Algoritmo é a descrição de um conjunto de comandos que, obedecidos, resultam numa sucessão finita de ações.”

(FARRER et al., 1999 p.14)

“Um algoritmo pode ser definido como uma seqüência de passos que visam a atingir um objetivo bem definido.”

(FORBELLONE; EBERSPACHER, 2005, p.3)

Page 5: Algoritmos de Programação

Algoritmos

• Questão para discussão:

– Você já teve contato com algum tipo de algoritmo?

Page 6: Algoritmos de Programação

Algoritmos

• Apesar de estar intimamente ligado à programação de computadores, o termo algoritmo surgiu muito antes que isso;

• Rotinas simples do dia a dia podem ser descritas em algoritmos:

– Trocar de roupa;

– Escovar os dentes;

– Tomar banho;

– Etc.

Page 7: Algoritmos de Programação

Algoritmos

• Várias áreas do conhecimento utilizam algoritmos:

– Administração: um plano de ação é um algoritmo;

– Matemática: diversos cálculos e teoremas são algoritmos;

– Manufatura: a ficha técnica (ou engenharia) de um produto é um algoritmo.

Page 8: Algoritmos de Programação

Algoritmos

• Características (CUNHA; MELLO, 2009, p. 8):

– Finitude:

• Um algoritmo deve sempre terminar após um número finito de passos.

– Definição:

• Cada passo de um algoritmo deve ser precisamente definido. As ações devem ser definidas rigorosamente, sem ambiguidades.

Page 9: Algoritmos de Programação

Algoritmos

• Características (CUNHA; MELLO, 2009, p. 8):

– Entradas:

• Um algoritmo deve ter zero (0) ou mais entradas, isto é, quantidades que lhe são fornecidas antes do algoritmo iniciar.

– Saídas:

• Um algoritmo deve ter uma ou mais saídas, isto é, quantidades que têm uma relação específica com as entradas.

Page 10: Algoritmos de Programação

Algoritmos

• Características (CUNHA; MELLO, 2009, p. 8):

– Efetividade:

• ... todas as operações devem ser suficientemente básicas de modo que possam ser ... executadas com precisão, em um tempo finito, por uma pessoa usando papel e lápis.

Page 11: Algoritmos de Programação

Algoritmos

• Abstração:

– Um algoritmo é um modelo que representa algo do mundo real;

– Modelos servem para que possamos abstrair uma realidade e nos focar apenas nos detalhes que nos interessam.

Page 12: Algoritmos de Programação

Algoritmos

• Atividade:

– Em uma folha do seu caderno, escreva, em forma de passos sequenciais, como é feita a troca de um pneu furado em um carro.

Page 13: Algoritmos de Programação

Algoritmos

• O algoritmo e o computador:

– O algoritmo é bastante utilizado no meio computacional, seja para construir hardware (processadores), seja para desenvolver programas;

– “... computadores são seguidores de algoritmos.” (CUNHA; MELLO, 2009, p. 9);

Page 14: Algoritmos de Programação

Algoritmos

• O algoritmo e o computador:

– Para se escrever um algoritmo computacional deve-se (CUNHA; MELLO, 2009, p. 9):

• Definir o problema;

• Planejar um algoritmo de solução;

• Codificar a solução;

• Testar o programa;

• Completar a documentação.

Page 15: Algoritmos de Programação

Algoritmos

• O algoritmo e o computador:

– Um algoritmo escrito com a finalidade de construir um programa pode ser implementado em qualquer linguagem de programação sequencial (C, C++, C#, Delphi, Java, Pascal, Visual Basic, etc.)

Page 16: Algoritmos de Programação

Algoritmos

• O algoritmo como software:

– Texto finito:

• Como já foi ressaltado antes, um algoritmo, assim como um software, possui um conjunto finito de instruções (ações) a serem executadas.

– Instruções elementares:

• A exemplo do software o algoritmo possui comandos e/ou informações que devem ser fornecidos ao executor. No caso do software o executor é o computador.

Page 17: Algoritmos de Programação

Algoritmos

• O algoritmo como software:

– Receita metódica:

• Texto ou instruções precisas. No caso do software, estas instruções são escritas em uma linguagem de programação.

– Terminação:

• No caso do uso de estruturas de repetição (loops ou laços), deve haver a terminação, ou seja, a execução também é finita.

Page 18: Algoritmos de Programação

Algoritmos

• Questão para discussão:

– Um programa de computador, é um algoritmo?

Page 19: Algoritmos de Programação

Algoritmos

• Tipos de algoritmos:

– Algoritmo gráfico:

• Representado através de diagramas de blocos ou diagramas de quadros;

• Um diagrama de bloco bastante conhecido é o fluxograma;

Page 20: Algoritmos de Programação

Algoritmos

• Tipos de algoritmos:

– Algoritmo gráfico:

• Exemplo: um algoritmo para verificar se o aluno foi aprovado:

Início

Nota 1,Nota 2,Nota 3

SomaNota 1 + Nota

2 + Nota 3

Soma >= 60

Aprovado Reprovado

Verdadeiro Falso

Fim

Page 21: Algoritmos de Programação

Algoritmos

• Tipos de algoritmos:

– Algoritmo descritivo:

• Expresso em forma de texto;

• O texto deve conter todos os passos a serem executados, incluindo as entradas, decisões e saídas;

• Pode ser representado em linguagem natural ou em alguma linguagem técnica estruturada (pseudolinguagem ou pseugocódigo ou portugol);

Page 22: Algoritmos de Programação

Algoritmos

• Tipos de algoritmos:

– Algoritmo descritivo:

• Exemplo: utilizando o mesmo algoritmo para verificar se o aluno foi aprovado:

1. Obter as notas 1, 2 e 3.

2. Efetuar o cálculo da soma.

3. Se a soma for maior ou igual a 60 o aluno

está aprovado.

4. Se a soma for menor que 60 o aluno está

reprovado.

Page 23: Algoritmos de Programação

Algoritmos

• Tipos de algoritmos:

– Algoritmo descritivo:

• Perceba que o exemplo anterior foi escrito em linguagem natural, sem preocupação com formalização ou estruturação.

Page 24: Algoritmos de Programação

Algoritmos

• Tipos de algoritmos:

– Algoritmo codificado:

• Expresso em uma linguagem de programação específica;

• Representa o próprio programa;

Page 25: Algoritmos de Programação

Algoritmos

• Tipos de algoritmos:

– Algoritmo codificado:

• Exemplo: ainda para verificar se o aluno foi aprovado:

Page 26: Algoritmos de Programação

Algoritmos

• Tipos de algoritmos:

– Algoritmo codificado:

• O algoritmo apresentado na tela anterior foi escrito na linguagem de programação Java;

• A entrada dos dados é feita através de caixas de texto apresentadas ao usuário;

• A saída (mensagem informando se o aluno está aprovado ou reprovado) é feita no console do sistema.

Page 27: Algoritmos de Programação

Algoritmos

• Formas de representação:

– Um algoritmo pode ser representado de diversas formas;

– A escolha da melhor forma dependerá da finalidade do algoritmo;

– Manuais, receitas e guias, por exemplo, são geralmente escritos em linguagem natural;

Page 28: Algoritmos de Programação

Algoritmos

• Formas de representação:

– Esquemas e modelos são geralmente representados através de uma forma gráfica (fluxograma);

– Para a programação, a melhor forma de representar algoritmos é da forma descritiva, utilizando-se uma linguagem estruturada, conhecida por pseudolinguagem, pseudocódigo ou portugol;

Page 29: Algoritmos de Programação

Algoritmos

• Formas de representação:

– O pseudocódigo está bastante próximo das linguagens de programação sequenciais e, ao mesmo tempo, da linguagem natural;

– O pseudocódigo possui regras para sua escrita, isso o diferencia da linguagem natural;

Page 30: Algoritmos de Programação

Algoritmos

• Formas de representação:

– De agora em diante, vamos adotar o pseudocódigo como forma de representação. Para mais detalhes sobre as outras formas, consulte Cunha; Melo (2009, pp. 11-15).

Page 31: Algoritmos de Programação

Algoritmos

• Estrutura de um algoritmo em pseudocódigo:

– A palavra reservada Programa inicia o algoritmo e, logo após ela, deve colocado o nome do programa que está sendo feito;

Programa <nome>

<declarações de variáveis>

<subalgoritmos>

Início

<comandos>

Fim

Page 32: Algoritmos de Programação

Algoritmos

• Estrutura de um algoritmo em pseudocódigo:

– O nome do programa é dado pelo

programador e deve seguir algumas regras:

• Deve começar com uma letra ou sublinhado;

• Não deve conter caracteres especiais como *, $, #, @, etc.;

• Não deve conter espaços em branco;

• Pode conter números, porém, não pode começar com um.

Page 33: Algoritmos de Programação

Algoritmos

• Estrutura de um algoritmo em pseudocódigo:

– Entre as palavras reservadas Programa e Início

devem ser feitas as declarações de variáveis e definidos os subalgoritmos, quando for o caso;

– As instruções ou comandos são colocados entre as palavras reservadas Início e Fim.

Programa <nome>

<declarações de variáveis>

<subalgoritmos>

Início

<comandos>

Fim

Page 34: Algoritmos de Programação

Algoritmos

• Estrutura de um algoritmo em pseudocódigo:

– Observação importante:

• Não existe um padrão ou estrutura únicos para a criação de algoritmos. Podem ser encontradas diferenças de padrão de um autor para o outro;

• Utilizaremos um conjunto de regras, porém, o que realmente importa é que o aluno entenda a lógica da criação do algoritmo. Assim, ele poderá interpretar qualquer algoritmo, mesmo com pequenas variações de padrão.

Page 35: Algoritmos de Programação

Tipos de dados

• Um algoritmo pode manipular diversos valores para chegar ao resultado desejado;

• Definir tipos de dados é uma forma de tornar o algoritmo mais claro e mais efetivo;

• Em ciência da computação isso se chama tipagem de dados;

Page 36: Algoritmos de Programação

Tipos de dados

• Tipos de dados são, portanto, um conjunto de valores sobre os quais pode ser aplicado um conjunto de operações;

• A princípio, vamos trabalhar com três

conjuntos de tipos de dados:

– Numéricos;

– Alfanuméricos (literais) e

– Lógicos.

Page 37: Algoritmos de Programação

Tipos de dados

• Tipos de dados numéricos:

– Inteiro: {..., -2, -1, 0, 1, 2, ...};

– Real: abrange o conjunto de números inteiros, fracionários e irracionais.

• Tipos de dados literais:

– Literal: consiste em uma cadeia de caracteres alfanuméricos, incluindo caracteres especiais. Os valores literais devem estar sempre entre aspas duplas;

Page 38: Algoritmos de Programação

Tipos de dados

• Tipos de dados lógicos:

– Lógico: esse tipo de dados, a exemplo do que acontece com o computador em nível físico, só pode assumir um entre dois valores: verdadeiro

ou falso (o computador, em nível físico, só entende zeros e uns)

Page 39: Algoritmos de Programação

Variáveis e Constantes

• A equação do segundo grau é representada, matematicamente, pela seguinte expressão: (ax2 + bx + c = 0);

• As letras a, b e c poderão assumir qualquer valor, dependendo do cálculo a ser feito;

• Portanto, estas letras podem ser chamadas de variáveis;

Page 40: Algoritmos de Programação

Variáveis e Constantes

• O conceito de variável na programação é o mesmo;

• Podemos dizer que variáveis são símbolos que podem assumir diversos valores durante o seu tempo de vida (veremos tempo de vida de uma variável mais adiante);

Page 41: Algoritmos de Programação

Variáveis e Constantes

• Toda e qualquer variável a ser utilizada no algoritmo precisa ser declarada no local especificado anteriormente, entre as palavras reservadas Programa e Início;

• Na declaração de uma variável é obrigatória a definição do seu tipo, de acordo com os tipos de dados já vistos;

Page 42: Algoritmos de Programação

Variáveis e Constantes

• Vamos utilizar duas formas de declarar variáveis e o aluno terá liberdade para escolher qualquer uma delas. Porém, quando utilizar uma das formas, torne-a padrão, ou seja, não utilize, em um mesmo algoritmo, as duas formas;

• Opção 1 (Java, C++):

– <Tipo> <Lista de variáveis>

Inteiro a, b, c; // Declara as variáveis: a, b e c

Page 43: Algoritmos de Programação

Variáveis e Constantes

• Opção 2 (Pascal):

– <Lista de variáveis> : <Tipo>

a, b, c : Inteiro; // Declara as variáveis: a, b e c

Page 44: Algoritmos de Programação

Variáveis e Constantes

• Vejamos um exemplo no contexto do

algoritmo:

Programa Exemplo

// Declaração de variáveis nas linhas abaixo

Inteiro Num1, Num2;

Literal Nome;

Início

<comandos>

Fim

Page 45: Algoritmos de Programação

Variáveis e Constantes

• As constantes, assim como as variáveis, são símbolos que podem representar algum valor, porém, esse valor é dado a ela na sua declaração e não pode mais ser alterado;

• Para declarar uma constante acrescentamos, antes da declaração, a palavra const. Lembrando que o valor da constante deve ser dado na sua declaração;

Page 46: Algoritmos de Programação

Variáveis e Constantes

• Exemplo:

Programa ExemploConstante

Inteiro Num1, Num2;

Const Real Pi <- 3.14; // Declaração da constante

Início

<comandos>

Fim

Page 47: Algoritmos de Programação

Instruções primitivas

• Para fazer nossos primeiros algoritmos precisamos aprender três comandos básicos:

• O comando Escreva:

– É um comando de saída que permite que alguma mensagem (geralmente o resultado do algoritmo) seja dada ao usuário;

Page 48: Algoritmos de Programação

Instruções primitivas

• O comando Escreva:

– Exemplos:

// Escreve uma mensagem na tela

Escreva("Meu primeiro programa");

// Escreve o valor de uma variável na tela

Escreva(Num1);

// Escreve uma mensagem e logo após o valor de uma

// variável

Escreva("O resultado é:", Soma);

Page 49: Algoritmos de Programação

Instruções primitivas

• O comando Escreva:

– Exemplos:

// Um programa completo com o comando Escreva

Programa PrimeiroPrograma

Início

Escreva("Olá mundo!");

Fim

Page 50: Algoritmos de Programação

Instruções primitivas

• O comando <- (atribuição):

– Em muitos momentos no nosso algoritmo precisaremos atribuir valores a variáveis. Isso é feito através do comando de atribuição;

– Esse comando é representado por uma seta que aponta para a esquerda (para representar esta seta no computador, utilize o sinal de menor

seguido pelo hífen);

Page 51: Algoritmos de Programação

Instruções primitivas

• O comando <- (atribuição):

– Exemplos:

// Atribui um valor a uma variável

Num1 <- 100;

// Declara uma constante com atribuição de valor

Const Real Pi <- 3.14;

// Atribui uma expressão a uma variável

Soma <- Num1 + Num2;

Page 52: Algoritmos de Programação

Instruções primitivas

• O comando <- (atribuição):

– Exemplos:

// Um programa completo com o comando <-

Programa PrimeiroPrograma

Literal Msg;

Início

Msg <- "Olá mundo!“;

Escreva(Msg);

Fim

Page 53: Algoritmos de Programação

Instruções primitivas

• O comando Leia:

– O comando Leia é um comando de entrada, ou seja, a forma como iremos solicitar dados do usuário;

Page 54: Algoritmos de Programação

Instruções primitivas

• O comando Leia:

– Exemplos:

// Lê uma informação e atribui à variável

Leia(Num1);

// Lê três informações e atribui às variáveis.

// A primeira informação digitada vai para a

// primeira variável e assim por diante

Leia(Num1, Num2, Num3);

Page 55: Algoritmos de Programação

Instruções primitivas

• O comando Leia:

– Exemplos:

// Um programa completo com o comando Leia

Programa PrimeiroPrograma

Inteiro Num1, Num2, Num3, Soma;

Início

Leia(Num1, Num2, Num3);

Soma <- Num1 + Num2 + Num3;

Escreva("A soma é: ", Soma);

Fim

Page 56: Algoritmos de Programação

Instruções primitivas

• Perceba que no final de cada comando, inclusive da declaração de variáveis, utilizamos um ponto-e-vírgula;

• O ponto-e-vírgula define que o comando terminou.

Page 57: Algoritmos de Programação

Comentários

• Para facilitar o entendimento do nosso algoritmo e da lógica que foi utilizada para solucionar um problema, podemos comentar as ações;

• Os comentários, como você já deve ter percebido nos exemplos, é feito após duas barras (//);

Page 58: Algoritmos de Programação

Comentários

• Todas as linhas que começam com (//) são ignoradas como ações, ou seja, não são executadas;

• O programa abaixo não faz nada:

Programa Inútil

Início

// Escreva("Olá mundo");

Fim

Page 59: Algoritmos de Programação

Expressões

• Expressões aritméticas:

– Por hora, para fazermos nossos primeiros exercícios com algoritmos, vamos aprender as expressões aritméticas;

– Uma expressão aritmética é aquela que envolve somente números, sejam eles do tipo real ou inteiro;

Page 60: Algoritmos de Programação

Expressões

• Expressões aritméticas:

– Para realizar uma expressão aritmética, precisaremos conhecer os operadores:

Operador Descrição

+ Soma e identificação de números positivos

- Subtração e identificação de números negativos

* Multiplicação

/ Divisão

DIV Parte inteira do quociente de uma divisão

MOD (Módulo) Resto da divisão

Page 61: Algoritmos de Programação

Expressões

• Expressões aritméticas:

– A expressão pode manipular valores, de forma direta, ou variáveis, por exemplo:

// Uma expressão que manipula valores

(10 + 30) / 2

// Uma expressão que manipula valores contidos em

// variáveis

(a + b) / c

– Observação: A precedência matemática deve ser obedecida;

Page 62: Algoritmos de Programação

Expressões

• Expressões aritméticas:

– Conforme já foi dito, uma expressão pode conter operadores inteiros ou reais;

– Uma expressão que contém operadores inteiros retornará, sempre, o resultado inteiro. Veja o exemplo:

// Uma divisão com dois operadores inteiros

// O resultado dessa divisão é 0, porque os dois

// operadores são inteiros

2 / 4

Page 63: Algoritmos de Programação

Expressões

• Expressões aritméticas:

– Para garantir que o resultado retornará um número real, se for o caso, pelo menos um dos operadores deve ser, explicitamente, real. Veja o exemplo:

// Uma divisão com um operador real e um inteiro

// O resultado dessa divisão é 0.5

2.0 / 4

Page 64: Algoritmos de Programação

Expressões

• Mais adiante, veremos expressões literais e expressões lógicas.

Page 65: Algoritmos de Programação

Boas práticas

• Recuo:

– Um algoritmo representado em pseudolinguagem, assim como o programa que será desenvolvido com ele, deve ser visualmente organizado;

– Essa regra não afeta o resultado do algoritmo, porém, é extremamente importante para quem vai analisá-lo;

Page 66: Algoritmos de Programação

Boas práticas

• Recuo:

– Até agora estamos vendo algoritmos simples, de poucas linhas, mas, imagine um algoritmo ou programa de 100 linhas sem uma organização visual;

Page 67: Algoritmos de Programação

Boas práticas

• Recuo:

– Vamos ver dois exemplos:

Programa Resultado

Inteiro nota1, nota2, nota3, soma;

Literal resultado;

Início

Leia(nota1, nota2, nota3);

soma <- nota1 + nota2 + nota3;

Se (soma >= 60) Então

resultado <- "Aprovado“;

Senão

Resultado <- "Reprovado“;

Fim_se

Escreva(resultado);

Fim

Programa Resultado

Inteiro nota1, nota2, nota3, soma;

Literal resultado;

Início

Leia(nota1, nota2, nota3);

soma <- nota1 + nota2 + nota3;

Se (soma >= 60) Então

resultado <- "Aprovado“;

Senão

resultado <- "Reprovado“;

Fim_se

Escreva(resultado);

Fim

Page 68: Algoritmos de Programação

Boas práticas

• Recuo:

– Os dois algoritmos fazem exatamente a mesma coisa, porém, o primeiro deles (da esquerda) não utiliza recuo;

– O algoritmo da direita está utilizando recuos e os blocos ficam bastante perceptíveis, facilitando a leitura.

Page 69: Algoritmos de Programação

Boas práticas

• Nomes de variáveis:

– Procure dar nomes significativos para as suas variáveis;

– Isso facilita o entendimento de programa mais complexos;

– Ao mesmo tempo, por questões de praticidade, evite nomes muito extensos;

– Os nomes de variáveis devem seguir as mesmas regras aplicadas aos nomes dos programas.

Page 70: Algoritmos de Programação

Boas práticas

• Inicialização de variáveis:

– Ao ser declarada, uma variável não contém um valor conhecido;

– Não é garantido (e isso depende da linguagem de programação) que uma variável declarada com Inteiro, por exemplo, antes de ser iniciada, contenha valor zero;

– Para evitar surpresas, inicie a variável no início do programa;

Page 71: Algoritmos de Programação

Boas práticas

• Inicialização de variáveis:

– Vamos trabalhar com duas formas de

inicialização de variáveis:

• Inicialização na declaração:

Programa Exemplo

Real base <- 0, altura <- 0;

Início

<comandos>

Fim

Page 72: Algoritmos de Programação

Boas práticas

• Inicialização de variáveis:

– Vamos trabalhar com duas formas de

inicialização de variáveis:

• Inicialização no corpo do programa:

Programa Exemplo

Real base, altura;

Início

base <- 0;

altura <- 0;

...

Fim

Page 73: Algoritmos de Programação

Atividades

1. Desenvolva um algoritmo que leia o nome de uma pessoa e o escreva na tela.

2. Um professor de matemática está precisando urgentemente de três programas:

a) O primeiro é para calcular a área de retângulos, que é obtida pela expressão (� � ��), onde � é a base e � é a altura do retângulo.

b) O segundo é para calcular a área de círculos, que é data pela expressão (� � ��2), onde

� é uma constante que vale 3.14159 e � é o raio.

c) O terceiro programa deve calcular e apresentar o resultado das quatro operações matemáticas básicas, efetuadas com dois números. O resultado desejado pelo professor deverá ser apresentando conforme abaixo:O primeiro número é: 6

O segundo número é: 4

Os resultados são:

Soma: 10

Subtração: 2

Multiplicação: 24

Divisão: 1.5

Observação: Por hora, não se preocupe com a possibilidade de divisão por zero.

Page 74: Algoritmos de Programação

Atividades

3. Dois candidatos concorreram a uma eleição sindical. Além dos votos dados a cada um dos candidatos, foram computados também votos nulos e brancos. Faça um programa que leia o nome de cada candidato e a quantidade de votos que ele obteve. O programa deverá ler também a quantidade de votos nulos e brancos. O resultado a ser apresentado pelo programa deverá ser conforme abaixo:Total de votos: 150

Total de votos válidos: 100

Votos brancos: 30

Votos nulos: 20

Resultado absoluto por candidato:

João da Silva: 45

Joaquim Manoel: 55

Resultado relativo em relação aos votos válidos:

João da Silva: 45 %

Joaquim Manoel: 55 %

Resultado relativo em relação ao total de votos:

João da Silva: 30 %

Joaquim Manoel: 37 %

Page 75: Algoritmos de Programação

Estruturas de decisão

• Agora, vamos aprender como montar estruturas de decisão em um algoritmo;

• Para tanto, precisaremos montar expressões condicionais (condições);

• Uma expressão condicional é uma expressão que resulta um valor lógico, portanto, verdadeiro ou falso;

Page 76: Algoritmos de Programação

Estruturas de decisão

• Para fazer expressões condicionais precisamos conhecer os operadores relacionais com os quais podemos trabalhar:

Operador Descrição

= Igual a

> Maior que

< Menor que

>= Maior ou igual a

<= Menor ou igual a

<> Diferente de

Page 77: Algoritmos de Programação

Estruturas de decisão

• Exemplos de expressões condicionais:Expressão Significado

a = b Testa se o valor da variável a é igual ao valor da variável b

a > b Testa se o valor da variável a é maior que o valor da variável b

a <= b Testa se o valor da variável a é menor ou igual ao valor da variável b

a <> b Testa se o valor da variável a é diferente do valor da variável b

Page 78: Algoritmos de Programação

Estruturas de decisão

• Além dos operadores relacionais, precisamos conhecer os operadores lógicos que podem estar presentes entre duas expressões condicionais:

Operador Descrição

e Avalia duas expressões lógicas e retorna verdadeiro se e somente se todas elas forem verdadeiras

ou Avalia duas expressões lógicas e retorna verdadeiro se pelo menos uma delas for verdadeira

não Nega (inverte) uma expressão lógica

Page 79: Algoritmos de Programação

Estruturas de decisão

• Exemplos de expressões condicionais com operadores lógicos:

Expressão Significado

(a = b) e (a = c) Testa se o valor da variável a é igual ao valor da variável b e também se o valor da variável a é igual ao valor da variável c. O retorno será verdadeiro somente se as duas expressões simples retornarem verdadeiro.

(a = b) e (a = c) Testa se o valor da variável a é igual ao valor da variável b e também se o valor da variável a é igual ao valor da variável c. O retorno será verdadeiro se pelo menos uma delas for verdadeira.

não (a = b) Inverte o resultado da expressão (a = b). Portanto, se o valor da variável a for igual ao valor da variável b, o resultado da expressão será falso, caso contrário, será verdadeiro.

Page 80: Algoritmos de Programação

Estrutura condicional simples

• A estrutura condicional simples para algoritmos, é a seguinte:

...

Se (Expressão_lógica) Então

<comandos para expressão lógica verdadeira>

FimSe

...

Page 81: Algoritmos de Programação

Estrutura condicional simples

• Um exemplo:

Programa Exemplo

Inteiro a;

Início

Escreva("Digite um número:");

Leia(a);

Se (a >= 0) Então

Escreva("O número não é negativo!");

FimSe

Se (a < 0) Então

Escreva("O número é negativo!");

FimSe

Fim

Page 82: Algoritmos de Programação

Estrutura condicional composta

• O exemplo do slide anterior utilizou duas estruturas condicionais simples, porém, podemos abrir mão de uma estrutura condicional composta, conforme abaixo:

...

Se (Expressão_lógica) Então

<comandos para expressão lógica verdadeira>

Senão

<comandos para expressão lógica falsa>

FimSe

...

Page 83: Algoritmos de Programação

Estrutura condicional composta

• Um exemplo:

Programa Exemplo

Inteiro a <- 0;

Início

Escreva("Digite um número:");

Leia(a);

Se ((a Mod 2) = 0) Então

Escreva("O número é par!");

Senão

Escreva("O número é impar!");

FimSe

Fim

Page 84: Algoritmos de Programação

Atividades

1. Faça um programa que receba as medidas dos lados de um quadrilátero e retorne: (1) a área do quadrilátero e (2) uma mensagem informando se esse quadrilátero é um quadrado.

2. Faça um programa que, a partir da idade de um nadador, informada pelo usuário, faça a sua classificação como abaixo:

Infantil A: 5 – 7 anos Juvenil B: 14 – 17 anos

Infantil B: 8 – 10 anos Adulto: 18 anos ou mais

Juvenil A: 11 – 13 anos

Page 85: Algoritmos de Programação

Atividades

3. Uma empresa precisa de um programa para calcular a premiação de seus vendedores. O usuário irá digitar a média de vendas (R$) e o programa deverá calcular o valor da premiação com base em um percentual, definido na tabela abaixo. O valor da premiação tem um teto de R$ 2.000,00 e deve ser apresentado pelo programa no final da execução.

Média de vendas (R$) Premiação (%)

De 0 a 5.000,00 0

De 5.000,01 a 10.000,00 1

De 10.000,01 a 20.000,00 2

De 20.000,01 a 30.000,00 3

Acima de 30.000,00 4

Page 86: Algoritmos de Programação

Estrutura condicional composta

• Encadeamento de estruturas condicionais:

– É perfeitamente possível utilizar uma estrutura condicional dentro de outra, aninhando-as para obter o resultado desejado;

– As boas práticas de programação dizem que o aninhamento de grau maior que três torna o programa complexo e deve ser evitado;

Page 87: Algoritmos de Programação

Estrutura condicional composta

• Encadeamento de estruturas condicionais:– Um exemplo:

Programa Exemplo

Inteiro a <- 0, b <- 0;

Início

Escreva("Digite dois números:");

Leia(a, b);

Se (a > b) Então

Escreva("O primeiro número é maior que o segundo");

Senão

Se (a < b) Então

Escreva("O primeiro número é menor que o segundo");

Senão

Escreva("Os números são iguais");

FimSe

FimSe

Fim

Page 88: Algoritmos de Programação

Estrutura condicional composta

• O SenãoSe:

– A estrutura condicional Se...Então...Senão...FimSe exige um fechamento para cada Se. Além disso, o Senão

não permite a utilização de uma expressão lógica depois dele;

– Porém, há casos em que pode ser interessante fazer um novo teste lógico logo após um Senão, sem encadear as estruturas explicitamente;

Page 89: Algoritmos de Programação

Estrutura condicional composta

• O SenãoSe:

– O SenãoSe é um comando que permite que seja colocada uma nova expressão lógica (um novo teste) logo após o senão;

– O FimSe continua sendo utilizado, porém, só para fechar o Se. Ou seja, não se utiliza FimSe

para fechar o SenãoSe;

Page 90: Algoritmos de Programação

Estrutura condicional composta

• O SenãoSe:– Um exemplo:

Programa Exemplo

Inteiro a <- 0, b <- 0;

Início

Escreva("Digite dois números:");

Leia(a, b);

Se (a > b) Então

Escreva("O primeiro número é maior que o segundo");

SenãoSe (a < b) Então

Escreva("O primeiro número é menor que o segundo");

Senão

Escreva("Os números são iguais");

FimSe

Fim

Page 91: Algoritmos de Programação

Estrutura condicional composta

• O SenãoSe:– Outro exemplo:

Programa Exemplo

Inteiro preco <- 0, desconto <- 0;

Início

Escreva("Digite o preço do produto:");

Leia(preco);

Se (preco >= 100) Então

desconto <- preco * 0.05;

SenãoSe ((preco > 100) E (preco <= 500)) Então

desconto <- preco * 0.1;

SenãoSe (preco > 500) Então

desconto <- preco * 0.2;

FimSe

Escreva("Preço líquido: ", (preco – desconto));

Fim

Page 92: Algoritmos de Programação

Estrutura condicional de múltipla escolha

• Em situações em que o número de escolhas é grande, pode ser interessante utilizar uma estrutura condicional de múltipla escolha;

• A estrutura é:

...

Escolha <variáve>

Caso <valor 1>: <lista de comandos 1>

Caso <valor 1>: <lista de comandos 2>

Caso <valor 1>: <lista de comandos 3>

...

Caso Senão: <lista de comandos n>

FimEscolha

...

Page 93: Algoritmos de Programação

Estrutura condicional de múltipla escolha

• Veja um exemplo onde só se utiliza uma linha de comando para cada caso de escolha:

...

Escolha mes

Caso 1: descricaoMes <- "Janeiro";

Caso 2: descricaoMes <- "Fevereiro";

Caso 3: descricaoMes <- "Março";

...

Caso 12: descricaoMes <- "Dezembro";

FimEscolha

...

Page 94: Algoritmos de Programação

Estrutura condicional de múltipla escolha

• Para mais de uma linha de comando para cada caso de escolha, faça conforme o exemplo abaixo:

...

Escolha mes

Caso 1:

descricaoMes <- "Janeiro";

mensagem <- "Primeiro mês do ano";

Caso 2:

descricaoMes <- "Fevereiro";

mensagem <- "Segundo mês do ano";

...

Caso 12:

descricaoMes <- "Dezembro";

mensagem <- "Terceiro mês do ano";

FimEscolha

...

Page 95: Algoritmos de Programação

Estrutura condicional de múltipla escolha

• Vamos a um exemplo completo onde o programa deve retornar o preço de um produto de acordo com o código digitado pelo usuário:

Código Preço (R$)

1 5,00

2 10,00

3 12,50

4 8,00

Page 96: Algoritmos de Programação

Estrutura condicional de múltipla escolha

// Usando SenãoSe

Programa CalculaPreco

Inteiro codigo <- 0;

Real preco <- 0;

Início

Escreva("Digite o código do produto:");

Leia(codigo);

Se (codigo = 1) Então

preco <- 5.00;

SenãoSe (codigo = 2) Então

preco <- 10.00;

SenãoSe (codigo = 3) Então

preco <- 12.50;

SenãoSe (codigo = 4) Então

preco <- 8.00;

FimSe

Escreva("O preço é: ", preco);

Fim

Page 97: Algoritmos de Programação

Estrutura condicional de múltipla escolha

// Usando Escolha

Programa CalculaPreco

Inteiro codigo <- 0;

Real preco <- 0;

Início

Escreva("Digite o código do produto:");

Leia(codigo) ;

Escolha codigo

Caso 1: preco <- 5.00;

Caso 2: preco <- 10.00;

Caso 3: preco <- 12.50;

Caso 4: preco <- 8.00;

FimEscolha

Escreva("O preço é: ", preco);

Fim

Page 98: Algoritmos de Programação

Atividades

1. Faça um algoritmo que receba como parâmetro o número de um mês do ano e retorne o nome desse mês ao usuário. Se o usuário digitar um valor inválido, ele deve ser informado. Utilize a estrutura Se...Então...SenãoSe...Senão...FimSe.

2. Refaça o algoritmo da atividade anterior agora utilizando a estrutura Escolha...Caso...CasoSenão...FimEscolha.

Page 99: Algoritmos de Programação

Estruturas de repetição

• Para começar, uma questão para discussão:

– Com o que vimos até agora, se você fosse solicitado a desenvolver um programa para ler o nome de um usuário e escrevê-lo na tela 100 vezes, o que faria?

Page 100: Algoritmos de Programação

Estruturas de repetição

• É comum que os programas ou partes deles precisem ser executados por várias vezes;

• As estruturas de repetição permitem que os programas façam esta execução utilizando um mesmo trecho. Quando isso acontece, dizemos que o programa tem um laço ou loop;

Page 101: Algoritmos de Programação

Estruturas de repetição

• Utilizando nossa questão inicial desse capítulo, você concorda que ler o nome do usuário é uma ação a ser executada uma única vez?

• Porém, escrever o nome desse usuário é uma ação única, bem definida, que deve ser repetida por 100 vezes;

• Então, nesse caso, só uma parte do programa deve ter repetição.

Page 102: Algoritmos de Programação

Estruturas de repetição

• Tipos de estruturas de repetição:

– Repetição controlada por variável;

– Repetição condicional com teste no início;

– Repetição condicional com teste no fim.

Page 103: Algoritmos de Programação

Repetição controlada por variável

• Esse tipo de repetição é ideal para ser utilizado quando os comandos precisam ser repetidos por um número de vezes dado por um limite inicial e um limite final;

• Ou seja, tendo-se os limites inicial e final, o trecho de repetição sempre será repetido entre esses limites;

Page 104: Algoritmos de Programação

Repetição controlada por variável

• Estrutura:

...

Para <variável> De <início> Até <fim> Passo <incremento> Faça

<comandos>

FimPara

...

– No campo <variável> deve ser indicada uma variável que fará o controle do laço. Para evitar problemas, essa variável não deve receber atribuição de valor dentro do laço;

Page 105: Algoritmos de Programação

Repetição controlada por variável

• Estrutura:

– No campo <início> deve ser indicado o limite inicial do laço, ou seja, a partir de qual valor inicial a variável começa a ser incrementada;

– No campo <fim> define-se o limite final até quando a repetição será executada. O intervalo é aberto, ou seja, o intervalo de repetição inclui os valores de início e fim;

Page 106: Algoritmos de Programação

Repetição controlada por variável

• Estrutura:

– No campo <incremento>, devemos indicar qual será o incremento da variável a cada iteração, ou seja, de quanto a variável será acrescida ou decrescida quando passar pelo laço.

– Observação importante: o incremento é feito pela própria estrutura de repetição. Não é necessário atribuir valores à variável, nessa estrutura, durante a execução do laço.

Page 107: Algoritmos de Programação

Repetição controlada por variável

• Um exemplo:

Programa Exemplo

Inteiro i <- 0;

Início

Para i De 0 Até 10 Incremento 1

Escreva(i);

FimPara

Fim

Page 108: Algoritmos de Programação

Repetição controlada por variável

• Outro exemplo:

Programa Exemplo

Inteiro i <- 0;

Início

Para i De 0 Até 10 Incremento 2

Escreva(i);

FimPara

Fim

Page 109: Algoritmos de Programação

Repetição controlada por variável

• Mais um exemplo:

Programa Exemplo

Inteiro i <- 0;

Início

Para i De 10 Até 0 Incremento -1

Escreva(i);

FimPara

Fim

Page 110: Algoritmos de Programação

Repetição controlada por variável

• Outro exemplo:

Programa Exemplo

Inteiro i <- 0, n <- 0;

Início

Escreva("Digite um número inteiro:");

Leia(n);

Para i De 0 Até n Incremento 1

Escreva(i);

FimPara

Fim

Page 111: Algoritmos de Programação

Atividades

1. Escreva um algoritmo para ler o nome de uma pessoa e imprimi-lo na tela 100 vezes;

2. Refaça o algoritmo acima de modo que o número de vezes que o nome vai ser impresso seja definido pelo usuário.

Observação: utilize a estrutura de repetição controlada por variável.

Page 112: Algoritmos de Programação

Repetição condicional

• A repetição condicional é controlada por uma expressão lógica;

• Os comandos que estão dentro da estrutura são repetidos de acordo com o resultado dessa expressão;

Page 113: Algoritmos de Programação

Repetição condicional com teste no início

• Estrutura:

...

Enquanto <expressão lógica> Faça

<comandos>

FimEnquanto

...

– Executa os comandos da estrutura de repetição enquanto a <expressão lógica> for verdadeira;

Page 114: Algoritmos de Programação

Repetição condicional com teste no início

• Estrutura:

– A exemplo de qualquer estrutura de repetição, deve-se tomar o devido cuidado para não causar um loop infinito;

– Observação importante: a estrutura de repetição condicional não incrementa

automaticamente nenhuma variável.

Page 115: Algoritmos de Programação

Repetição condicional com teste no início

• Um exemplo:

Programa Exemplo

Inteiro i <- 0;

Início

Enquanto (i <= 10) Faça

Escreva(i);

i = i + 1;

FimEnquanto

Fim

Page 116: Algoritmos de Programação

Repetição condicional com teste no início

• Outro exemplo:

Programa Exemplo

Inteiro i <- 10;

Início

Enquanto (i >= 0) Faça

Escreva(i);

i = i – 1;

FimEnquanto

Fim

Page 117: Algoritmos de Programação

Repetição condicional com teste no início

• Mais um exemplo:

Programa Exemplo

Literal continua <- "s“;

Inteiro a <- 0;

Início

Enquanto (continua = "s") Faça

Escreva("Digite um número: ");

Leia(a);

Escreva("O número digitado é: ", a);

Escreva("Deseja continuar (s/n)?");

Leia(continua);

FimEnquanto

Fim

Page 118: Algoritmos de Programação

Repetição condicional com teste no final

• Estrutura:

...

Faça

<comandos>

Enquanto <expressão lógica>

...

– Executa os comandos da estrutura de repetição pelo menos uma vez;

– Causa a repetição dos comandos enquanto a <expressão lógica> for verdadeira;

Page 119: Algoritmos de Programação

Repetição condicional com teste no final

• Estrutura:

– A exemplo de qualquer estrutura de repetição, deve-se tomar o devido cuidado para não causar um loop infinito;

– Observação importante: a estrutura de repetição condicional não incrementa

automaticamente nenhuma variável.

Page 120: Algoritmos de Programação

Repetição condicional com teste no final

• Um exemplo:

Programa Exemplo

Inteiro i <- 0;

Início

Faça

Escreva(i);

i = i + 1;

Enquanto (i <= 10)

Fim

Page 121: Algoritmos de Programação

Repetição condicional com teste no final

• Outro exemplo:

Programa Exemplo

Inteiro i <- 10;

Início

Faça

Escreva(i);

i = i – 1;

Enquanto (i >= 0)

Fim

Page 122: Algoritmos de Programação

Repetição condicional com teste no final

• Mais um exemplo:

Programa Exemplo

Literal continua <- "s“;

Inteiro a <- 0;

Início

Faça

Escreva("Digite um número: ");

Leia(a);

Escreva("O número digitado é: ", a);

Escreva("Deseja continuar (s/n)?");

Leia(continua);

Enquanto(continua = "s")

Fim

Page 123: Algoritmos de Programação

Repetição condicional com teste no final

• Pode-se encontrar também a seguinte estrutura:

...

Repita

<comandos>

AtéQue <expressão lógica>

...

• A diferença fundamental dessa estrutura para a anterior é que, nesse caso, a repetição acontecerá enquanto a <expressão lógica> for falsa.

Page 124: Algoritmos de Programação

Estrutura condicional

• Questão para discussão:

– Qual é a diferença básica entre as estruturas de repetição condicional com teste no início e teste no fim?