Você está na página 1de 50

Introdução a Algoritmos e

Lógica de Programação

G. J. de Sena
UNESP / Guaratinguetá / Brazil

© UNESP/Sena, G. J. Introdução à Robótica Educacional: da teoria à prática UNESP/InovEE


Algoritmos: Definição

Resolução de um problema: inclui o projeto de


um algoritmo que resolva o problema proposto

(Joyanes Aguilar, 2008)

© UNESP/Sena, G. J. Introdução à Robótica Educacional: da teoria à prática UNESP/InovEE


Algoritmos: Definição

Algoritmo:
• É um método para resolver um problema
• Sequencia de passos visando atingir um
objetivo bem definido
Algoritmos + Estruturas de Dados = Programas
(Niklaus Wirth, 1976)

© UNESP/Sena, G. J. Introdução à Robótica Educacional: da teoria à prática UNESP/InovEE


Algoritmos: Exemplos do Cotidiano
Algoritmo: Ovos mexidos.
Ingredientes:
3 ovos
3 colheres de sopa de leite
1 pitada de sal
1 pitada de pimenta
1 ½ colher de manteiga
Modo de fazer:
1) Quebrar os ovos numa tigela
2) Adicionar o leite, o sal e a pimenta
3) Bater até espumar
............

© UNESP/Sena, G. J. Introdução à Robótica Educacional: da teoria à prática UNESP/InovEE


Algoritmos: Exemplos do Cotidiano
Algoritmo: Troca de pneu do carro.
Itens necessários:
Ferramentas (chave e macaco)
Pneu
Ações a realizar:
1. Desligar o carro
2. Pegar as ferramentas (chave e macaco)
3. Pegar o estepe
4. Suspender o carro com o macaco
5. Desparafusar os 4 parafusos do pneu furado
6. Colocar o estepe
7. Aparafusar os 4 parafusos
8. Baixar o carro com o macaco
9. Guardar as ferramentas e o pneu avariado

© UNESP/Sena, G. J. Introdução à Robótica Educacional: da teoria à prática UNESP/InovEE


Algoritmos: características fundamentais

Partes de um algoritmo:
• Entrada de dados
• Processamento
• Saída de resultados

© UNESP/Sena, G. J. Introdução à Robótica Educacional: da teoria à prática UNESP/InovEE


Algoritmos: características fundamentais

Métodos usuais de representação de


algoritmos
• Diagrama de fluxo (ou fluxograma)
• Diagrama de Nassi-Schneiderman
(diagrama N-S)
• Pseudocódigo
• Fórmulas

© UNESP/Sena, G. J. Introdução à Robótica Educacional: da teoria à prática UNESP/InovEE


Algoritmos: representação

Diagramas de fluxo (Fluxogramas)

 Os diagrams de fluxo (“flowcharts”) constituem uma


das técnicas mais antigas e mais utilizadas na
representação de algoritmos
 Símbolos com funções específicas são utilizados,
como apresentado a seguir

© UNESP/Sena, G. J. Introdução à Robótica Educacional: da teoria à prática UNESP/InovEE


Algoritmos:
Representação

© UNESP/Sena, G. J. Introdução à Robótica Educacional: da teoria à prática UNESP/InovEE


Algoritmos:
Representação

© UNESP/Sena, G. J. Introdução à Robótica Educacional: da teoria à prática UNESP/InovEE


Algoritmos: representação

Exemplo: desenvolver um algoritmo para a soma de


dois números inteiros

A,B: inteiros
S: inteiro
S  A + B // S “recebe” o resultado de A + B

© UNESP/Sena, G. J. Introdução à Robótica Educacional: da teoria à prática UNESP/InovEE


Algoritmos: características fundamentais

INICIO
INICIO

ler
A,b A,B

S  A + B S  A + B

escrever S
S

FIM
FIM

© UNESP/Sena, G. J. Introdução à Robótica Educacional: da teoria à prática UNESP/InovEE


Algoritmos: representação

Pseudocódigo:
Algoritmo: soma de dois números inteiros
início
// declaração de variáveis
inteiro: A, B, // numeros
S; // soma

// entrada de dados
leia (A, B);
// processamento
S  A + B;
// saída do resultado
escreva(S);
fim.

© UNESP/Sena, G. J. Introdução à Robótica Educacional: da teoria à prática UNESP/InovEE


Algoritmos: representação
Pseudocódigo:

 Cabeçalho do algoritmo: "Algoritmo: ... .";

 Bloco do algoritmo:
delimitado por "início" e "fim";

 Declaração de variáveis: tipos:


"inteiro" (número inteiro)
"real" (numero de ponto flutuante);

© UNESP/Sena, G. J. Introdução à Robótica Educacional: da teoria à prática UNESP/InovEE


Algoritmos: representação

Pseudocódigo:

 Linhas de comentário (documentação):


 precedidas de "//" (comentário de linha);
 Utilização de "chaves"
chaves ({ ... }) ou "barras-
barras-
asterisco" (/*...*/) para delimitar o texto
do comentário.

© UNESP/Sena, G. J. Introdução à Robótica Educacional: da teoria à prática UNESP/InovEE


Algoritmos: representação

Pseudocódigo:

 Comando de entrada de dados: comando


"leia ( ... )";

 Comando de atribuição: S  A + B;

 Comando de saída de resultados:


escreva ( ... );

 Note-se a presença de um ponto (".") após o


indicador "fim".

© UNESP/Sena, G. J. Introdução à Robótica Educacional: da teoria à prática UNESP/InovEE


Algoritmos: representação

Pseudocódigo: variação do exemplo anterior


Algoritmo: soma de dois números inteiros
início
// declaração de variáveis
inteiro: A, B, // numeros
S; // soma

// definição dos valores de A e B


A  5; B  2;

// processamento
S  A + B; // S "recebe" o resultado de 5 + 2

// saída do resultado
escreva(S);
fim.

© UNESP/Sena, G. J. Introdução à Robótica Educacional: da teoria à prática UNESP/InovEE


Algorítmos/exemplo
Cálculo da soma/produto de 2 números
Solução c/ Tinkercad (sem entrada de dados)

© UNESP/Sena, G. J. Introdução à Robótica Educacional: da teoria à prática UNESP/InovEE


Algoritmos: Estruturas de Controle

 Criação de algoritmos:

 Conceitos de bloco lógico, entrada e saída de


dados, variáveis, constantes, atribuições,
expressões aritméticas, relacionais e lógicas;

 Comandos que se utilizam destes conceitos para


representar o conjunto de ações do algoritmo.

© UNESP/Sena, G. J. Introdução à Robótica Educacional: da teoria à prática UNESP/InovEE


Algoritmos: Estruturas de Controle

 Desenvolvimento de algoritmos: estruturas


básicas de controle do fluxo de execução – estrutura
sequencial, de seleção e de repetição – e sua
combinação.

 Estrutura Seqüencial: corresponde ao fato de que


um conjunto de ações primitivas será executado em
uma sequência linear, de cima para baixo e da
esquerda para a direita.

© UNESP/Sena, G. J. Introdução à Robótica Educacional: da teoria à prática UNESP/InovEE


Algoritmos: Estruturas de Controle

Estrutura sequencial – modelo geral:


Algoritmo: ....
Início // inicio do bloco do algoritmo
// declaração de variáveis
// área de comandos: corpo do algoritmo
ação 1;
ação 2; ação 3;
ação 4;
..........
ação n;
fim. // fim do bloco do algoritmo

© UNESP/Sena, G. J. Introdução à Robótica Educacional: da teoria à prática UNESP/InovEE


Algoritmos: Estruturas de Controle

Exemplo: desenvolver um algoritmo para calcular e


apresentar a média final de um aluno, antes da
realização do exame.

N1, N2, N3, N4: notas bimestrais (números c/ casas


decimais);

MF: média final do aluno;

N1  N 2  N 3  N 4
MF 
4

© UNESP/Sena, G. J. Introdução à Robótica Educacional: da teoria à prática UNESP/InovEE


Algoritmos: Estruturas de Controle

Pseudocódigo:
Algoritmo: cálculo da média final de um aluno
início
// declaração de variáveis
real: N1, N2, N3, N4, // notas bimestrais
MF; // media final

// entrada de dados
leia(N1, N2, N3, N4);

// processamento
MF  (N1 + N2 + N3 + N4) / 4;

// saída do resultado
escreva(MF);
fim // algoritmo: cálculo da média final.

© UNESP/Sena, G. J. Introdução à Robótica Educacional: da teoria à prática UNESP/InovEE


Algorítmos/exemplo
Cálculo da média final de um aluno
Solução c/ Tinkercad (sem entrada de dados)

© UNESP/Sena, G. J. Introdução à Robótica Educacional: da teoria à prática UNESP/InovEE


Algoritmos e Codificação de programas

Tipos de dados básicos (Linguagem C):

Tipo Descrição Memória


int Valor Inteiro (Arduino Uno) 2 bytes
char Caractere 1 byte
float Número de Ponto Flutuante 4 bytes
(precisão simples)
double Número de Ponto Flutuante 8 bytes
(precisão dupla) (Uno: 4 bytes)

Arduíno: 18 tipos de dados predefinidos!


(https://www.arduino.cc/reference/en/#variables)

© UNESP/Sena, G. J. Introdução à Robótica Educacional: da teoria à prática UNESP/InovEE


Algoritmos e Codificação de programas

Constantes numéricas:

Inteiras: 126 0 -255

Ponto flutuante: 3.1415 -12.570 0.6 .6 5.0 5.


3.5E05 // codificação de 3,5 x 10^5
3e5 3.e05 3.213E4 -0.29e5 315.16E-02

© UNESP/Sena, G. J. Introdução à Robótica Educacional: da teoria à prática UNESP/InovEE


Algoritmos e Codificação de programas
Expressões aritméticas
Operadores aritméticos: +, -, *, /, %
Exemplo:
int a=10, b=4;
Expressão: Resultado da
avaliação:
a + b 14
a - b 6
a * b 40
a / b 2
a % b 2

© UNESP/Sena, G. J. Introdução à Robótica Educacional: da teoria à prática UNESP/InovEE


Algorítmos/exemplo
Cálculo da média final de um aluno
Solução c/ Tinkercad (sem entrada de dados)

Cuidado com a
aritmética inteira

© UNESP/Sena, G. J. Introdução à Robótica Educacional: da teoria à prática UNESP/InovEE


Algoritmos: Estruturas de Controle

Observação:

 Cadeia de caracteres é uma seqüência de caracteres


delimitada por aspas (" ... ");

 Exemplos: "Hello, world!", "Soma = "

"" // cadeia vazia

 Estruturação de mensagens a serem apresentadas


junto aos resultados gerados por um algoritmo

© UNESP/Sena, G. J. Introdução à Robótica Educacional: da teoria à prática UNESP/InovEE


Algoritmos: Estruturas de Controle

Pseudocódigo:

escreva("Media final = ", MF); { este comando gerará como


saída a mensagem “Media final” (sem as aspas),
seguida do valor da média calculada }

escreva("Quantidade de latas = ", Qlatas,


"Custo da pintura = ", Custo);

© UNESP/Sena, G. J. Introdução à Robótica Educacional: da teoria à prática UNESP/InovEE


Algoritmos: Estruturas de Controle

Constantes caracteres:

Valores das constantes caracteres:


O valor de uma constante caractere é o valor do código ASCII
correspondentes à representação interna do caractere na máquina

Exemplos:
'A', 'a', 'B', 'z', '5', '&', ' ' , ...

© UNESP/Sena, G. J. Introdução à Robótica Educacional: da teoria à prática UNESP/InovEE


Algoritmos: Estruturas de Controle
Estrutura de Seleção – caracterização:

 Uma estrutura de seleção permite a escolha de um


grupo de ações (bloco) a ser executado quando
determinadas condições, representadas por expressões
lógicas ou relacionais, são ou não satisfeitas.

 Classificação:
 Seleção Simples
 Seleção Composta
 Seleção Encadeada

© UNESP/Sena, G. J. Introdução à Robótica Educacional: da teoria à prática UNESP/InovEE


Algoritmos: Estruturas de Controle
Seleção Simples – Forma Geral

se (condição)
então início // início do bloco verdade
C1; // seqüência de comandos
C2; ... ;
Cn;
fim; // fim do bloco verdade

© UNESP/Sena, G. J. Introdução à Robótica Educacional: da teoria à prática UNESP/InovEE


Algoritmos: Estruturas de Controle
Seleção Simples – Forma Geral:
se (condição)
então início // início do bloco verdade
C1; // seqüência de comandos
C2; ... ; Cn;
fim; // fim do bloco verdade

Observação: nas estruturas de seleção, bem como em


outras estruturas que serão estudadas posteriormente, dar a
devida atenção aos recuos, para não comprometer a
legibilidade do algoritmo.

© UNESP/Sena, G. J. Introdução à Robótica Educacional: da teoria à prática UNESP/InovEE


Algoritmos: Estruturas de Controle

Exemplo: desenvolver um algoritmo para calcular e


apresentar a média final de um aluno, e verificar se ele
já está ou não aprovado: MF >= 7, aluno aprovado.
N1, N2, N3, N4: notas bimestrais
(números c/ casas decimais);
MF: média final do aluno;

© UNESP/Sena, G. J. Introdução à Robótica Educacional: da teoria à prática UNESP/InovEE


Algoritmos: Estruturas de Controle

Algoritmo: cálculo da média c/ verificação quanto à aprovação


início
// declaração de variáveis
real: N1, N2, N3, N4, // notas bimestrais
MF; // media final

// entrada de dados
leia(N1, N2, N3, N4);

// processamento: calculo da média e


// verificação quanto à aprovação
MF  (N1 + N2 + N3 + N4) / 4;

© UNESP/Sena, G. J. Introdução à Robótica Educacional: da teoria à prática UNESP/InovEE


Algoritmos: Estruturas de Controle
Algoritmo: cálculo da média c/ verificação quanto à aprovação
início
...................
se (MF >= 7.0)
então inicio // gera saídas: aluno aprovado
escreva("Media = ", MF);
escreva(" Aprovado! ");
fim;
se (MF < 7.0)
então inicio // gera saídas: aluno reprovado
escreva("Media = ", MF);
escreva("Reprovado!");
fim;
fim // algoritmo: cálculo da média final.

© UNESP/Sena, G. J. Introdução à Robótica Educacional: da teoria à prática UNESP/InovEE


Algoritmos: Estruturas de Controle

Exemplo: variação do exemplo anterior, ilustrando a não


necessidade de delimitadores.
...
// processamento: calculo da média e
// verificação qto à aprovação
MF  (N1 + N2 + N3 + N4) / 4;
escreva("Media = ", MF);
se (MF >= 7.0)
então // gera saída: aluno aprovado
escreva("Aprovado!");
se (MF < 7.0)
então // gera saída: aluno reprovado
escreva("Reprovado!");
...

© UNESP/Sena, G. J. Introdução à Robótica Educacional: da teoria à prática UNESP/InovEE


Algoritmos/exemplo

Cálculo da
média/situação final
de um aluno
(seleção simples)

© UNESP/Sena, G. J. Introdução à Robótica Educacional: da teoria à prática UNESP/InovEE


Algoritmos e Lógica de Programação

Operadores relacionais e lógicos:

Operadores relacionais:
< <= > >=

Operadores de igualdade:
== (igual a)
!= (diferente: “não igual a”)

Operadores
lógicos:

© UNESP/Sena, G. J. Introdução à Robótica Educacional: da teoria à prática UNESP/InovEE


Algoritmos e Lógica de Programação

Expressão lógica:
 Operadores relacionais e lógicos
 Avaliada como verdadeiro (valor inteiro 1) ou falso (valor inteiro 0).

© UNESP/Sena, G. J. Introdução à Robótica Educacional: da teoria à prática UNESP/InovEE


Algoritmos: Estruturas de Controle
Seleção Composta – Forma Geral

se (condição)
então início // início do bloco “verdadeiro”
C1; C2;
...
Cn;
fim // fim do bloco “verdadeiro”
senão
início // início do bloco “falso”
C1; C2;
... Cm;
fim; // fim do bloco “falso”

© UNESP/Sena, G. J. Introdução à Robótica Educacional: da teoria à prática UNESP/InovEE


Algoritmos: Estruturas de Controle

Exemplo: variação do algoritmo de cálculo da média e


determinação da situação final de um aluno, com a utilização
de uma estrutura de seleção composta.

...
// processamento: calculo da média e
// verificação quanto à aprovação
MF  (N1 + N2 + N3 + N4) / 4;
escreva(“Media = “, MF);

© UNESP/Sena, G. J. Introdução à Robótica Educacional: da teoria à prática UNESP/InovEE


Algoritmos: Estruturas de Controle

Exemplo:
// situação final
se (MF >= 7.0)
então
inicio // gera saídas: aluno aprovado
escreva("Aprovado!");
escreva("Parabéns!");
fim // obs.: sem ";" antes do senão!
senão // MF < 7.0)
inicio // gera saídas: aluno reprovado
escreva("Reprovado!");
escreva("Estude mais!");
fim;
fim // algoritmo: cálculo da média final.

© UNESP/Sena, G. J. Introdução à Robótica Educacional: da teoria à prática UNESP/InovEE


Algoritmos/exemplo

Cálculo da
média/situação final
de um aluno
(seleção composta)

© UNESP/Sena, G. J. Introdução à Robótica Educacional: da teoria à prática UNESP/InovEE


Algoritmos: Estruturas de Controle

Exemplo: cálculo da média de um aluno e verificação quanto à


aprovação, exame ou reprovação, segundo o esquema:
MA >= 7,0: aprovado;
MA < 3,0: em exame de segunda época (exame 2);
3,0 <= MA < 7,0: em exame de primeira época.(exame 1).

© UNESP/Sena, G. J. Introdução à Robótica Educacional: da teoria à prática UNESP/InovEE


Algoritmos: Estruturas de Controle
Algoritmo: cálculo da média e verificação da situação
final
início
// declaração de variáveis
real: N1, N2, N3, N4, // notas bimestrais
MA; // media final do aluno

// entrada de dados
leia(N1, N2, N3, N4);

// processamento: calculo da média e


// cálculo e saída da média
MA  (N1 + N2 + N3 + N4) / 4;
escreva("Media = ", MA);

© UNESP/Sena, G. J. Introdução à Robótica Educacional: da teoria à prática UNESP/InovEE


Algoritmos: Estruturas de Controle
Algoritmo: cálculo da média e verificação da situação final
início
.............
// verificação da situação do aluno
se (MA >= 7.0)
então // aluno aprovado
escreva("Aprovado!");
senão // MA < 7
se (MA >= 3.0)
então // 3 <= MA <7 => exame 1
escreva("Exame 1");
senão // MA < 3 => exame 2
escreva("Exame 2");
fim // algoritmo: cálculo da média / verif.sit. final.

© UNESP/Sena, G. J. Introdução à Robótica Educacional: da teoria à prática UNESP/InovEE


Algoritmos/exemplo

Cálculo da
média/situação final
de um aluno
(seleção composta)

© UNESP/Sena, G. J. Introdução à Robótica Educacional: da teoria à prática UNESP/InovEE


Algoritmos: referências

Joyanes Aguilar, Luis. Fundamentos de


programação: algoritmos, estruturas de dados e
objetos. Porto Alegre : AMGH, 2008.

© UNESP/Sena, G. J. Introdução à Robótica Educacional: da teoria à prática UNESP/InovEE

Você também pode gostar