You are on page 1of 65

INTRODUÇÃO A ALGORITMOS

Extraído a partir do material dos Professores Carlos Diego e Valéria Cavalcanti 1


Agenda
O que iremos aprender:

1. Conceitos Básicos sobre Hardware\Software


2. O processo para a construção de um programa
3. Definição de algoritmo
4. Representação dos algoritmos
◦ Descrição Narrativa
◦ Fluxograma
◦ Linguagem algoritmica (Pseudocódigo)

2
FONTE: NOTAS DE AULA DO PROF. CARLOS DIEGO (DIEGOQUIRINO@GMAIL.COM)
1. Conceitos Básicos
Conceitos Básicos

Hardware;

Software;

FONTE: NOTAS DE AULA DA PROFA. VALÉRIA CAVALCANTI


Conceitos Básicos

“tudo que é físico (concreto), ou seja, pode ser tocado”

FONTE: NOTAS DE AULA DA PROFA. VALÉRIA CAVALCANTI


Hardware

Pessoa Computador

FONTE: NOTAS DE AULA DA PROFA. VALÉRIA CAVALCANTI


Hardware

Pessoa Computador

FONTE: NOTAS DE AULA DA PROFA. VALÉRIA CAVALCANTI


Conceitos Básicos

“tudo que é lógico (abstrato), ou seja, não pode ser tocado”

FONTE: NOTAS DE AULA DA PROFA. VALÉRIA CAVALCANTI


Software

Pessoa Computador

CRE
Normas Didáticas
dos Cursos
Superiores

FONTE: NOTAS DE AULA DA PROFA. VALÉRIA CAVALCANTI


Software

Pessoa Computador

FONTE: NOTAS DE AULA DA PROFA. VALÉRIA CAVALCANTI


Conceitos Básicos

Como desenvolver?!

FONTE: NOTAS DE AULA DA PROFA. VALÉRIA CAVALCANTI


Como Desenvolver Software?

1 2
º º
Algoritmo Execução
(plano de ação) (linguagem de programação)

LINHA DO TEMPO

FONTE: NOTAS DE AULA DA PROFA. VALÉRIA CAVALCANTI


Como Desenvolver Software?

Planejar bem uma solução, implicará em:

Menor tempo de execução;

Menor número de erros;

Menor retrabalho (correção);

Maior probabilidade de sucesso (satisfação).

FONTE: NOTAS DE AULA DA PROFA. VALÉRIA CAVALCANTI


Resolvendo um problema

Exemplo:

Vamos imaginar que você foi contratado para abrir uma porta, sem
usar chave.

Qual seria uma boa solução?!

FONTE: NOTAS DE AULA DA PROFA. VALÉRIA CAVALCANTI


Solução 1

É uma boa solução?!

Foi bem planejado ?!

FONTE: NOTAS DE AULA DA PROFA. VALÉRIA CAVALCANTI


Solução 2

É uma boa solução?!

Foi bem planejado ?!

FONTE: NOTAS DE AULA DA PROFA. VALÉRIA CAVALCANTI


Solução 3

É uma boa solução?!

Foi bem planejado ?!

FONTE: NOTAS DE AULA DA PROFA. VALÉRIA CAVALCANTI


Solução 4

É uma boa solução?!

Foi bem planejado ?!

FONTE: NOTAS DE AULA DA PROFA. VALÉRIA CAVALCANTI


Etapas para Construção de um
programa

Problema Programa

FONTE: NOTAS DE AULA DO PROF. CARLOS DIEGO 20


Etapas para Construção de um
programa

FONTE: NOTAS DE AULA DA PROFA. VALÉRIA CAVALCANTI 21


Processo de Geração de um
Programa (I)

1. Problema: aspiração (ou a necessidade) que se deseja


resolver/satisfazer.

2. Análise do Problema: conjunto de atividades relacionadas


ao entendimento do problema.
◦ Ler atentamente o enunciado do problema até entendê-lo
◦ Identificar os dados de entrada
◦ Identificar as saídas (resultados esperados)
◦ Identificar o que o programa deve fazer (seu objetivo)
◦ Identificar se existes valores ou dados intermediários
necessários para transformar entradas em saídas

FONTE: NOTAS DE AULA DO PROF. CARLOS DIEGO 22


Processo de Geração de um
Programa (II)

1. Analisado o Problema, devemos pensar em como


estruturar uma solução viável (dentre as muitas
disponíveis)!

2. Para resolver um problema no computador é necessário


que seja, primeiramente, encontrada uma maneira de
descrever este problema de uma forma clara e precisa!

3. É preciso definir o caminho a ser tomado...

FONTE: NOTAS DE AULA DO PROF. CARLOS DIEGO 23


Definição e características fundamentais
Definição

Algoritmo é uma sequência finita


de passos lógicos necessários para
realizar uma determinada tarefa

FONTE: NOTAS DE AULA DO PROF. CARLOS DIEGO 25


Exemplo

O ALGORITMO NÃO É A (ÚNICA) SOLUÇÃO DE UM


PROBLEMA! MAS UM DENTRE OS CAMINHOS EXISTENTES
PARA SE CHEGAR A ELA!

26
FONTE: NOTAS DE AULA DO PROF. CARLOS DIEGO (DIEGOQUIRINO@GMAIL.COM)
Características Fundamentais

1. Ter início e fim.

2. Ser escrito em termos de ações ou


comandos bem definidos.

3. Deve ser fácil de interpretar e de codificar.


◦ Ou seja, deve ser intermediário entre a linguagem falada e a linguagem
de programação

4. Ter uma sequência lógica.

27
FONTE: NOTAS DE AULA DO PROF. CARLOS DIEGO (DIEGOQUIRINO@GMAIL.COM)
Os algoritmos estão presentes no
dia-a-dia!

Preparo de Bolo (dado os ingredientes disponíveis), segue o modo


de preparo:

1. Bata a margarina, as gemas e o açúcar até ficar cremoso


2. Junte o leite e a farinha e continue batendo
3. Acrescente o fermento e as claras em neve
4. Unte a forma com manteiga e leve ao forno para assar

É possível fazer o bolo? Existem elementos de


imprecisão?
28
FONTE: NOTAS DE AULA DO PROF. CARLOS DIEGO (DIEGOQUIRINO@GMAIL.COM)
Os algoritmos estão presentes no
dia-a-dia!
Preparo de Bolo (dado os ingredientes disponíveis), segue o modo
de preparo:

1. Bata a margarina, as gemas e o açúcar por 15 minutos à mão


2. Junte o leite e a farinha e bata por 5 minutos à mão
3. Acrescente o fermento e, por último, as claras em neve
4. Unte a forma com manteiga e, em seguida, deposite a massa
5. Leve ao forno para assar por 30 minutos, forno a
180ºC

Qualquer pessoa já pode fazer o bolo?

29
FONTE: NOTAS DE AULA DO PROF. CARLOS DIEGO (DIEGOQUIRINO@GMAIL.COM)
Torre de Hanói
Escrevendo um algoritmo informal para resolver o problema
da Torre de Hanói. Atente que, na Torre de Hanói:
1. Deve-se mover todos os discos do primeiro eixo para o
terceiro mantendo-se a ordem original;
2. Em cada movimento, pode-se mover apenas um disco;
3. Um disco nunca poderá ser sobreposto por outro maior.

30
FONTE: NOTAS DE AULA DO PROF. CARLOS DIEGO (DIEGOQUIRINO@GMAIL.COM)
Passo 1

1. Mova o disco MENOR para o TERCEIRO eixo

31
FONTE: NOTAS DE AULA DO PROF. CARLOS DIEGO (DIEGOQUIRINO@GMAIL.COM)
Passo 2

2. Mova o disco MÉDIO para o SEGUNDO eixo

32
FONTE: NOTAS DE AULA DO PROF. CARLOS DIEGO (DIEGOQUIRINO@GMAIL.COM)
Passo 3

3. Mova o disco MENOR para o SEGUNDO eixo

33
FONTE: NOTAS DE AULA DO PROF. CARLOS DIEGO (DIEGOQUIRINO@GMAIL.COM)
Passo 4

4. Mova o disco MAIOR para o TERCEIRO eixo

34
FONTE: NOTAS DE AULA DO PROF. CARLOS DIEGO (DIEGOQUIRINO@GMAIL.COM)
Passo 5

5. Mova o disco MENOR para o PRIMEIRO eixo

35
FONTE: NOTAS DE AULA DO PROF. CARLOS DIEGO (DIEGOQUIRINO@GMAIL.COM)
Passo 6

6. Mova o disco MÉDIO para o TERCEIRO eixo

36
FONTE: NOTAS DE AULA DO PROF. CARLOS DIEGO (DIEGOQUIRINO@GMAIL.COM)
Passo 7

7. Mova o disco MENOR para o TERCEIRO eixo

37
FONTE: NOTAS DE AULA DO PROF. CARLOS DIEGO (DIEGOQUIRINO@GMAIL.COM)
Algoritmo

Início
1. Mova o disco MENOR para o TERCEIRO eixo
2. Mova o disco MÉDIO para o SEGUNDO eixo
3. Mova o disco MENOR para o SEGUNDO eixo
4. Mova o disco MAIOR para o TERCEIRO eixo
5. Mova o disco MENOR para o PRIMEIRO eixo
6. Mova o disco MÉDIO para o TERCEIRO eixo
7. Mova o disco MENOR para o TERCEIRO eixo
Fim

38
FONTE: NOTAS DE AULA DO PROF. CARLOS DIEGO (DIEGOQUIRINO@GMAIL.COM)
As formas de especificar os algoritmos
Formas de Representação

1. Descrição Narrativa
Utilização do português para descrição do algoritmo

2. Fluxograma convencional
Utilização de símbolos gráficos na representação do algoritmo

3. Linguagem Algorítmica (Pseudocódigo )


Utilização de uma pseudo-linguagem de programação
(“português estruturado”)

40
FONTE: NOTAS DE AULA DO PROF. CARLOS DIEGO (DIEGOQUIRINO@GMAIL.COM)
Fazendo uso das Formas de Representação

41
Formas de Representação

42
Formas de Representação

43
4.3 Linguagem Algoritmica - Exemplos

44
4.3 Linguagem Algoritmica - Exemplos

45
4.3 Linguagem Algoritmica - Exemplos

46
Linguagem algorítmica
De forma geral...
◦ Consiste na definição de uma pseudo linguagem de programação, cujos
comandos são em português, para representar algoritmos

Vantagens...
◦ Utiliza o português como base
◦ Permite definir quais e como os dados vão estar estruturados
◦ Permite realizar a passagem quase imediata do algoritmo para uma
linguagem de programação qualquer

Desvantagens...
◦ Baseia-se na definição de uma linguagem não real para trabalho
◦ Não é padronizada

47
Conhecendo os elementos básicos da linguagem

◦ Tipos de dados
◦ Expressões aritméticas
◦ Funções pré-definidas

◦ Expressões lógicas
◦ Variável e identificador
◦ Operações de atribuição
◦ Operações de entrada e saída
◦ Estruturas de controle (sequenciação, decisão e repetição)

48
Elementos básicos da linguagem
Tipos de dados

Utilizados para representar as informações que


serão processadas
Ex.: inteiro, real, string (conjunto de
caracteres) ...

49
Elementos básicos da linguagem
Expressões aritméticas
Estão relacionados com expressões aritméticas os seguintes
elementos...
◦ Operadores aritméticos
◦ Precedência (ou prioridade) de operadores
◦ Funções pré-definidas (funções matemáticas mais comuns)

◦ Exemplo 1 Exemplo 4 (valor absoluto)


2 + 3 / 2 = 2 + 1.5 = 3.5 abs(-4) = 4

◦ Exemplo 2
(2 + 3) / 2 = 5 / 2 = 2.5

◦ Exemplo 3
2 * 4 / 5 = 1.6

50
Elementos básicos da linguagem
Expressões lógicas
Tem como resultado um valor lógico: VERDADEIRO ou FALSO

Estão relacionados com expressões lógicas os seguintes


elementos...
◦ Operadores relacionais
◦ Operadores lógicos
◦ Prioridade (ou precedência) de operadores

Exemplo 1
(25 * 2) < 27 = FALSO
Exemplo 2
(“Joana” ≠ “Maria”) e (25 > 22) = VERDADEIRO
Exemplo 3
(“Joana” ≠ “Maria”) ou (25 > 22) = VERDADEIRO
Exemplo 4
não(2 ≠ 5) = FALSO

51
Elementos básicos da linguagem
Expressões lógicas
– A tabela verdade (abaixo) apresenta o resultado de cada operador
lógico, com os valores dados para as expressões lógicas com A e B

52
Elementos básicos da linguagem
Variável e identificador
Na Matemática uma variável é a representação simbólica dos elementos de um
certo conjunto
◦ "diferença de A com B“, é o conjunto de todos os elementos que pertencem ao
conjunto A e não pertencem ao conjunto B.
◦ Ex: A - B = {x | x  A e x  B}

Nos algoritmos computacionais, a cada variável corresponde uma “posição de


memória”, cujo conteúdo pode variar ao longo do tempo durante a execução de
um algoritmo

Embora a variável possa assumir diferentes valores, ela pode armazenar


APENAS um valor a cada instante

Toda variável é identificada por um nome ou identificador

53
Elementos básicos da linguagem
Variável e identificador
Regras para a formação de identificadores
◦ deve ter como primeiro caractere uma letra
◦ após a primeira letra só pode conter letras, dígitos ou
sublinha ( _ )
◦ não pode conter espaços
◦ letras maiúsculas e minúsculas são indiferentes
◦ não pode ser uma palavra reservada

 Recomenda-se SEMPRE utilizar nomes de identificadores


sugestivos, como endereco, rua, cpf, nome_funcionario, ...
 Deve-se EVITAR definir identificadores como a, n, e, nom,
...

54
Elementos básicos da linguagem
Variável e identificador
Exemplos de identificadores válidos...
◦ nome
◦ endereco
◦ fone1
◦ data_nascimento, ...

Exemplos de identificadores inválidos...


◦ 2carros
◦ data nascimento
◦ algoritmo, ...

55
Elementos básicos da linguagem
Variável e identificador
Palavras reservadas
◦ São palavras que têm um sentido pré-determinado na
linguagem e não devem ser usadas como identificadores

◦ Exemplo: algoritmo, inicio, fim, leia, escreva....

56
Elementos básicos da linguagem
Operação de atribuição
Permite que seja armazenado um valor em uma variável
O operador de atribuição é o caracter 
Sintaxe...
◦ variavel expressão

◦ Exemplos:
◦ A2
◦ B3
◦ CA+B+3

 Na sintaxe acima, expressão é uma simplificação usada para


representar apenas um valor, apenas uma variável ou mesmo
uma expressão contendo valores, variáveis e operadores

57
Elementos básicos da linguagem
Operações de entrada e saída

Entrada Algoritmo Saída

58
Elementos básicos da linguagem
Operação de entrada
Permite representar a leitura de um ou mais valores
fornecidos pelo usuário, atribuindo-os, respectivamente, a uma ou
mais variáveis indicadas
Sintaxe...
leia (variavel);
ou
leia (variavel1, ..., variavelN);

 Caso seja realizada a leitura para mais de uma variável,


cada valor deve ser fornecido na ordem de sua respectiva
variável, ou seja, deve-se saber que o primeiro valor será
armazenado na primeira variável, o segundo valor será
armazenado na segunda variável, e assim em diante.

59
Elementos básicos da linguagem
Operação de saída
Permite ao algoritmo...
◦ Exibir mensagens para interação com o usuário
◦ Exibir os resultados produzidos

Sintaxe...
escreva (variavel);
ou
escreva (s1, ..., sN);

 Na instrução escreva, s1... sN, podem corresponder a variáveis,


expressões aritméticas, mensagens ou qualquer combinação
desses elementos.
 As mensagens devem vir entre aspas
 Se escreva encontrar uma variável, ela mostrará o valor
armazenado na mesma
 Se escreva encontrar uma expressão, ela mostrará o valor
resultante do cálculo da expressão

60
Formato de um algoritmo

algoritmo <identificador do algoritmo>


{ comentário(s) }
<declarações de variáveis>
início
{ comentário(s) }
<comandos>
fim

61
Algoritmos - Exemplo 1
Considere o seguinte problema...
Escreva um algoritmo que mostre uma mensagem
de cumprimento para o usuário

algoritmo cumprimenta_usuario
inicio
escreva (“Olá usuário!”);
fim

62
Algoritmos - Exemplo 2
Considere o seguinte problema...
Escreva um algoritmo que leia o nome do usuário e
mostre uma mensagem de cumprimento para esse
nome

algoritmo cumprimenta_usuario2
nome: texto;
inicio
escreva (“Forneça um nome: “);
leia (nome);
escreva (“Olá usuário, ”, nome, “!”);
fim

63
Algoritmos - Exemplo 3
Considere o seguinte problema...
Escreva um algoritmo que some dois números inteiros
fornecidos pelo usuário e mostre o resultado

algoritmo soma_numeros
numero1, numero2, soma: inteiro
inicio
escreva (“Forneça o primeiro número”);
leia (numero1);
escreva (“Forneça o segundo número”);
leia (numero2);
soma  numero1 + numero2;
escreva (“A soma é: “, soma);
fim
64
Algoritmos - Exemplo 4
Considere o seguinte problema...

Escreva um algoritmo que reajusta o salário de um funcionário em 20%

algoritmo reajuste_salarial
{Finalidade: Calcula e mostra o reajuste de um salário em 20%}
salario_atual {salario atual},
salario_novo {novo salario},
aumento {valor do aumento} : real
início
escreva (“Forneça o valor do salário atual: “);
leia (salario_atual); {leitura do salário atual}
aumento  salario_atual * 0.20; {cálculo do reajuste}
salario_novo  salario_atual + aumento; {cálculo do salário novo}
escreva “O novo salário é: “, salario_novo; {exibição do resultado}
fim
65

You might also like