Algoritmos
Algoritmos
Algoritmos
Planejamentos
1º etapa: 2º etapa:
Planejamentos
Avaliações:
A1:
Prova escrita – 10,0
A2:
Atividade prática – 7,0
Atividades avulsas – 3,0
Algoritmos
Prof. Rodrigo Sena
Plano de aula
O que é um algoritmo?
Algoritmos
Prof. Rodrigo Sena
O que é um algoritmo?
Problema
Análise
Como construir
Algoritmos Solução Alterações
Teste de qualidade
Produto final
Algoritmos
Prof. Rodrigo Sena
Testes de qualidade
Perfeitamente definido
Não ambíguo
Eficaz
Eficiente
Análise de algoritmo
1 –Molhe o cabelo
2 – Coloque o xampu
3 - Massageie
4 - Enxágüe
5 - Repita
Algoritmos
Prof. Rodrigo Sena
Análise de algoritmo
Solução:
1 –Molhe o cabelo
2 – Repita 2 vezes
2.1 – Coloque a quantidade correspondente a uma tampa de xampu no cabelo
2.2 – Massageie o cabelo até fazer espuma
2.3 – Enxágüe até tirar o xampu
Algoritmos
Prof. Rodrigo Sena
Tipos de algoritmo:
Descrição narrativa
Fluxograma
Pseudo-Código
Programa
Algoritmos
Prof. Rodrigo Sena
Descrição narrativa
Exemplo:
Receita culinária
Fluxograma
Não
Sim
Assistência
técnica
Algoritmos
Prof. Rodrigo Sena
Pseudo-Código
Portugol
Algoritmo SomaValor
fim algoritmo
Algoritmos
Prof. Rodrigo Sena
Processamento de algoritmos
Processamento sequencial
Exemplo:
Algoritmo Média
1 – Some as duas primeiras notas
2 – Some o resultado da instrução 1 com a terceira nota
3 – Some o resultado da instrução 2 com a quarta nota
4 – Some o resultado da instrução 3 com a quinta nota
5 – Divida o resultado da instrução 4 por 5
Algoritmos
Prof. Rodrigo Sena
Processamento condicional
Exemplo:
Algoritmo Média
1 – Some as duas primeiras notas
2 – Some o resultado da instrução 1 com a terceira nota
3 – Some o resultado da instrução 2 com a quarta nota
4 – Some o resultado da instrução 3 com a quinta nota
5 – Divida o resultado da instrução 4 por 5
6 – Se o resultado da instrução 5 for igual ou maior que 7
7– Aprove o aluno
8 - Se o resultado da instrução 5 for menor que 7
9– Reprove o aluno
IDENTAÇÃO
Algoritmos
Prof. Rodrigo Sena
Exemplo:
Algoritmo Média
1 – Para cada aluno da sala faça
2– Some as duas primeiras notas
3– Some o resultado da instrução 2 com a terceira nota
4– Some o resultado da instrução 3 com a quarta nota
5– Some o resultado da instrução 4 com a quinta nota
6– Divida o resultado da instrução 5 por 5
Algoritmos
Prof. Rodrigo Sena
Exemplos de algoritmos
Fluxogramas
1- Em uma escola, a média final é dada pela média aritmética de três notas. E a
mesma tem o seguinte esquema de avaliação:
Desenvolva um algoritmo que a partir da entrada das três notas mostre a situação
do aluno.
No caso do aluno em recuperação e prova final, mostre também quanto o aluno irá
precisar para passar.
No caso da recuperação a nota necessária para passar é dada por 10 – Média + 2
e na prova final é dado por 10 – Média.
Algoritmos
Prof. Rodrigo Sena
Exemplos de algoritmos
Fluxogramas
Algoritmos
Prof. Rodrigo Sena
Exemplos de algoritmos
Fluxogramas
Suponha as entradas A, B e C, como sendo 12, 5 e 9, respectivamente.
Algoritmos
Prof. Rodrigo Sena
Exemplos de algoritmos
Fluxogramas
Suponha as entradas A, B e C, como sendo 12, 5 e 9, respectivamente.
•a) 12, 0, 1.
•b) 12, 5, 0.
•c) 3, 5, 11.
•d) 3, 5, 9.
•e) 12, 5, 11.
Algoritmos
Prof. Rodrigo Sena
Variáveis
endereço Variável
10CF NOME_ALUNO
2B00 FALTAS
0200 MEDIA
Algoritmos
Prof. Rodrigo Sena
Tipos de variáveis
Verdadeiro ou falso
Algoritmos
Prof. Rodrigo Sena
Atribuição de conteúdo
<Nome_da_variavel> Expressão
Exemplo 1: Exemplo 2:
Conceito de constante
Exemplo:
PI = 3,14
Declaração de constantes
Algumas linguagens de programação possuem métodos específicos para
declarar e atribuir valores em constantes, mas em geral pode-se tratar
como uma variável.
Declarações
Var
a:inteiro
b,c: real
declare
a:inteiro
b,c: real
Algoritmos
Prof. Rodrigo Sena
Exercício:
Algoritmo Média
1 – Some as duas primeiras notas
2 – Some o resultado da instrução 1 com a terceira nota
3 – Some o resultado da instrução 2 com a quarta nota
4 – Some o resultado da instrução 3 com a quinta nota
5 – Divida o resultado da instrução 4 por 5
Algoritmos
Prof. Rodrigo Sena
Possível resultado:
Algoritmo Média
VAR
NOTA1, NOTA2, NOTA3, NOTA4, NOTA5, MEDIA: Real
DIVIDE: inteiro (Variavel que não terá seu dado alterado)
DIVIDE 5
Expressões e operandos
Adição + Igual = E
Subtração - Diferente <> OU
Multiplicação * Maior >
Divisão / Menor <
Exponenciação ^ Maior ou igual >=
Menor ou igual <=
Algoritmos
Prof. Rodrigo Sena
1. Algoritmos devem ser feitos para serem lidos por seres humanos.
Portugol
algoritmo MeuAlgoritmo
var
{Declaração de variáveis}
inicio
{Instruções}
fimalgoritmo
Algoritmos
Prof. Rodrigo Sena
Saída de dados
Saída de dados
PI 3.14
Saída de dados
Exemplo:
Saída de dados
Exemplo:
Algoritmo “alomundo”
Var
Inicio
fimalgoritmo
Algoritmos
Prof. Rodrigo Sena
Entrada de dados
Para que existam dados para ser manipulados, é preciso que o usuário
informa algum valor que deverá ser armazenado nas variáveis.
Ex.:
escreva (“Digite seu nome: “)
leia (NOME)
Aprimore o seu primeiro algoritmo de forma que ele solicite seu nome e a
saída seja:
Algoritmo “alomundo”
Var
NOME: caracter
Inicio
fimalgoritmo
Algoritmos
Prof. Rodrigo Sena
Para que a saída seja organizada em linhas diferentes, pode-se usar uma
variação da instrução escreva. O escreval.
Essa instrução irá aplicar uma quebra de linha ao término da sua execução.
Dessa forma, pode-se reescrever o algoritmo assim:
Algoritmo “alomundo”
Var
NOME: caracter
Inicio
Comentários
Exemplo
algoritmo MediaAluno
Solução:
var
NOTA1,NOTA2, MEDIA: real
DIVIDE: inteiro
inicio
DIVIDE 2
escreva (“Digite a primeira nota: “)
leia (NOTA1)
escreva (“Digite a segunda nota: “)
leia (NOTA2)
MEDIA (NOTA1 + NOTA2) / DIVIDE
escreva (“A média do aluno é: “, MEDIA)
fimalgoritmo
Algoritmos
Prof. Rodrigo Sena
algoritmo MediaAluno
// Algoritmo que calcula a média de 2 notas de um aluno
// Autor: Rodrigo Sena
var
NOTA1,NOTA2, MEDIA: real // Variáveis que armazenam as notas e o resultado
DIVIDE: inteiro // variável com o fator de divisão para calcular a média
inicio
DIVIDE 2
escreva (“Digite a primeira nota: “)
leia (NOTA1) // Solicita a NOTA1 ao usuário
escreva (“Digite a segunda nota: “)
leia (NOTA2) // Solicita a NOTA2 ao usuário
MEDIA (NOTA1 + NOTA2) / DIVIDE // Realiza o cálculo da média
escreva (“A média do aluno é: “, MEDIA) // Apresentação do resultado
fimalgoritmo
Algoritmos
Prof. Rodrigo Sena
algoritmo MediaAluno
Otimização de variáveis
var
NOTA1,NOTA2: real
DIVIDE: inteiro
inicio
DIVIDE 2
escreva (“Digite a primeira nota: “)
leia (NOTA1)
escreva (“Digite a segunda nota: “)
leia (NOTA2)
NOTA1 (NOTA1 + NOTA2) / DIVIDE
escreva (“A média do aluno é: “, NOTA1)
fimalgoritmo
Algoritmos
Prof. Rodrigo Sena
Exercício
algoritmo ConverteTemperatura
var
C, F: real
inicio
fimalgoritmo
Algoritmos
Prof. Rodrigo Sena
Modularização de algoritmos
Desvios sequenciais - Procedimentos e funções
Modularização de algoritmos
Desvios sequenciais – Fluxo de execução
Algoritmos
Prof. Rodrigo Sena
algoritmo "Teste_procedimento"
Procedimentos
var
Não retornam valor, executando
simplesmente alguma tarefa. procedimento Msgfinal
fimprocedimento
inicio
Msgfinal
fimalgoritmo
Algoritmos
Prof. Rodrigo Sena
Escopo de variáveis
Escopo de variáveis
var
valor1,valor2,resfinal:real
inicio
escreva (resfinal)
fimalgoritmo
Algoritmos
Prof. Rodrigo Sena
Estruturas condicionais
Notação:
se <Condição> entao
<Ação>
fimse
Algoritmos
Prof. Rodrigo Sena
se A > B então
AA–B
fim se
Algoritmos
Prof. Rodrigo Sena
se A > B entao
AA–B
senao
AB-A
fim se
Algoritmos
Prof. Rodrigo Sena
algoritmo SUA_IDADE
Var
IDADE, NASC: inteiro
Inicio
escreva ( “Digite a sua idade: “)
leia (IDADE)
NASC 2016 – IDADE
se NASC < 2000 entao
escreva ( “Você nasceu antes do ano 2000”)
senao
escreva ( “Você nasceu depois do ano 2000”)
fimse
fimalgoritmo
Algoritmos
Prof. Rodrigo Sena
algoritmo SUA_IDADE
Var Que problema
IDADE, NASC: inteiro pode-se
Inicio observar no
escreva ( “Digite a sua idade: “) resultado desse
leia (IDADE) algoritmo?
NASC 2016 – IDADE
se NASC < 2000 entao
escreva ( “Você nasceu antes do ano 2000”)
senao
escreva ( “Você nasceu depois do ano 2000”)
fimse
fimalgoritmo
Algoritmos
Prof. Rodrigo Sena
Exercício:
algoritmo MediaAluno
var
NOTA1,NOTA2, MEDIA: real
inicio
escreva (“Digite a primeira nota: “)
leia (NOTA1)
escreva (“Digite a segunda nota: “)
leia (NOTA2)
MEDIA (NOTA1 + NOTA2) / 2
escreva (“A média do aluno é: “, MEDIA)
se MEDIA >= 7 entao
escreva ( “Aluno Aprovado.”)
senao
escreva ( “Aluno Reprovado.”)
fimalgoritmo
Algoritmos
Prof. Rodrigo Sena
Estruturas condicionais com
conectivos lógicos
Variáveis lógicas (Boolean)
Cálculo proposicional
As expressões com variáveis lógicas se valem do cálculo
proposicional para determinar se uma expressão é válida.
Lógica dedutiva
Silogismos
Algoritmos
Prof. Rodrigo Sena
Escolha <variável>
Estrutura:
Caso <condição>,<condição>...
<ação a ser realizada>
Caso <condição>,<condição>...
<ação a ser realizada>
Outrocaso
<ação a ser realizada>
fimescolha
Algoritmos
Prof. Rodrigo Sena
Calculadora simples
Digite o primeiro valor:
Digite o segundo valor:
1 – Somar
2 – Subtrair
3 – Multiplicar
4 – Dividir
Escolha a operação:
Resultado:
Algoritmos
Prof. Rodrigo Sena
Escolha OP
Caso 1
Result Valor1 + Valor2
Caso 2
Result Valor1 - Valor2
Caso 3
Result Valor1 * Valor2
Caso 4
Result Valor2 / Valor3
outrocaso
escreva (“Valor invalido”)
Fimescolha
Fimalgoritmo
Algoritmos
Prof. Rodrigo Sena
algoritmo "Times"
var time: caractere
inicio
escreva ("Entre com o nome de um time de futebol: ")
leia (time)
escolha time
caso "Flamengo", "Fluminense", "Vasco", "Botafogo"
escreval ("É um time carioca.")
caso "São Paulo", "Palmeiras", "Santos", "Corínthians"
escreval ("É um time paulista.")
outrocaso
escreval ("É de outro estado.")
fimescolha
fimalgoritmo
Algoritmos
Prof. Rodrigo Sena
Vetores
pos 0 1 2 3 4 5
MEDIA: vetor[0..5] de real
Dados 5.6 6.0 7.5 10.0 8.5 6.8
Algoritmos
Prof. Rodrigo Sena
Matrizes
Estrutura que armazena dados de um mesmo tipo, onde são necessários
Mais de um parâmetro ou índice para identificar um dado em particular.
Estrutura de dados homogênea multidimensional
Produto 2
DEPOSITO: vetor[1..3,1..3] de inteiro
Produto 3
Algoritmos
Prof. Rodrigo Sena
Estruturas de repetição
Cria um ciclo de repetição de um bloco de instruções até que uma determinada
condição seja cumprida.
Exemplo:
Estrutura:
algoritmo "Números de 1 a 10"
var
enquanto <condição> faca j: inteiro
inicio
<Seqüência de comandos>
j1
fimenquanto
enquanto j <= 10 faca
escreva (j:3)
jj+1
fimenquanto
fimalgoritmo
Algoritmos
Prof. Rodrigo Sena
algoritmo "NOME_ALUNO"
var
NOME:vetor[1..10] de caracter
I:inteiro
inicio
I1
enquanto I<=10 faca
escreval ("Digite o nome: ")
leia(NOME[i])
I I+1
fimenquanto
fimalgoritmo
Algoritmos
Prof. Rodrigo Sena
algoritmo "NOME_ALUNO"
var
NOME:vetor[1..10] de caracter
I:inteiro
inicio
I<-1
enquanto I<=10 faca
escreval ("Digite o nome: ")
leia(NOME[I])
I I+1
fimenquanto
I1
escreval ("Alunos:")
enquanto I<=10 faca
escreval (NOME[I])
I I+1
fimenquanto
fimalgoritmo
Algoritmos
Prof. Rodrigo Sena
Exemplo:
Estrutura:
algoritmo "Números de 1 a 10"
var
repita j: inteiro
inicio
<Seqüência de comandos>
j1
ate <condição>
repita
escreva (j:3)
jj+1
ate j > 10
fimalgoritmo
Algoritmos
Prof. Rodrigo Sena
algoritmo "NOME_ALUNO"
var
NOME:vetor[1..10] de caracter
I:inteiro
inicio
I1
repita
escreval ("Digite o nome: ")
leia(NOME[i])
I I+1
ate j>10
fimalgoritmo
Algoritmos
Prof. Rodrigo Sena
Estrutura:
para <variável> de <valor-inicial> ate <valor-limite> passo <incremento> faca
<seqüência-de-comandos>
algoritmo "Números de 1 a 10"
fimpara var
j: inteiro
inicio
Exemplo:
para j de 1 ate 10 faca
escreva (j:3)
fimpara
fimalgoritmo
Algoritmos
Prof. Rodrigo Sena
fimalgoritmo
Algoritmos
Prof. Rodrigo Sena
fimalgoritmo
Algoritmos
Prof. Rodrigo Sena
inicio
Faça um algoritmo
Maior <- 0
que leia 5 números e
informe qual foi o para i de 1 ate 5 faca
maior.
escreva (“Digite um número: “)
leia (Num)
fimpara
fimalgoritmo
Algoritmos
Prof. Rodrigo Sena
A linguagem C
A linguagem foi chamada "C", porque suas características foram obtidas a partir
de uma linguagem anteriormente chamado de " B", que de acordo com a
Ken Thompson era versão reduzida da linguagem de programação BCPL.
Mais informações:
http://pt.wikipedia.org/wiki/C_%28linguagem_de_programa%C3%A7%C3%A3o%29
Algoritmos
Prof. Rodrigo Sena
A linguagem C
A linguagem C
Bibliotecas
Para que ele traduza as instruções precisa buscar o significado dos comandos
para que o código seja compilado e executado.
A linguagem C
Bibliotecas
A linguagem C
Principais comandos
Comparações com o portugol
A linguagem C
Principais comandos
Comparações com o portugol
Os dados de caractere são do tipo Char, mas esse tipo, armazena um único
caractere.
Para armazenar uma palavra é preciso criar uma cadeia de caracteres (Strings).
A linguagem C
Principais comandos
Comparações com o portugol
A linguagem C
Principais comandos
Comparações com o portugol
A linguagem C
Estrutura de um programa
Todo programa estará dentro de uma seção principal, que conterá ou não outras
seções, as funções.
Um programa é composto de uma seção principal e seções de função, que
serão chamadas para execução de dentro da seção principal.
A linguagem C
Estrutura de um programa
Uma função que não retorna valor para o programa se inicia com a palavra ‘void’
e não possui parametros.
A linguagem C
Estrutura de um programa
A linguagem C
Estrutura de um programa
#include <stdio.h>
#include <stdlib.h>
void Main ()
{
}
Algoritmos
Prof. Rodrigo Sena
A linguagem C
Estrutura sequencial em C
#include <stdio.h>
#include <stdlib.h>
void Main ()
{
float NOTA1, NOTA2, MEDIA;
Int DIVIDE;
A Quantidade de casas
DIVIDE = 2;
Printf (“Digite a primeira nota: ”); decimais após a virgula é
scanf (“%f”, &NOTA1); definida na Flag.
Printf (“Digite a segunda nota: ”);
scanf (“%f”, &NOTA2); Para 2 casas decimais:
MEDIA = (NOTA1 + NOTA2) / DIVIDE; %.2f
printf (“A media do aluno e %.2f”, MEDIA);
}
Algoritmos
Prof. Rodrigo Sena
A linguagem C
Estrutura sequencial em C
Exemplo de um programa manipulando Strings
#include <stdio.h>
main() {
}
Algoritmos
Prof. Rodrigo Sena
A linguagem C
Estrutura sequencial em C
A linguagem C
Modularização em C
#include <stdio.h> main()
#include <stdlib.h> {
int v1;
int soma(int a, int b) int v2;
{ int result;
int resultado;
resultado = a + b; printf("v1: ");
return resultado; scanf ("%d",&v1);
}
printf("v2: ");
Void msg () scanf ("%d",&v2);
{ result = soma(v1,v2);
} msg()
system(pause);
}
Algoritmos
Prof. Rodrigo Sena
A linguagem C
Caracteres especiais
A linguagem C utiliza muitos caracteres para executar ações especiais, tais como o ‘\n’
para quebrar a linha ou o ‘\t’ para fazer uma tabulação na linha.
Esses comandos são precedidos do símbolo ‘\’. Isso porque este caracter é reconhecido
pela linguagem como um caracter especial.
A linguagem C
Caracteres especiais
Inserindo mais uma barra antes, a linguagem reconhece que precisa exibir aquele caracter.
Outros exemplos:
A linguagem C
Caracteres especiais
ou
A linguagem C
Caracteres especiais
Tabela ASCII
#include <stdio.h>
#include <stdlib.h>
Main()
{
Printf (“Al\223, mundo!”);
}
Algoritmos
Prof. Rodrigo Sena
A linguagem C
Caracteres especiais
Tabela ASCII
#include <stdio.h>
#include <stdlib.h>
Main()
{
Printf (“Al%c, mundo!”,147);
}
Algoritmos
Prof. Rodrigo Sena
A linguagem C
Caracteres especiais
Tabela ASCII (Octal)
Á = \665 á = \240
à = \707 ã = \706
 = \666 â = \203
É = \220 é = \202
Ê = \722 ê = \210
Í = \726 í = \641
Ó = \740 ó = \242
Ô = \742 ô = \223
Õ = \745 õ = \744
Ú = \751 ú = \243
Ç = \200 ç = \207
Algoritmos A linguagem C
Prof. Rodrigo Sena Caracteres especiais
Tabela ASCII (Decimal)
Algoritmos
Prof. Rodrigo Sena A linguagem C
Caracteres especiais
Tabela ASCII Extendida
(Decimal)
Algoritmos
Prof. Rodrigo Sena
A linguagem C
Caracteres especiais
Biblioteca <Locale.h>
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
Main()
{ No entanto, não é
setlocale(LC_ALL, "Portuguese"); possível utilizar
caracteres ASCII.
Printf (“Alô, mundo!”);
printf (“Testando caracteres: á ã â ç”);
}
Algoritmos
Prof. Rodrigo Sena
A linguagem C
#include <stdio.h> Estrutura condicional em C
#include <stdlib.h>
#include <locale.h>
A linguagem C
#include <stdio.h>
#include <stdlib.h> Estrutura condicional em C
#include <locale.h> (SWITCH)
Main ()
{
setlocale(LC_ALL, "Portuguese");
Int op;
switch (op)
{
case1:
printf (“voce escolheu a opção 1.”);
break;
case2:
printf (“voce escolheu a opção 1.”);
break;
default:
printf (“voce escolheu a opção 1.”);
break;
}
}
Algoritmos
Prof. Rodrigo Sena
A linguagem C
Estrutura condicional em C
A linguagem C
#include <stdio.h> Estrutura de repetição em C
#include <stdlib.h>
#include <locale.h>
Main ()
{
setlocale (LC_ALL, “portuguese”);
A instrução enquanto
Int i;
do portugol será
i=1;
simplesmente
while (i != 0)
traduzida para o inglês
{
while e seguirá as
printf (“Digite um numero: “);
mesmas regras das
scanf (“%d”, &i);
demais estruturas;
printf (“Você digitou %d\n”,i);
}
}
Algoritmos
Prof. Rodrigo Sena
A linguagem C
#include <stdio.h> Estrutura de repetição em C
#include <stdlib.h>
#include <locale.h>
Main ()
{
A instrução repita do portugol
setlocale (LC_ALL, “portuguese”);
será substituída pela
Int i;
instrução do while e terá uma
i=1;
sintaxe diferente das demais.
do
No entanto ela se torna
{
idêntica ao while na
printf (“Digite um numero: “);
construção de sua condição.
scanf (“%d”, &i);
A diferença é que essa
printf (“Você digitou %d\n”,i);
estrutura executa o código ao
} while (i != 0);
menos uma vez.
}
Algoritmos
Prof. Rodrigo Sena
A linguagem C
Estrutura de repetição em C
#include <stdio.h>
#include <stdlib.h>
Main ()
{
Int i;
i=1;
for (i==1;i<=10;i++)
{
printf (“%d\n”, i)
}
}
Algoritmos
Prof. Rodrigo Sena
A linguagem C
Estrutura de repetição em C (Vetor)
#include <stdio.h>
#include <stdlib.h>
main ()
{
int i;
int num[10];
i=0;
for (i==0;i<=9;i++)
{
printf ("Digite um n\243mero: ");
scanf ("%d",&num[i]);
i=0;
for (i==0;i<=9;i++)
{
printf ("O %d%c n\243mero digitado foi: %d\n",i+1,167,num[i]);
}
Algoritmos
Prof. Rodrigo Sena
A linguagem C
Estrutura de repetição em C
Construa um programa aplicativo em C que tenha uma utilidade real com tema
livre.