Buscar

Logica de Programação

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 182 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 182 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 182 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Lógica de programação
Cid R. de Andrade
Aula 01
O que é Lógica?
Lógica
 Lógica é o estudo sistemático do raciocínio, 
do pensamento dedutivo.
 O emprego da lógica nos leva à melhor 
maneira de usar o pensamento na busca de 
solução de problemas.
 É fortemente ligada à Matemática e à 
Filosofia.
Lógica
✓ Todos os homens são mortais
✓ José é homem
✓ Logo, José é mortal
Silogismo
Compreendendo lógica de 
programação
 Indutivo
 Abdutivo
 Dedutivo
Compreendendo lógica de 
programação
 Conclui uma verdade geral a partir de um 
número suficiente de casos particulares.
Exemplo: Todo gato é mortal, todo cão é mortal, 
todo peixe é mortal...
Raciocínio indutivo
 Não é baseado em funções da verdade, mas de 
casualidade.
 Utilizado em Semiótica e Comunicação.
Ex.: Vendo uma pegada de equino e não estando 
na África, ela deve ser de cavalo.
Raciocínio abdutivo
 Ao contrário da indução, conclui-se uma verdade 
particular a partir de um princípio geral.
Ex.: Todos os cariocas são brasileiros. Maria é 
carioca. Então, Maria é brasileira.
Raciocínio dedutivo
 Falsos raciocínios pretensiosamente lógicos são 
utilizados para enganar pessoas.
Ex.: Minha sogra acha que eu sou um ninguém. 
Ninguém é perfeito. Logo...
Cuidado com falácias
Funcionamento dos 
computadores
 Sistemas computacionais 
têm três unidades básicas:
 Entrada
 Processamento
 Saída
Funcionamento dos computadores
• Um computador sem 
programas é inútil.
Programas de computador
Primeiro passo
 O mais importante passo para desenvolver 
um programa de computador é compreender 
o problema a ser abordado.
Aula 02
Conceito e representação 
de algoritmos
Conceito
O que é algoritmo?
 Sequência finita de instruções bem definidas e 
sem ambiguidade, que devem ser executadas 
em um tempo finito e com esforço finito, para 
solução de um problema.
• Leia um valor numérico.
• Leia um outro valor numérico.
• Some os dois valores.
• Escreva o resultado da soma na tela.
Português Estruturado
Fluxograma
Número
Some-os
Resultado
Início
Fim
Número
Tipos de 
algoritmos
 Pseudocódigo ou Português Estruturado.
Tipos de algoritmos
Descrição narrativa.
Ex.: Descascar três batatas, cortar longitudinalmente 
em formato de palitos, aquecer uma frigideira com 
óleo, mergulhar as batatas até ficarem douradas, 
retirar as batatas, colocar sobre um prato com papel 
toalha, salpicar com sal antes de servir.
Tipos de algoritmos
 Fluxograma ou 
Diagrama de Blocos.
Tipos de algoritmos
 Diagrama de Chapin (Nassi-Shneiderman).
Tipos de algoritmos
INÍCIO
escreva (*informe sua idade:*)
leia (IDADE)
FIM
escreva (*você é jovem*) escreva (*você é velho*)
IDADE <25
SIM NÃO
 É possível obter pequenos programas sem 
algoritmos após muita experiência.
 Programas mais complexos são quase 
impossíveis de serem obtidos sem algoritmos 
bem planejados.
Importância
Primeiros passos em 
programação estruturada
 Compreensão do problema
 Ter clareza dos dados a serem obtidos 
(Entradas), de como devem ser manipulados 
(Processamento) e de quais resultados serão 
exibidos (Saídas)
Primeiro passo
 Pesquisa por soluções anteriores.
 Compreensão e definição do ambiente.
 Rascunho inicial.
Projeto
 Algoritmo.
 Conversão em linguagem de programação.
 Testes e implementação.
 Gerenciamento.
Conclusão
Aula 03
Tipos de dados
Tipos de dados
 Dados vs informação
 Heghlu’meH QaQ jajvam
Dados computacionais
 Caracter (char)
 Inteiro (int)
 Ponto flutuante (float/double)
 Não definido (void)
Tipos primitivos
Dados: variáveis
 Identificadores
 Tipos
Variáveis em programas
Variáveis e linguagens
 Exemplos de identificador: nomeDoCliente, 
dataDaCompra
Dados: constantes
 Variáveis constantes
 Declaração prévia
Constantes
Variáveis Finais
 Declaração prévia
 Sem atribuição prévia
Exemplos
 π
 e
Aula 04
Operadores 
aritméticas
Operadores aritméticos
 +, -, * e / (soma, subtração, multiplicação e 
divisão)
 -a (negação de a)
 a % b (módulo ou resto da divisão inteira, por 
exemplo, 11 % 3 é 2)
 a ^ b ou a ** b (exponenciação)
 a \ b (divisão inteira, por exemplo, 11 \ 3 é 3)
Operadores aritméticos
Exemplo
Início
Fim
num1
Soma <-
num1 + 
num2
Soma
num2
Exemplo
<script>
var num1, num2, soma;
num1 = prompt (“Digite um número”);
num2 = prompt (“Digite outro”);
soma = num1 + num2;
document.write (soma);
</script>
Exemplo
<script>
var num1, num2, soma;
num1 = prompt(“Digite um número”);
num1 = parseInt(num1);
num2 = prompt(“Digite outro”);
num2 = parseInt(num2);
soma = num1 + num2;
document.write(soma);
</script>
Conversão de expressões 
matemáticas
Conversão de expressões matemáticas
 Cada linguagem de programação pode ter 
distintas implementações de:
 Precedência
 Operadores
Aninhamento
IMC = Peso
Altura * Altura
IMC = peso / (altura * altura)
Código
<script>
var peso, altura, imc;
peso = prompt(“Digite peso”);
peso = parseInt(peso);
altura = prompt(“Digite altura”);
altura = parseFloat(altura);
imc = peso / (altura * altura);
document.write(imc);
</script>
Combinando algoritmos, variáveis, 
constantes e expressões 
aritméticas
programa AreaDeCírculo
leia raio
área = π * (raio^2)
escreva área
Português Estruturado
Fluxograma
Início
raio
Area <- pi* 
(raio^ 2)
Fim
area
Combinando algoritmos
<script>
var raio, area;
const pi = 3.1415;
raio = prompt(“Digite raio”);
raio = parseFloat(raio);
area = pi * raio * raio;
document.write(area);
</script>
Aula 05
Título aula 5Ambientes de programação 
e desenvolvimento
 Recursos de autocompletar
 Indentação e formatação
 Debuggers
 Compilação
Ambientes de programação
 Editores de texto simples:
 Atom
 Notepad++
 vim
 Microsoft Visual Studio Code
 Codeanywhere
Editores
 Ambientes de Desenvolvimento Integrado:
 Eclipse
 NetBeans
 Aptana
IDE
Linguagens de 
programação
 Interpretadas ou compiladas.
 Estruturada ou Orientada a Objetos.
 Fracamente ou Fortemente Tipadas (e outros).
 Baixo nível ou alto nível.
Tipos de linguagem
Principais linguagens
 Java
 C
 C++
 Python
 Swift
 C#
 Javascript
 PHP
 Ruby
Conversão de algoritmos 
em programas
Processo
 Preocupação com legibilidade.
 Compreensão e revisão.
Processo
 Reprodução fidedigna.
 Formatação.
Aula 06
Título aula 6Testes de mesa
 O Teste de Mesa é uma técnica para testes de 
algoritmos.
Testes de mesa
 Como é realizado?
 Não há um procedimento padrão.
 Cada programador desenvolve sua própria técnica.
Testes de mesa
 Partir do Português Estruturado.
 Escrever o código em papel e seguir as instruções 
linha a linha.
 Registrar as alterações em variáveis e em qual 
linha elas ocorrem.
Sugestão
 Soma de dois números.
Teste de mesa
Teste de Mesa
Início
Fim
num1
Soma <-
num1 + 
num2
Soma
num2
Teste de mesa
Início Ler num1 Ler num2 Soma = 
num1 + 
num2
num1 void 5 5 5
num2 void void 7 7
soma void void void 12
TDD, desenvolvimento 
guiado por testes
 O que é TDD?
 Técnica para 
desenvolvimento 
com alta qualidade.
TDD
 Como funciona?
 Desenvolvedor cria um caso de teste para cada 
funcionalidade.
 Testes são executados (todos devem falhar).
 Escrever código somente para passar no teste.
TDD
 Executar testes até que todos sejam aprovados.
 Refatoração: código para versão final.
 Repetir todos os testes.
TDD
Testes de caixa preta 
e caixa branca
 O Analista de Testes tem acesso ao código-fonte.
 São desenvolvidos testes para verificar cada 
parte do programa.
 Executar testes.
Caixa branca
 Sem acesso ao código-fonte.
 São testados os requisitos do programa e os 
erros mais comuns (datas de nascimento no 
futuro, campos obrigatórios, números fora da 
faixa prevista etc.).
Caixa preta
Qualidade em 
desenvolvimento
 Software deixandode ser produto artesanal.
 Competição exige atenção a falhas, custos e 
prazos.
Qualidade em desenvolvimento
 Como obter qualidade de desenvolvimento?
 A qualidade do software está relacionada com a 
qualidade do processo de desenvolvimento.
 Planejamento é primordial.
Qualidade em desenvolvimento
Aula 07
Título aula 7Conceito de estruturas 
de controle
Estruturas de Controle
 Referem-se à ordem na qual as instruções são 
executadas.
Primórdios
 Na origem do desenvolvimento havia farto uso 
de instruções GoTo.
 Embora prático, era fonte de muitos erros de 
programação.
 É utilizado pelos maiores hackers, de forma 
polêmica.
 Sequencial
 De seleção
 De repetição
Tipos de Estruturas
Operadores 
relacionais
 <
 <=
 >
 >=
Operadores relacionais
Operadores relacionais
 =
 ==
 <> ou !=
Desvio condicional simples
 Pouquíssimos programas têm execução linear 
sequencial somente.
 Desvios condicionais garantem execução de 
trechos de código de acordo com expressões 
booleanas.
Desvio condicional simples
Se/então:
programa Temperatura
leia temperatura
se temperatura > 30 então 
escreva “Está calor”
Desvio condicional simples
<script>
var temperatura;
const limite = 30;
temperatura = prompt(“Digite temperatura”);
temperatura = parseInt(temperatura);
if (temperatura > limite) {
document.write(“Está calor”);
}
</script>
Desvio condicional simples
Aula 08
Título aula 8Operadores lógicos
Lógica de George Boole:
• Investigação das leis do pensamento baseada 
em somente dois valores: 
- Verdadeiro (Diferente de 0)
- Falso (0)
Álgebra Booleana
 Duas ou mais expressões têm um resultado 
verdadeiro se todas forem verdadeiras.
 Se tenho carro e tenho dinheiro para o 
combustível então posso viajar.
Operador E
 Um conjunto de expressões só será falso se todas as 
expressões forem falsas.
 Se tenho carro ou tenho moto, então posso viajar.
 Se posso embarcar no ônibus ou no avião, então 
posso viajar.
Operador OU
 Este operador inverte o resultado da expressão.
 Se não tenho carro, então não posso viajar.
Operador NÃO
Desvio condicional 
composto
programa Temperatura
leia temperatura
se temperatura > 30 então
escreva “Está calor”
caso contrário
escreva “Está normal”
Se/Então/Caso Contrário
<script>
var temperatura;
const limite = 30;
temperatura = prompt (“Digite temperatura”);
temperatura = parseInt (temperatura);
if (temperatura > limite) {
document.write (“Está calor”);
} else {
document.write(“Está normal”);
}
</script>
Se/Então/Caso contrário
Desvio condicional 
encadeado
programa Temperatura
leia temperatura
se temperatura > 30 então
escreva “Está calor”
caso contrário
se temperatura < 15 então
escreva “Está frio”
caso contrário
escreva “Está normal”
Se/Então aninhados
<script>
var temperatura;
const limiteAlto = 30, limiteBaixo = 15;
temperatura = prompt(“Digite temperatura”);
temperatura = parseInt(temperatura);
if (temperatura > limiteAlto) {
document.write(“Está calor”);
} else if (temperatura < limiteBaixo) {
document.write(“Está frio”);
} else {
document.write(“Está normal”);
}
</script>
Se/Então aninhados
Aula 09
Título aula 9Teste lógico no início 
da repetição
Estruturas de repetição
 Permitir a execução repetida de um conjunto 
de instruções é um dos mais poderosos 
recursos que um programador pode utilizar.
Estruturas de repetição
 Tomar cuidados com:
 Valores iniciais devem estar consistentes
 Variável de controle deve ser alterada de forma correta
 Condição de saída da estrutura deve ser atingida
 Evitar o loop infinito
Enquanto
programa ContagemRegressiva
contador = 10;
enquanto contador >= 0
escreva contador
contador = contador - 1
Enquanto
<script>
var contador = 10;
while (contador >= 0) {
document.write(contador);
document.write("<br>");
contador = contador - 1;
}
</script>
Teste lógico no fim da 
repetição
Repita enquanto
programa ContagemRegressiva
contador = 10;
repita
escreva contador
contador = contador - 1
enquanto contador >= 0
Repita enquanto
<script>
var contador = 10;
do {
document.write(contador);
document.write("<br>");
contador = contador - 1;
} while (contador >= 0)
</script>
Repetição por contagem
Repita para/de até
programa Contagem
repita para contador de 10 até 0
escreva contador
Repita para/de até
<script>
for (contador = 10; contador >= 0; contador = 
contador - 1) {
document.write(contador);
document.write("<br>");
}
</script>
Comparando os métodos 
de repetição
Comparação
 Repita para/de até é o mais eficiente, mas nem 
sempre é possível utilizá-lo.
 Repita enquanto tem eficiência intermediária.
 Enquanto é o menos eficiente, contudo sempre 
poderá ser utilizado.
Aula 10
Título aula 10Estrutura de dados: 
vetores
Vetores (Arrays)
 Imagine ter de fazer um programa para calcular a 
idade média das pessoas em uma mesa de bar, 
sabendo-se que o bar admite mesas para no 
máximo seis pessoas.
 var idade1, idade2, idade3, idade4, idade5, idade6
Vetores
 Imagine agora alterar este programa para calcular a 
idade média dos torcedores em um estádio de 
futebol para 60 mil pessoas.
 var idade1, idade2, ……., idade59998, idade59999, 
idade60000
Vetores
 Um vetor é uma variável que agrupa diversos valores 
de um mesmo tipo de dados.
43 25 37 35 42
idade
Vetores
programa MediaDeIdades
media = 0
repita para c de 1 até 6
leia idade[c]
media = media + (idade[c]/6)
repita para c de 1 até 6
escreva idade[c]
escreva media
Vetores
<script>
var media = 0;
var idadeCada;
var idade = [];
const qtde = 6;
for (c = 0; c < qtde; c = c + 1) {
idadeCada = prompt("Digite idade #" + 
(c+1));
idade[c] = parseInt(idadeCada);
media = media + idade[c] / qtde;
}
for (c = 0; c < qtde; c = c + 1) {
document.write(idade[c]);
document.write("<br>");
}
document.write("Média é ");
document.write(media);
</script>
Estrutura de dados: 
matrizes
Matrizes
 Uma matriz pode ser compreendida como um 
vetor que tem outros vetores em cada 
posição.
Matrizes
 Uma visão mais simples é uma tabela:
Elemento
[4,1]
Elemento
[3,2]
Matrizes
 Matrizes podem ser multidimensionais.
 notas[periodo,sala,numeroChamada,bimestre,pro
va]
Ordenação de 
vetores
Ordenação
 Muitas vezes, é necessário ordenar os valores 
de um vetor, seja de forma numérica, 
lexicográfica ou outra.
Ordenação
 Técnicas embutidas nas linguagens.
 Métodos simples (Inserção, Seleção, Bolha, 
Combinado).
 Métodos sofisticados (Merge, Heap, Shell, Radix, 
Quick e suas variações).
Ordenação
• Procurar como “comparison animation sort”
• São comparadas ordenações de dados aleatórios, 
quase ordenados, invertidos e com poucos 
valores.
Aula 11
Título aula 11Realizando pesquisas 
em vetores
Pesquisa
 Outro tipo de algoritmo muito utilizado e 
estudado é o de pesquisa em vetores.
Pesquisa
 Pressupõe-se que os vetores estejam 
ordenados.
Pesquisa
 Se necessário, deve-se ordenar o vetor antes 
da realização das pesquisas.
Pesquisas 
sequenciais
Sequencial
 Nada mais faz do que procurar o valor um a 
um, sequencialmente.
Algoritmo
programa BuscaSequencial
vetor = [111,222,333,….,888,999]
achei = -1
busca = 444
repita para c de 0 até 8
se vetor[c] = busca então
achei = c
escreva achei
Código
<script>
var vetor = [111,222,333,444,555,666,777,888,999];
var achei = -1;
const busca = 444;
const tamanho = vetor.length;
for (c = 0; c < tamanho; c = c + 1) {
if (vetor[c] == busca) {
achei = c;
}
}
document.write(achei);
</script>
Pesquisas 
binárias
Binária
 Método mais eficiente.
 Procura a busca pelo meio e vai dividindo o 
vetor cada vez em uma metade.
Algoritmo
programa BuscaSequencial
vetor = [111,222,333,….,888,999]
achei = -1, busca = 444
esquerda = 0, direita = 8
enquanto (esquerda <= direita)
meio = (direita + esquerda)\2
se busca = vetor[meio] então achei = meio
caso contrário se busca < vetor[meio] então
direita = meio –1
senão
esquerda = meio + 1
escreva achei
Código
<script>
var vetor = 
[111,222,333,444,555,666,777,888,99
9];
var achei = -1; 
var meio;
const busca = 444;
var direita = vetor.length;
var esquerda = 0;
while (esquerda <= direita) {
meio = parseInt((direita + esquerda) / 
2);
if (busca == vetor[meio]) {
achei = meio;
esquerda = direita + 1;//Hack
} else if (busca < vetor[meio]) {
direita = meio - 1;
} else {
esquerda = meio + 1;
}
}
document.write(achei);
</script>
Aula 12
Título aula 12Uso de procedimentos 
e funções
Sub-rotinas
 Podemos dividir um programa em módulos.
 Estes módulos podem ser Procedimentos ou 
Funções.
Função
Uma função realiza uma operação qualquer e 
retorna um valor.
“Compre 500 gr de muçarela e depois diga-me 
quanto você gastou”
Procedimento
Um procedimento realiza uma operação e não 
retorna um valor.
“Compre 500 gr de muçarela”
Variáveis globais e 
locais
Globais e locais
 As variáveis de um programa podem ser globais 
ou locais.
 Variáveis globais podem ser utilizadas em 
qualquer parte do programa, incluindo suas 
funções e procedimentos.
Globais e locais
 Uma variável local só pode ser acessada no local 
em que ela for declarada.
 Sempre que possível, devemos evitar o uso de 
variáveis globais.
Parâmetros
Parâmetro
 Se for necessário, podemos passar valores para as 
funções e para os procedimentos por meio de 
parâmetros.
 Algumas linguagens distinguem a passagem de 
parâmetros por valor ou por referência.
Parâmetro
 Na passagem por valor, as alterações não são 
refletidas em outras partes do programa.
 Na passagem por referência, as alterações são 
refletidas no resto do programa e isso deve ser 
evitado.
Função
<script>
var numero = promptInt("Digite um número");
document.write(numero);
function promptInt(texto) {
var x = prompt(texto);
return parseInt(x); 
}
</script>
Procedimento
<script>
escrevaLinha(111);
escrevaLinha(333);
escrevaLinha(555);
escrevaLinha(777);
function escrevaLinha(x) {
document.write(x);
document.write("<br>");
}
</script>
Aula 13
Título aula 13Conceitos de 
programação 
orientada a objetos
POO
 POO = programação orientada a objeto.
 É um paradigma de análise, projeto e 
desenvolvimento de software.
 Baseia-se no uso de objetos.
POO
 O foco não está na sequência de instruções, 
mas na descrição dos objetos.
POO
 Um programa para um jogo de pôquer, por 
exemplo, seria feito planejando-se o que 
ocorre com os jogadores, o baralho, as mãos 
de cartas e assim por diante.
Classes e objetos
Classes e objetos
 A primeira dúvida que algumas pessoas têm é 
saber com clareza o que são classes ou 
objetos.
Classes e objetos
 Uma classe é a descrição genérica de algo. 
Exemplo: a descrição do que é um aparelho de 
televisão.
 Um objeto é uma instância, ou seja, alguma coisa 
que pertence àquela classe.
Exemplo: TV da sua sala.
Classes e objetos
 Uma forma clara de compreender: uma classe é um 
conjunto de coisas e um objeto é algo pertencente a 
este conjunto.
 Seu aparelho de celular é um objeto da classe 
celulares.
 Este curso é um objeto da classe cursos.
Classes e objetos
 Outra forma simples é tentar escrever uma frase 
com “… é um...”
 Rex é um cachorro.

Neste caso, Rex é um objeto da classe cachorros.
Características 
de POO (Programação 
orientada a objetos)
Características de POO
 Classes definem atributos e métodos
 Herança
Características de POO
 Encapsulamento
 Polimorfismo
A linguagem Java
Java
 Linguagem de programação orientada a 
objetos.
 Desenvolvida pela Sun
(hoje Oracle) na década de 1990.
Java
 Independente de plataforma
 Máquina Virtual
 Extensível
 Segurança

Continue navegando