L GORITMOS A LGORITMOS Hélio Andrade Instrutor de Informática contato@devmaster.club
COM CO M V I S A U A LG
C ONTEÚDO P ROGRAMÁTICO
CONTEÚDO PROGRAMÁTICO 1.
O Q UE UE É UM ALGORITMO?
11.
FUNÇÕES E PROCEDIMENTOS
2.
ESTRUTURAS FUNDAMENTAIS DE UM ALGORITMO
12.
PASSAGEM DE PARÂMETRO
13.
MANIPULAÇÃO DE ARQUIVOS
3.
REPRESENTAÇÃO DE UM ALGORITMO
4.
TIPOS DE DADOS
5.
VARIÁVEIS E CONSTANTES
6.
OPERADORES
7.
PROGRAMAÇÃO SEQUENCIAL
8.
A TOMADA DE DECISÃO
9.
LAÇOS DE REPETIÇÃO
10.
ESTRUTURAS DE DADOS
L ÓGICA DE P ROGRAMAÇÃO
O QUE É UM ALGORITMO
O QUE É UM ALGORITMO?
A programação de computadores tem como fundamento o algoritmo. Definição: “Um
algoritmo é uma sequência finita de instruções bem definidas e não ambíguas, cada uma das quais podendo ser executada num período de tempo finito e com uma quantidade de esforço finita.”
EXEMPLO: TOMAR BANHO Algoritmo “TOMAR BANHO” 1. 2. 3. 4. 5. 6. 7. 8.
Entrar no banheiro; Tirar a roupa; Abrir o registro; Ensaboar-se; Enxaguar o corpo; Passar shampoo nos cabelos; Enxaguar o cabelo; Fechar o registro.
EXEMPLO II: TROCAR PNEU FURADO Algoritmo “TROCAR PNEU” 1. Pegar o macaco; 2. Colocar o macaco embaixo do carro; 3. Levantar o carro; 4. Pegar chave de roda; 5. Desparafusar a roda; 6. Retirar a roda; 7. Colocar o estepe; 8. Reparafusar o pneu; 9. Abaixar o carro; 10.Tirar o macaco.
EXEMPLO III: FAZER BOLO Algoritmo “FAZER BOLO” 1. 2. 3. 4. 5. 6.
7.
Bata as claras em neve; Bata bem as gemas com a margarina e o açúcar; Acrescente o leite e farinha aos poucos sem parar de bater; Por último agregue as claras em neve e o fermento; Coloque em forma grande de furo central untada e enfarinhada; Asse em forno médio, préaquecido, por aproximadamente 40 minutos; Quando espetar um palito e sair limpo estará assado.
O QUE É UM ALGORITMO?
É uma maneira particular de resolver um problema. Constitui-se em: um conjunto de ações sequenciais ordenadas logicamente,
realizáveis em um intervalo de tempo considerado aceitável e
consumindo a menor quantidade de recursos possível. Nem todos os problemas podem ser " resolvidos" por meio de algoritmos.
L ÓGICA DE P ROGRAMAÇÃO
ESTRUTURAS FUNDAMENTAIS
ESTRUTURAS FUNDAMENTAIS
Os algoritmos possuem 3 (três) estruturas que são sua “matéria-prima”:
Sequenciais;
de Repetição;
de Decisão. Escrever bons algoritmos, na prática, significa dominar tais estruturas!
ESTRUTURAS SEQUENCIAIS
A ordem em que as tarefas/intruções são realizadas é importante.
Não podemos, por exemplo, bater os ovos antes de quebrá-los dentro da batedeira ou tomar banho sem antes tirarmos a roupa .
A sequência correta de instruções a ser executada é determinante para o sucesso de nosso algoritmo!
ESTRUTURAS DE DECISÃO
Introduzem um desvio condicional na sequência de execução das instruções de um algoritmo.
Caso a condição dada seja satisfeita, será executado um dado bloco de instruções; caso não, outro bloco será executado.
ESTRUTURAS DE REPETIÇÃO São semelhantes às estruturas de decisão, pois possuem uma condição prévia para que uma dada instrução (ou conjunto de instruções) seja executada.
A diferença é que há uma repetição...
ESTRUTURAS FUNDAMENTAIS DOS ALGORITMOS
INSTRUÇÃO_1
INSTRUÇÕES CONDIÇÃO
INSTRUÇÃO_2 CONDIÇÃO INSTRUÇÃO_N
SEQUÊNCIA
DECISÃO
REPETIÇÃO
L ÓGICA DE P ROGRAMAÇÃO
REPRESENTAÇÃO DE UM ALGORITMO
DESCRIÇÃO EM LINGUAGEM CORRENTE
*** Cálculo de média *** 1. Receba a primeira nota da disciplina. 2. Receba a segunda nota da disciplina. 3. Some as duas notas e divida o resultado por 2. 4. Se a média for maior ou igual a 7, então exiba "Aprovado!", senão exiba "Reprovado!".
FLUXOGRAMA / DIAGRAMAS
*** Cálculo de média *** início
1ª nota 2ª nota
média <- (1ª nota + 2ª nota) / 2
“SIM”
“NÃO”
média >= 7.0
APROVADO !
REPROVADO!
fim
LINGUAGEM DE PROGRAMAÇÃO
*** Cálculo de média ***
(PSEUDO)LINGUAGEM DE PROGRAMAÇÃO (II)
*** Cálculo de média ***
L ÓGICA DE P ROGRAMAÇÃO
TIPOS DE DADOS
TIPOS DE DADOS
Um algoritmo realiza um conjunto de instruções numa determinada ordem sobre um conjunto de dados de entrada, tendo em vista um conjunto de dados de saída desejado.
TIPOS DE DADOS
Seres humanos manipulam em suas atividades profissionais e pessoais vários tipos de dados e informações:
senhas dos mais variados tipos, números de contas bancárias, datas de aniversários, o valor do nosso salário, uma música que nos marcou, o cheiro de um perfume, etc.
TIPOS DE DADOS
Com os computadores, ocorre algo parecido:
Para que ocorra o processamento sobre os dados de entrada é necessário que o computador “saiba” de antemão os tipos específicos deles.
Os tipos de dados podem variar de uma linguagem para outra; os mais comuns são:
numéricos (inteiros e reais) literais (caractere e cadeias) lógicos
TIPOS DE DADOS INTEIROS
Tipos Inteiros São os dados numéricos constituídos pelo conjunto dos números inteiros, ou seja, o conjunto dos naturais mais os números negativos.
Exemplos:
Eu tenho 25 anos de idade.
João tem 2 filhos.
TIPOS DE DADOS REAIS
Tipos Reais São os dados numéricos constituídos pelo conjunto dos números naturais, inteiros e racionais. Exemplos:
A área de um terreno é igual a 123,50 m².
O saldo da conta é R$ -258,69.
A temperatura ambiente é de -20,35 °C.
No Brasil, separamos a parte inteira da parte decimal de um número utilizando a vírgula (,). Na construção de algoritmos, a notação a ser usada é a inglesa, que utiliza o ponto (.).
TIPOS DE DADOS LITERAIS
Tipos Literais São constituídos por sequências de letras, números e símbolos especiais, incluindo os espaços em branco. Exemplos:
"Celular: (98) 1234-5678".
"CPF: 123.456.789-10".
"Endereço: Rua Fulano de Tal, nº 1234".
"Hélio Andrade". Outras denominações do tipo de dado literal encontradas nos livros técnicos são: cadeia , string , alfanumérico.
TIPOS DE DADOS LÓGICOS
Tipos Lógicos São os dados que assumem os valores VERDADEIRO ou FALSO. São também conhecidos como tipos de dados booleanos. Exemplos:
A porta pode estar aberta ou fechada.
Você pode estar feliz ou triste.
L ÓGICA DE P ROGRAMAÇÃO
VARIÁVEIS & CONSTANTES
VARIÁVEIS & CONSTANTES
O computador é uma máquina que recebe dados, processaos e retorna os resultados obtidos. Tal processamento é executado por meio do armazenamento dos dados em memória por meio da utilização de variáveis e constantes.
VARIÁVEIS - DEFINIÇÃO
Variável: É uma região de memória previamente identificada que tem por finalidade armazenar dados ou informações por um determinado espaço de tempo.
Armazena apenas um valor por vez;
tal valor está relacionado ao tipo de dado definido para a variável. Toda variável, antes de ser usada dentro do programa, deve ser declarada escolhendo-se um nome adequado e indicando-se o seu tipo.
VARIÁVEIS - DEFINIÇÃO
Imagine a memória principal como sendo um armário, onde:
uma determinada gaveta (variável) possui uma identificação única (nome da variável) e armazena apenas um tipo de arquivo (tipo de dado da variável).
VARIÁVEIS - NOMENCLATURA
Nomenclatura de Variáveis: O nome de uma variável deve começar por uma letra ou por um caractere “_” (underline). Não pode começar com um número. Os demais caracteres de uma variável podem ser letras, dígitos e “_”. Não pode ter espaços em branco. São reconhecidos os primeiros 31 caracteres para diferenciar uma variável de outra. Não pode ser uma palavra reservada. Em algumas linguagens de programação há diferença entre caracteres maiúsculos e minúsculos.
CONSTANTES - DEFINIÇÃO
Constantes: Às vezes, é desejável que, além de uma variável possuir um valor pré-definido, este valor não seja modificado. Portanto, constantes são valores fixos, que não se modificam no decorrer da execução do programa. Por exemplo: O número π (aproximadamente, 3,14). Os nomes dados às constantes possuem as mesmas restrições dos nomes de variáveis.
L ÓGICA DE P ROGRAMAÇÃO
OPERADORES
OPERADORES – DEFINIÇÃO E CLASSIFICAÇÃO
Um operador simboliza uma operação efetuada sobre variáveis e constantes, realizando o processamento de dados. São classificados em três tipos: Operadores Aritméticos; Operadores Relacionais;
Operadores Lógicos.
OPERADORES ARITMÉTICOS
São utilizados para executar operações numéricas. OPERADOR
%
OPERAÇÃO
/
Divisão
*
Multiplicação
+
Adição
-
Subtração
ou
mod
^
raizq(valor
DESCRIÇÃO
Operadores aritméticos tradicionais de adição, subtração, multiplicação e divisão.
Ex.: 2 + 4 = 6; 2 * 10 = 20; 10 / 2 = 5.
Operador de módulo; retorna o resto da divisão inteira.
Ex.: 8 % 3 = 2.
Operador de potenciação.
Ex.: 5² => 5^2 = 25.
Raiz quadrada.
Ex.:
Resto da divisão
Exponenciação
numérico)
Raiz quadrada
= 4 => raizq(16) = 4.
OPERADORES ARITMÉTICOS
Exemplos de expressões numéricas: Na Matemática
Em Algoritmo
- [- 3 + 2 – (4 - 5 - 6)] + 16
- (- 3 + 2 – (4 - 5 - 6)) + raizq(16)
{- 5 + [ - 8 + 3 x (- 4 + 9) - 3 ]}
(- 5 + ( - 8 + 3 * (- 4 + 9) - 3 ))
5 ÷ { 10 x 2 + [20 ÷ 4] – (10 + 2)}
5 / ( 10 * 2 + (20 / 4) – (10 + 2))
2³ + [5 x 2 ÷ (4 ÷ 2 + 3)]
2^3 + (5 * 2 / (4 / 2 + ))
Exemplos de fórmulas matemáticas: Na Matemática
Em Algoritmo
média =
(1ª nota + 2ª nota) 2
media ← (nota1 + nota2) / 2
A = π r
area ← pi * raio^2
Novo Salário = 1,10 x Salário Antigo
novo_salario ← 1.10 * salario_antigo
Raiz quadrada = 1024
raiz_quadrada ← raizq(1024)
OPERADORES RELACIONAIS
São utilizados em expressões lógicas para se testar a relação entre dois valores do mesmo tipo, retornando VERDADEIRO ou FALSO. OPERADOR
= <>
OPERAÇÃO
Igual a Diferente de
EXEMPLO
RESULTADO
7 = 7
VERDADEIRO
10
<> 10
FALSO
>
Maior que
10 > 20
FALSO
<
Menor que
100 < 1000
VERDADEIRO
>=
Maior ou igual a
1234 >= 1234
VERDADEIRO
<=
Menor ou igual a
1,25 <= 2,50
VERDADEIRO
OPERADORES LÓGICOS
São utilizados quando há a necessidade de serem testadas duas ou mais condições dentro de um algoritmo simultaneamente. Os operadores lógicos são: OPERADOR
OPERAÇÃO
nao
Negação
e
Conjunção
Operador que resulta VERDADEIRO somente se todos os seus operandos lógicos forem verdadeiros.
Disjunção
Operador que resulta VERDADEIRO quando pelo menos um dos seus operandos lógicos for verdadeiro.
ou
xou
OU Exclusivo
DESCRIÇÃO
Operador unário de negação
Operador que resulta VERDADEIRO se seus dois operandos lógicos forem diferentes, e FALSO se forem iguais.
OPERADORES – PRECEDÊNCIA
OPERADORES
ASSOCIATIVIDADE
Esquerda para direita
PRECEDÊNCIA Alta
Direita para esquerda Esquerda para direita Esquerda para direita Esquerda para direita Esquerda para direita Esquerda para direita Esquerda para direita Esquerda para direita
Baixa
L ÓGICA DE P ROGRAMAÇÃO
PROGRAMAÇÃO SEQUENCIAL
ESTRUTURA BÁSICA DE UM ALGORITMO EM VISUALG
Todos os nossos algoritmos serão escritos em Portugol (Português Estruturado) daqui para frente e terão a seguinte estrutura básica:
ENTRADA E SAÍDA DE DADOS
Como já sabemos, o computador recebe dados de entrada, realiza um conjunto de instruções/operações numa determinada ordem sobre esses dados, e exibe um conjunto de dados de saída.
COMANDOS DE ENTRADA E SAÍDA DE DADOS
leia()
escreva()
LEMBRE-SE: Em nosso curso, o comando leia() recebe dados digitados no teclado e armazena-os nas variáveis do algoritmo, e comando escreva() exibe o dados na saída de dado padrão ( tela do computador).
COMANDO DE ENTRADA DE DADOS leia() Recebe valores digitados pelos usuário, atribuindo-os às variáveis cujos nomes estão em
É respeitada a ordem especificada na lista de variáveis de entrada Exemplos:
leia(nota1)
leia(idade, altura)
COMANDO DE SAÍDA DE DADOS escreva() Escreve no dispositivo de saída padrão o conteúdo de cada uma das expressões que compõem As expressões dentro desta lista devem estar separadas por vírgulas Depois de serem avaliadas, seus resultados são impressos na ordem indicada Exemplos:
escreva(nota1, nota2)
escreva(“Altura = ”, altura)
PRIMEIRO ALGORITMO EM VISUALG Em 1957, um matemático chamado George Polya descreveu Polya descreveu um conjunto de passos genéricos para a resolução de um problema: problema:
Compreensão do problema
Construção de uma estratégia para resolver o problema
Execução da estratégia
Revisão da solução s olução encontrada
O processo de desenvolvimento de um algoritmo pode algoritmo pode ser visto como um processo de resolução de um problema um problema..
L ÓGICA D E P ROGRAMAÇÃO
A TOMADA DE DECISÃO
A TOMADA DE DECISÃO SIMPLES – SE...ENTAO
Estrutura Estrutura de decisão se...entao se a nota do aluno for maior ou igual a 7, 7 , entao: exiba “Aprovado”
MÉDIA >= 7
FALSO
VERDADEIRO
Exibe: “Aprovado”
A TOMADA DE DECISÃO SIMPLES – SE...ENTAO
Estrutura de decisão se...entao Condição a ser testada.
Instrução a ser executada caso a condição seja satisfeita.
se (media >= 7) entao escreva("Aprovado!") fimse
Instrução que delimita o escopo da estrutura. MÉDIA >= 7 FALSO
VERDADEIRO
Exibe: “Aprovado”
A TOMADA DE DECISÃO SIMPLES – EXEMPLO
Estrutura condicional.
A TOMADA DE DECISÃO COMPOSTA – SE...ENTAO...SENAO
Estrutura de decisão se...entao...senao se
“a
nota do aluno é maior que ou igual a exiba “Aprovado”
7”,
entao:
senão exiba
Exibe: “Reprovado”
“Reprovado”
VERDADEIRO
FALSO MÉDIA >= 7
Exibe: “Aprovado”
A TOMADA DE DECISÃO SIMPLES – SE...ENTAO
Estrutura de decisão se...entao Instrução a ser executada caso a condição não seja satisfeita.
Condição a ser testada.
Instrução a ser executada caso a condição seja satisfeita.
se (media >= 7) entao escreva("Aprovado!") senao escreva(“Reprovado !") fimse
Instrução que delimita o escopo da estrutura. Exibe: “Reprovado”
FALSO
MÉDIA >= 7
VERDADEIRO
Exibe: “Aprovado”
ESTRUTURA DE DECISÃO MÚLTIPLA – ESCOLHA ...CASO
Decisão Múltipla escolha...caso
V
F
V
F
F
V
ESTRUTURA DE DECISÃO MÚLTIPLA – ESCOLHA ...CASO
Decisão Múltipla escolha...caso escolha caso , , ...,
caso ,
, ...,
...
outrocaso
fimescolha
L ÓGICA DE P ROGRAMAÇÃO
ESTRUTURAS DE REPETIÇÃO
ESTRUTURAS DE R EPETIÇÃO | ENQUANTO...FACA
enquanto...faca INÍCIO
PASSO #1: Declare uma variável “contadora” do tipo inteiro.
Portugol
Fluxograma
algoritmo "Enquanto" var contagem : inteiro inicio contagem <- 1
“NÃO”
Condição
PASSO #3: Especifique a condição.
PASSO #2: “SIM”
Instruções executadas enquanto a condição é verdadeira
FIM
Inicialize a variável contadora.
PASSO #4: Incremente a variável contadora.
enquanto (contagem <= 100) faca contagem <- contagem + 1 fimenquanto fimalgoritmo
ESTRUTURAS DE R EPETIÇÃO | ENQUANTO...FACA Ex.: Contagem de 1 até 10 Teste lógico no início do loop.
Inicialize a variável contadora.
n <- 1 Especifique a condição.
n <= 10
“NÃO”
“SIM”
escreva(n)
n <- n + 1 Incremente a variável contadora.
Instrução a ser executada 10 VEZES.
ESTRUTURAS DE R EPETIÇÃO | ENQUANTO...FACA Ex.: Contagem de 1 até 10
PASSO #2:
Como iremos contar de 1 até 10, a variável de contagem deve ser inicializada com 1.
algoritmo "Enquanto" var n : inteiro inicio n <- 1
Como a contagem “pula” de 1 unidade, a variável deve ser incrementada em +1.
Declaração da variável de contagem.
PASSO #3: contadora instrução
Enquanto a variável
n for menor ou igual a 10, escreval(n)
n <- n + 1 fimenquanto fimalgoritmo
a
será executada.
enquanto (n <= 10) faca escreval(n)
PASSO #4:
PASSO #1:
Instrução a ser executada 10 VEZES.
ESTRUTURAS DE R EPETIÇÃO | REPITA ... ATE
repita...ate
PASSO #1: Declare uma variável “contadora” do tipo inteiro.
INÍCIO
Fluxograma
Portugol
algoritmo “Repita" var contagem : inteiro inicio contagem <- 1
Instruções executadas até que a condição seja verdadeira
PASSO #3:
Condição “SIM”
“NÃO”
Incremente a variável contadora.
PASSO #2:
Inicialize a variável contadora.
repita contagem <- contagem + 1 ate contagem > 100 fimalgoritmo PASSO #4: Especifique a condição.
ESTRUTURAS DE R EPETIÇÃO | REPITA ... ATE Ex.: Contagem de 1 até 10 Inicialize a variável contadora.
n <- 1 Instrução a ser executada 10 VEZES.
Incremente a variável contadora.
escreva(n)
n <- n + 1
n > 10 Especifique a condição.
“SIM”
“NÃO”
Teste lógico no final do loop.