1

Algoritmo 1
Semana 01
INTRODUÇÃO – DEFINIÇÃO - CONCEITOS
Ementa


Desenvolver algoritmos por meio de divisão
modular e refinamentos sucessivos. Interpretar
pseudocódigos, algoritmos e outras
especificações para codificar programas. Avaliar
resultados de testes dos programas
desenvolvidos. Integrar módulos desenvolvidos
separadamente.

2
Objetivos


Geral




Capacitar o aluno para o desenvolvimento de soluções de
problemas usando técnicas estruturadas de programação,
algoritmos e estruturas estáticas de dados.

Específicos


Utilizar modelos, pseudocódigos e ferramentas na
representação da solução de problemas.



Redigir instruções de uso dos programas implementados.



Utilizar tipos de dados básicos e operadores aritméticos,
lógicos e relacionais.



Utilizar instruções de seleção para escolher entre ações
alternativas.



Utilizar estruturas de repetição para executar instruções em
um programa repetidamente. Implementar subalgoritmos.

3
Avaliação


Provas Bimestrais – Peso 8



Trabalhos Bimestrais – Peso 2

4
5

Conteúdo Programático
CONTEÚDO PROPOSTO POR AVALIAÇÃO
Conteúdo Programático
P1


Introdução



Tipos de algoritmos





Conceito

Descrição geral dos algoritmos

LÓGICA DE PROGRAMAÇÃO



Princípios de resolução de problemas



Tipos de variáveis



Uso de Constantes



Fórmulas matemáticas





Formas de representação gráfica

Instruções básicas

TOMADAS DE DECISÃO


Desvio condicional simples



Desvio condicional composto



Desvio condicional encadeados

6
Conteúdo Programático
P2


LAÇOS DE REPETIÇÃO


Looping com teste lógico no início



Looping com teste lógico no fim



Looping com variável de controle

7
Conteúdo Programático
P3


MATRIZES


Matrizes de uma dimensão ou vetores



Matrizes com mais de uma dimensão

8
Conteúdo Programático
P4


Modularização de programas


Procedimentos e funções



Passagem de parâmetros

9
10

Algoritmo
DEFINIÇÕES
Algoritmo


Um algoritmo é uma
sequência de instruções
finita e ordenada de
forma lógica para a
resolução de uma
determinada tarefa ou
problema.

11



São exemplos de
algoritmos instruções de
montagem, receitas,
manuais de uso, etc.
Algoritmo


Um algoritmo não é a solução do problema, pois,
se assim fosse, cada problema teria um único
algoritmo;



Um algoritmo é um caminho para a solução de
um problema.



Em geral, existem muitos (senão infinitos)
caminhos que levam a uma solução satisfatória.

12
Exemplo 1

13
Exemplo 2
Algoritmo para fritar um ovo


1. Colocar um ovo na frigideira



2. Esperar o ovo ficar frito



3. Remover o ovo da frigideira

14
Exemplo 3
Algoritmo para fritar um ovo


1. Retirar um ovo da geladeira



2. Colocar a frigideira no fogo



3. Colocar óleo



4. Esperar até o óleo ficar quente



5. Quebrar o ovo separando a casca



6. Colocar o conteúdo do ovo na frigideira



7. Esperar um minuto



8. Retirar o ovo da frigideira



9. Apagar o fogo

15
Exemplo 4
Algoritmo Lavar a cabeça
1 – Início
2 – Molhe o cabelo

3 – Coloque Shampoo
4 – Faça Massagem
5 – Enxágüe
6 – Repita o Processo
7 – Fim

16
Exemplo 4
Algoritmo Lavar a cabeça
1 – Início
2 – Molhe o cabelo
3 – Coloque Shampoo

4 – Faça Massagem
5 – Enxágue
6 – Repita o Processo
7 – Fim

1) É a descrição de um
procedimento rotineiro;
2) Tem um INÍCIO e um FIM
claros;
3) A descrição é feita passo
a passo, de maneira bem
definida;
4) Há imperfeições: 4.1)
Não especifica a
quantidade de shampoo;
4.2) Não especifica quantas
vezes o processo deve ser
repetido;
4.3) Não especifica qual o
processo ou qual passo que
deve ser repetido.

17
Exemplo 4
Algoritmo Lavar a cabeça

18

1 – Início
2 – Molhe o Cabelo
3 – Repita 2 (duas) vezes:
3.1 – Coloque a quantidade correspondente
a uma tampa de shampoo
3.2 – Faça massagem durante 1 minuto
3.3 – Enxágüe

4 – Fim
Qualidades de um bom
Algoritmo


Definição Perfeita




Deve descrever exatamente quais são as instruções que
devem ser executadas e em que seqüência. Deve ser
tornado explícito o maior número possível de
informações, pois a falta de alguma informação pode
levar a uma interpretação errada do algoritmo;

Ausência de Ambigüidade


Não deve deixar dúvidas sobre o que deve ser feito. A
ambigüidade acerca do que deve ser feito também pode
levar a uma interpretação errada do algoritmo;

19
Qualidades de um bom
Algoritmo


Eficácia




Conseguir resolver o problema em qualquer situação.
Todas as situações de exceção que possam alterar o
comportamento do algoritmo devem ser especificadas e
tratadas;

Eficiência


Resolver o problema com o mínimo de recursos.
Sempre se deve buscar aquele algoritmo que, dentre os
diversos algoritmos que resolvam um mesmo problema,
utilize a menor quantidade de recursos.

20
Estratégias na Construção
de Algoritmos


Especifique o problema claramente e entenda-o
completamente;



Explicite todos os detalhes supérfluos;



Entre no problema (envolva-se totalmente com o
problema);



Use todas as informações disponíveis;



Decomponha o problema (Top-Down);



Use o sentido inverso, se necessário (Bottom-Up).

21
Como Construir
Algoritmos

22

Problema

Análise Preliminar

Solução

Teste de Qualidade

Produto Final

Alteração
Como Construir
Algoritmos


Análise Preliminar




Solução




Execute o algoritmo desenvolvido com dados para os quais o
resultado seja conhecido. O ideal é que o universo dos dados
tenha todas as combinações possíveis. Note que a qualidade de
um algoritmo pode ser limitada por fatores como tempo para a
sua confecção e recursos disponíveis.

Alteração




Desenvolva um algoritmo para resolver o problema.

Teste de Qualidade




Entenda o problema com a maior precisão possível, identifique os
dados; identifique os resultados desejados.

Se o resultado do teste de qualidade não for satisfatório, altere o
algoritmo e submeta-o a um novo teste de qualidade.

Produto Final


O algoritmo concluído e testado, pronto para ser aplicado.

23
Portugol


A Linguagem Estruturada é a forma que tem sido
mais utilizada para a elaboração de algoritmos.



É a forma que mais se assemelha com a forma
em que os programas são escritos nas linguagens
de programação.

24
Operadores Aritméticos
Operação

Operador

Exemplo

Soma

+

1+1=2

Subtração

-

1-1=0

Multiplicação

*

2*2=4

Divisão Real

/

7/2=3.5

Divisão de Inteiros



72=3

Resto da Divisão
Inteira

%

7%2=1

Potenciação

^

22 = 2^2.

25
Operadores Relacionais
Operador

Simbolo

Menor

<

Menor ou Igual

<=

Maior

>

Maior ou Igual

>=

Diferente

<>

Igual

=
Os operadores relacionais retornam valores lógicos
(Verdadeiro ou Falso)

26
Operadores Lógicos
Operador

Simbolo Significado

Multiplicação
lógica

E

Resulta VERDADEIRO se ambas
as partes forem verdadeiras.

Adição lógica

OU

Resulta VERDADEIRO se uma
das partes é verdadeira.

Negação

NÃO

Nega uma afirmação,
invertendo o seu valor lógico:
se for
VERDADEIRO torna-se FALSO, se
for FALSO torna-se
VERDADEIRO.

27
Operadores Lógicos –
Tabela Verdade

28
Exemplo – Operadores
Relacionais


2+5>4 resulta VERDADEIRO



3<>3 resulta FALSO

29
Operadores Lógicos –
Exemplo


(2+5>4) e (3<>3) resulta FALSO,



pois VERDADEIRO e FALSO resulta FALSO.

30
Prioridades de Operadores
Operador Aritmético

Prioridade

Exponenciação

3

Multiplicação

2

Divisão

2

Adição

1

Subtração

1
Operador Lógico
E

3

OU

2

NÃO

(2 + 2)/2 resulta 2
2 + 2/2 resulta 3

Prioridade

1

Operador

Prioridade

Aritméticos

3

Relacionais

2

Lógicos

1

31
Tabelas de Prioridade –
Operadores Lógicos

(2>3) ou (3<2) e (2<3) //resultado seria Falso
(2>3) e (3<2) ou (2<3) //resultado seria Verdadeiro

32
Prioridade entre
categorias de operadores

Atenção:
O software VisuAlg não possui relacionamento de categorias.
2*5>3 ou 5+1<2 e 2<7-2 // resulta em erro.
(2*5>3) ou (5+1<2) e (2<7-2) // certo seria assim.

33
Linearização de
Expressões


Para a construção de algoritmos que realizam
cálculo matemáticos, todas as expressões
aritméticas devem ser linearizadas, ou seja,
colocadas em linhas, devendo também ser feito
o mapeamento dos operadores da aritmética
tradicional para os do Português Estruturado.

34
Variáveis

35

Conteúdo

Variável
Tipo

Nome
Regras no nome das
variáveis
1.

nomes de variáveis não podem ser iguais a
palavras reservadas;

2.

nomes de variáveis devem possuir como primeiro
caractere uma letra ou sublinhado '_' (os outros
caracteres podem ser letras, números e
sublinhado);

3.

nomes de variáveis devem ter no máximo 127
caracteres;

4.

Nomes de variáveis não podem conter espaços
em branco;

5.

na sintaxe do Português Estruturado, não há
diferença entre letras maiúsculas de minúsculas
(NOME é o mesmo que noMe).

36
Tipos de Dados

37

Tipos

Numéricos

Literal

Lógico

Algoritmo 01 - Semana 01

  • 1.
    1 Algoritmo 1 Semana 01 INTRODUÇÃO– DEFINIÇÃO - CONCEITOS
  • 2.
    Ementa  Desenvolver algoritmos pormeio de divisão modular e refinamentos sucessivos. Interpretar pseudocódigos, algoritmos e outras especificações para codificar programas. Avaliar resultados de testes dos programas desenvolvidos. Integrar módulos desenvolvidos separadamente. 2
  • 3.
    Objetivos  Geral   Capacitar o alunopara o desenvolvimento de soluções de problemas usando técnicas estruturadas de programação, algoritmos e estruturas estáticas de dados. Específicos  Utilizar modelos, pseudocódigos e ferramentas na representação da solução de problemas.  Redigir instruções de uso dos programas implementados.  Utilizar tipos de dados básicos e operadores aritméticos, lógicos e relacionais.  Utilizar instruções de seleção para escolher entre ações alternativas.  Utilizar estruturas de repetição para executar instruções em um programa repetidamente. Implementar subalgoritmos. 3
  • 4.
    Avaliação  Provas Bimestrais –Peso 8  Trabalhos Bimestrais – Peso 2 4
  • 5.
  • 6.
    Conteúdo Programático P1  Introdução   Tipos dealgoritmos   Conceito Descrição geral dos algoritmos LÓGICA DE PROGRAMAÇÃO   Princípios de resolução de problemas  Tipos de variáveis  Uso de Constantes  Fórmulas matemáticas   Formas de representação gráfica Instruções básicas TOMADAS DE DECISÃO  Desvio condicional simples  Desvio condicional composto  Desvio condicional encadeados 6
  • 7.
    Conteúdo Programático P2  LAÇOS DEREPETIÇÃO  Looping com teste lógico no início  Looping com teste lógico no fim  Looping com variável de controle 7
  • 8.
    Conteúdo Programático P3  MATRIZES  Matrizes deuma dimensão ou vetores  Matrizes com mais de uma dimensão 8
  • 9.
    Conteúdo Programático P4  Modularização deprogramas  Procedimentos e funções  Passagem de parâmetros 9
  • 10.
  • 11.
    Algoritmo  Um algoritmo éuma sequência de instruções finita e ordenada de forma lógica para a resolução de uma determinada tarefa ou problema. 11  São exemplos de algoritmos instruções de montagem, receitas, manuais de uso, etc.
  • 12.
    Algoritmo  Um algoritmo nãoé a solução do problema, pois, se assim fosse, cada problema teria um único algoritmo;  Um algoritmo é um caminho para a solução de um problema.  Em geral, existem muitos (senão infinitos) caminhos que levam a uma solução satisfatória. 12
  • 13.
  • 14.
    Exemplo 2 Algoritmo parafritar um ovo  1. Colocar um ovo na frigideira  2. Esperar o ovo ficar frito  3. Remover o ovo da frigideira 14
  • 15.
    Exemplo 3 Algoritmo parafritar um ovo  1. Retirar um ovo da geladeira  2. Colocar a frigideira no fogo  3. Colocar óleo  4. Esperar até o óleo ficar quente  5. Quebrar o ovo separando a casca  6. Colocar o conteúdo do ovo na frigideira  7. Esperar um minuto  8. Retirar o ovo da frigideira  9. Apagar o fogo 15
  • 16.
    Exemplo 4 Algoritmo Lavara cabeça 1 – Início 2 – Molhe o cabelo 3 – Coloque Shampoo 4 – Faça Massagem 5 – Enxágüe 6 – Repita o Processo 7 – Fim 16
  • 17.
    Exemplo 4 Algoritmo Lavara cabeça 1 – Início 2 – Molhe o cabelo 3 – Coloque Shampoo 4 – Faça Massagem 5 – Enxágue 6 – Repita o Processo 7 – Fim 1) É a descrição de um procedimento rotineiro; 2) Tem um INÍCIO e um FIM claros; 3) A descrição é feita passo a passo, de maneira bem definida; 4) Há imperfeições: 4.1) Não especifica a quantidade de shampoo; 4.2) Não especifica quantas vezes o processo deve ser repetido; 4.3) Não especifica qual o processo ou qual passo que deve ser repetido. 17
  • 18.
    Exemplo 4 Algoritmo Lavara cabeça 18 1 – Início 2 – Molhe o Cabelo 3 – Repita 2 (duas) vezes: 3.1 – Coloque a quantidade correspondente a uma tampa de shampoo 3.2 – Faça massagem durante 1 minuto 3.3 – Enxágüe 4 – Fim
  • 19.
    Qualidades de umbom Algoritmo  Definição Perfeita   Deve descrever exatamente quais são as instruções que devem ser executadas e em que seqüência. Deve ser tornado explícito o maior número possível de informações, pois a falta de alguma informação pode levar a uma interpretação errada do algoritmo; Ausência de Ambigüidade  Não deve deixar dúvidas sobre o que deve ser feito. A ambigüidade acerca do que deve ser feito também pode levar a uma interpretação errada do algoritmo; 19
  • 20.
    Qualidades de umbom Algoritmo  Eficácia   Conseguir resolver o problema em qualquer situação. Todas as situações de exceção que possam alterar o comportamento do algoritmo devem ser especificadas e tratadas; Eficiência  Resolver o problema com o mínimo de recursos. Sempre se deve buscar aquele algoritmo que, dentre os diversos algoritmos que resolvam um mesmo problema, utilize a menor quantidade de recursos. 20
  • 21.
    Estratégias na Construção deAlgoritmos  Especifique o problema claramente e entenda-o completamente;  Explicite todos os detalhes supérfluos;  Entre no problema (envolva-se totalmente com o problema);  Use todas as informações disponíveis;  Decomponha o problema (Top-Down);  Use o sentido inverso, se necessário (Bottom-Up). 21
  • 22.
  • 23.
    Como Construir Algoritmos  Análise Preliminar   Solução   Executeo algoritmo desenvolvido com dados para os quais o resultado seja conhecido. O ideal é que o universo dos dados tenha todas as combinações possíveis. Note que a qualidade de um algoritmo pode ser limitada por fatores como tempo para a sua confecção e recursos disponíveis. Alteração   Desenvolva um algoritmo para resolver o problema. Teste de Qualidade   Entenda o problema com a maior precisão possível, identifique os dados; identifique os resultados desejados. Se o resultado do teste de qualidade não for satisfatório, altere o algoritmo e submeta-o a um novo teste de qualidade. Produto Final  O algoritmo concluído e testado, pronto para ser aplicado. 23
  • 24.
    Portugol  A Linguagem Estruturadaé a forma que tem sido mais utilizada para a elaboração de algoritmos.  É a forma que mais se assemelha com a forma em que os programas são escritos nas linguagens de programação. 24
  • 25.
  • 26.
    Operadores Relacionais Operador Simbolo Menor < Menor ouIgual <= Maior > Maior ou Igual >= Diferente <> Igual = Os operadores relacionais retornam valores lógicos (Verdadeiro ou Falso) 26
  • 27.
    Operadores Lógicos Operador Simbolo Significado Multiplicação lógica E ResultaVERDADEIRO se ambas as partes forem verdadeiras. Adição lógica OU Resulta VERDADEIRO se uma das partes é verdadeira. Negação NÃO Nega uma afirmação, invertendo o seu valor lógico: se for VERDADEIRO torna-se FALSO, se for FALSO torna-se VERDADEIRO. 27
  • 28.
  • 29.
    Exemplo – Operadores Relacionais  2+5>4resulta VERDADEIRO  3<>3 resulta FALSO 29
  • 30.
    Operadores Lógicos – Exemplo  (2+5>4)e (3<>3) resulta FALSO,  pois VERDADEIRO e FALSO resulta FALSO. 30
  • 31.
    Prioridades de Operadores OperadorAritmético Prioridade Exponenciação 3 Multiplicação 2 Divisão 2 Adição 1 Subtração 1 Operador Lógico E 3 OU 2 NÃO (2 + 2)/2 resulta 2 2 + 2/2 resulta 3 Prioridade 1 Operador Prioridade Aritméticos 3 Relacionais 2 Lógicos 1 31
  • 32.
    Tabelas de Prioridade– Operadores Lógicos (2>3) ou (3<2) e (2<3) //resultado seria Falso (2>3) e (3<2) ou (2<3) //resultado seria Verdadeiro 32
  • 33.
    Prioridade entre categorias deoperadores Atenção: O software VisuAlg não possui relacionamento de categorias. 2*5>3 ou 5+1<2 e 2<7-2 // resulta em erro. (2*5>3) ou (5+1<2) e (2<7-2) // certo seria assim. 33
  • 34.
    Linearização de Expressões  Para aconstrução de algoritmos que realizam cálculo matemáticos, todas as expressões aritméticas devem ser linearizadas, ou seja, colocadas em linhas, devendo também ser feito o mapeamento dos operadores da aritmética tradicional para os do Português Estruturado. 34
  • 35.
  • 36.
    Regras no nomedas variáveis 1. nomes de variáveis não podem ser iguais a palavras reservadas; 2. nomes de variáveis devem possuir como primeiro caractere uma letra ou sublinhado '_' (os outros caracteres podem ser letras, números e sublinhado); 3. nomes de variáveis devem ter no máximo 127 caracteres; 4. Nomes de variáveis não podem conter espaços em branco; 5. na sintaxe do Português Estruturado, não há diferença entre letras maiúsculas de minúsculas (NOME é o mesmo que noMe). 36
  • 37.