2. Necessidade de Usar a Lógica
• Usar a lógica é um favor a ser considerado por
todos, principalmente pelos profissionais da
área de Tecnologia da Informação, pois seu
dia-a-dia dentro das organizações é solucionar
problemas e atingir os objetivos apresentados
por seus usuários com eficiência e eficácia,
utilizando recursos computacionais e/ou
automatizados mecatronicamente.
3. Necessidade de Usar a Lógica
• Saber lidar com problemas de ordem
administrativa, de controle, de planejamento
e de estratégia requer atenção e boa
performance de conhecimento de nosso
raciocínio. Porém, é necessário considerar que
ninguém ensina ninguém a pensar, pois todas
as pessoas normais possuem esse “dom”.
(MANZANO e OLIVEIRA, 2007, p. 4)
4. Aplicabilidade da Lógica no
Auxílio do Desenvolvimento de
Programas
• Diagrama de blocos é um instrumento que
visa estabelecer visualmente a sequencia de
operações a ser efetuada por um programa de
computador.
5. Aplicabilidade da Lógica no
Auxílio do Desenvolvimento de
Programas
• A técnica de desenvolvimento de diagrama de blocos
permite ao profissional de desenvolvimento uma
grande facilidade na posterior codificação do programa
em qualquer uma das linguagens de programação
existentes, pois na sua elaboração não se leva em
conta o detalhamento sintático e estrutural que uma
linguagem utiliza.
6. Aplicabilidade da Lógica no
Auxílio do Desenvolvimento de
Programas
• O diagrama de blocos é uma ferramenta que,
possibilita definir o detalhamento operacional
que um programa deve executar, sendo um
instrumento tão valioso quanto é uma planta
de um arquiteto.
7. A técnica de programação
estruturada
Consiste em uma metodologia, tendo os seguintes
objetivos:
• Agilizar a codificação da escrita da programação;
• Facilitar a depuração de sua leitura;
• Permitir a verificação de possíveis falhas
apresentadas pelos programas;
• Facilitar as alterações e atualizações dos
programas;
8. A técnica de programação
estruturada
Deve ser composta por quatro passos
fundamentais:
• Escrever as instruções em sequência ligadas
entre si apenas por estruturas sequenciais,
repetitivas ou de selecionamento;
• Escrever instruções em grupos e combiná-las;
9. A técnica de programação
estruturada
Deve ser composta por quatro passos
fundamentais:
• Distribuir módulos do programa entre os
diferentes programadores que trabalharão sob a
supervisão de um programador sênior, ou chefe
de programação;
• Revisar o trabalho executado em reuniões
regulares e previamente programadas, em que
compareçam apenas programadores de um
mesmo nível;
10. Diferenciação de
nomenclaturas - Fluxograma
É uma ferramenta usada e desenvolvida pelos
profissionais de sistemas de informação. Tem
como finalidade descrever o fluxo de ação de
um determinado trabalho lógico, seja manual ou
mecânico, especificando os suportes usando
para os dados e para as informações.
11. Diferenciação de
nomenclaturas - Fluxograma
Usa símbolos convencionais (norma ISO 5807:
1985), permitindo poucas variações. Representados
por alguns desenhos geométricos básicos, os quais
indicarão os símbolos de entrada de dados, do
processamento de dados e da saída, acompanhados
dos procedimentos requeridos pelo analista de
sistemas a serem realizados pelo programador por
meio do desenvolvimento do raciocínio lógico
(diagrama de blocos e codificação).
12. Diferenciação de
nomenclaturas – Diagrama de
Blocos
Pode ser referenciado como diagrama de fluxo
(não confundir com fluxograma). O objetivo do
uso dessa ferramenta é descrever o método e a
sequência das ações a serem estabelecidas para
um computador.
13. Diferenciação de
nomenclaturas – Diagrama de
Blocos
Pode ser desenvolvido em qualquer
detalhamento que seja necessário. Essa
ferramenta usa diversos símbolos geométricos,
os quais estabelecerão as sequências de
operações a serem efetuadas em
processamento computacional.
14. Diferenciação de
nomenclaturas – Algoritmos
Do ponto de vista matemático, pode ser
definido como um conjunto de regras formais
que serão utilizadas para a resolução de um
grupo de problemas semelhantes. Pode-se dizer
também que é um conjunto de regras formais
que serão utilizadas para a resolução de um
grupo de problemas semelhantes.
15. Diferenciação de
nomenclaturas – Algoritmos
Pode-se dizer também que é um conjunto de
regras formais para a obtenção de um resultado
ou da solução de um problema (FORBELLONE e
EBERSPACHER, 2000), englobando formulas e
expressões aritméticas
16. Diferenciação de
nomenclaturas – Algoritmos
Do ponto de vista computacional, um algoritmo
pode ser descrito basicamente de duas formas:
uma gráfica e outra textual (BERG E FIGUERÓ,
1998), sendo considerado gráfico quando se
utiliza de diagrama de blocos, ou textual quando
baseado em um algoritmo natural (semelhante
a uma receita culinária) ou numa linguagem de
projeto de programação.
17. Diferenciação de
nomenclaturas – Algoritmos
Algoritmo pode ser entendido, do ponto de vista
computacional, como a definição de passos a
partir do entendimento lógico de um problema
realizado por um programador com o objetivo
de transformar esse problema em um elemento
(um programa) que seja possível de ser tratado
e executado por um computador.
18. Noções de Lógica
O uso corriqueiro da palavra lógica está
normalmente relacionado à coerência e à
racionalidade. Frequentemente se associa lógica
apenas à matemática, não se percebendo sua
aplicabilidade e a sua relação com as demais
ciências.
19. Noções de Lógica
Podemos relacionar a lógica com a “correção de
pensamento”, pois uma de suas preocupações é
determinar quais operações são válidas e quais
não, fazendo análises das formas e leis do
pensamento.
20. Noções de Lógica
Devemos ressaltar que, apesar de aparente
coerência de um encadeamento lógico, ele pode
ser válido ou não em sua estrutura.
21. Existe lógica no dia-a-dia?
Sempre que pensamos, a lógica e a ilógica
necessariamente nos acompanham. Quando
falamos ou escrevemos, estamos expressando
nosso pensamento, logo, precisamos usar a
lógica nessas atividades.
22. Existe lógica no dia-a-dia?
Podemos perceber a importância da lógica em
nossa vida, não só na teoria, como na prática, já
que, quando queremos pensar, falar, escrever ou
agir corretamente, precisamos colocar “ordem
no pensamento”, isto é, utilizar lógica.
23. O que é um algoritmo?
O objetivo principal do estudo da Lógica de
Programação é a construção de algoritmos
coerentes e válidos. Um algoritmo pode ser
definido como uma sequencia de passos que
visam a atingir um objetivo bem definido
24. O que é um algoritmo?
Quando elaboramos um algoritmo, devemos
especificar ações claras e precisas, que a partir
de um estado inicial, após um período de tempo
finito, produzem um estado final previsível e
bem definido.
25. O que é um algoritmo?
Isso significa que o algoritmo fixa um padrão de
comportamento a ser seguido, uma norma de
execução a ser trilhada, com vistas a alcançar,
como resultado final, a solução de um
problema, garantindo que sempre que
executado, sob as mesmas condições, produza o
mesmo resultado.
26. Por que é importante construir
um algoritmo?
Um algoritmo tem por objetivo representar mais
fielmente o raciocínio envolvido na Lógica de
Programação e, dessa forma, permite-nos
abstrair de uma série de detalhes
computacionais, que podem ser acrescentados
mais tarde.
27. Por que é importante construir
um algoritmo?
Outra importância da construção dos algoritmos
é que em vez concebida uma solução
algorítmica para um problema, esta pode ser
traduzida para qualquer linguagem de
programação a ser agregada das funcionalidades
disponíveis nos diversos ambientes;
costumamos denominar esse processo de
codificação
28. Por que é importante construir
um algoritmo?
Podemos escrever um primeiro algoritmo de
exemplo, utilizando português coloquial, que
descreva o comportamento na resolução de
uma determinada atividade, como, por exemplo,
a troca de uma lâmpada.
29. Por que é importante construir
um algoritmo?
Apesar de aparentemente óbvia demais, muitas
vezes realizamos esse tipo de atividade
inconscientemente, sem percebermos seus
pequenos detalhes que são as ações que nos
levam a alavancar o objetivo proposto.
30. Por que é importante construir
um algoritmo?
Algoritmo 1 – Troca da lâmpada
• pegar uma escada;
• posicionar a escada embaixo da lâmpada;
• buscar uma lâmpada nova;
• subir na escada;
• retirar a lâmpada velha;
• colocar a lâmpada nova;
31. História
• Linguagem de programação criada por Dennis Ritchie
entre 1969 e 1973 na Bell Labs, hoje AT&T.
• Desenvolvido para auxiliar no desenvolvimento do UNIX,
antes escrito em Assembly.
• C foi baseado na linguagem B, criada por Ken
Thompson, que por sua vez foi baseado na linguagem
BCLP (Basic Combined Programming Language).
32. Compilação X Interpretação
A conversão ou tradução de um algoritmo escrito
em uma determinada linguagem de programação
para a linguagem de máquina pode ser feita de
duas maneiras, por compilação ou por
interpretação. Isso dependerá da linguagem.
33. Compilação X Interpretação
Linguagens compiladas dependem de um programa (compilador)
que leia o algoritmo escrito e o convertam para um formato
pronto para ser executado. Este processo gera um arquivo que
poderá ser executado sempre que necessário.
Programas compilados são rápidos, mas não são mutiplataforma
e dependem de uma alteração depende de nova compilação
para o funcionamento. Exemplos de linguagens compiladas: C e
Pascal.
34. Compilação X Interpretação
Linguagens interpretadas dependem de um programa
(interpretador) que faz a tradução do algoritmo escrito na
medida em que vai sendo executado.
Programas interpretados são lentos, mas normalmente são
multiplataformas e trazem agilidade nas alterações por serem
flexíveis, não necessitando de uma nova compilação. Exemplos
de linguagens interpretadas: PHP, Pearl e Javascript.
35. Compilação X Interpretação
Embora haja esta distinção, nem sempre isso
é tão claro.
Algumas linguagens são compiladas para
máquinas virtuais e depois interpretadas.
Exemplos: Java e C#.
36. Compilação X Interpretação
Compiladores são programas que traduzem o
texto de uma linguagem de programação em um
arquivo que contém código de máquina.
• Linkeditores juntam diversos arquivos contendo
código de máquina para gerar um arquivo
executável.
37. Compilação X Interpretação
Tipos de Arquivos
Fonte. Arquivo em formato texto puro, contendo o programa escrito em
uma linguagem.
Objeto. Arquivo em código de máquina, criado pelo compilador usando
um arquivo fonte.
Executável. Programa pronto para ser executado, criado pelo linkeditor,
juntando o arquivo objeto criado pelo programador com as bibliotecas da
linguagem e do SO.
38. Exercício 1 – Três senhoras
1 – Três senhoras – dona Branca, dona Rosa e dona
Violeta – passeavam pelo parque quando dona Rosa
disse:
- Não é curioso que estejamos vestidas de cores branca,
rosa e violeta, embora nenhuma de nós esteja usando um
vestido de cor igual ao seu nome?
- Uma simples coincidência – respondeu a senhora com o
vestido violeta.
Qual a cor do vestido de cada senhora?
39. Exercício 2 – Travessia segura
Um homem precisa atravessar um rio com um
barco que possui capacidade apenas para carregar
ele mesmo e mais uma de suas três cargas, que são:
um lobo, um bode e um maço de alfafa. O que o
homem deve fazer para conseguir atravessar o rio
sem perder suas cargas? Escreva um algoritmo
mostrando a resposta, ou seja, indicando todas as
ações necessárias para efetuar uma travessia
segura.
40. Exercício 3 – Torre de Hanoi
Elabore um algoritmo que mova três discos de uma Torre de
Hanoi, que consiste em 3 hastes (a, b, c), uma das quais serve
de suporte para três discos de tamanhos diferentes (1, 2, 3),
os menores sobre os maiores. Pode-se mover um disco de
cada vez para qualquer haste, contanto que nunca seja
colocado um disco maior sobre um menor. O objetivo é
transferir os três discos para outra haste.
Jogo da Torre De Hanoi em:
http://www.gameson.com.br/Jogos-
Online/ClassicoPuzzle/Torre-de-Hanoi.html
41. Exercício 4 – Jesuítas e
Canibais
Três jesuítas e três canibais precisam atravessar um rio;
para tal, dispõem de um barco com capacidade para duas
pessoas. Por medida de segurança, não se deve permitir
que em alguma margem a quantidade de jesuítas seja
inferior à de canibais. Qual a solução para efetuar a
travessia com segurança? Elabore um algoritmo
mostrando a resposta, indicando as ações que
concretizam a solução deste problema.
Jogo dos Canibal e Missionarios em:
http://rachacuca.com.br/jogos/missionarios-e-canibais/
42. Referência de Sites
Jogo do Campones, Ovelha e Lobo,
http://rachacuca.com.br/jogos/o-lobo-e-a-
ovelha/
Jogo do Preso, Policial, Pai e Mae,
http://www.japones.net.br/teste-de-qi-japones/
43. Resolução Exercício 1
Se a senhora com vestido violeta respondeu a dona
Rosa, então ela não é a própria dona Rosa. Além
disso, como ela não tem o vestido da mesma cor de
seu nome, ela também não é a dona Violeta. Logo,
é a dona Branca que está com o vestido violeta.
Dona Rosa não está usando rosa nem o violeta,
portanto só pode estar usando o branco.
Consequentemente, dona Violeta veste o vestido
Rosa.
44. Resolução Exercício 2
• levar o bode para o outro lado do rio;
• voltar sem carga nenhuma;
• levar o lobo para o outro lado do rio;
• voltar com o bode;
• levar a alfafa para o outro lado do rio;
• voltar sem carga nenhuma;
• levar o bode para o outro lado do rio;
45. Resolução Exercício 3
• mover o disco 1 da torre A para a torre B;
• mover o disco 2 da torre A para a torre C;
• mover o disco 1 da torra B para a torre C;
• mover o disco 3 da torre A para a torre B;
• mover o disco 1 da torre C para a torre A;
• mover o disco 2 da torre C para a torre B;
• mover o disco 1 da torre A para a torre B;
46. Resolução Exercício 4
• atravessar um jesuíta e um canibal para a margem B;
• voltar o jesuíta para a margem A;
• atravessar dois canibais para a margem B;
• voltar um canibal para a margem A;
• atravessar dois jesuítas para a margem B;
• voltar um jesuíta e um canibal para a margem A;
• atravessar dois jesuítas para a margem B;
• voltar um canibal para a margem A;
• atravessar dois canibais para a margem B;
• voltar um canibal para a margem A;
• atravessar dois canibais para a margem B;