Diagramas Nassi Schneiderman

Transcrição

Diagramas Nassi Schneiderman
Introdução – uso do computador
• O computador, consisti de uma ferramenta muito
útil ao interesse humano
Lógica de Programação
Jeanne Leite
▫ Possui grande capacidade de processamento;
▫ Grande velocidade;
• Porém depende do raciocínio humano para a
realização de tarefas realmente corretas:
▫ Os computadores não possuem um raciocínio coerente
com todas as variáveis existentes e necessárias à
resolução de problemas do mundo real.
▫ Exemplo:
▫ Os sentimentos envolvendo a tomada de decisão/ação
sobre uma determinada situação real.
Introdução – uso computador –
vantagens:
• O automatismo das tarefas
• Porém deve-se fazer um planejamento prévio
das operações a serem realizadas
automaticamente pelo computador.
Introdução – Importância do
Planejamento
• O computador só conseguirá realizar
eficientemente as operações desejadas por seus
usuários, se estas operações forem bem
planejadas e elaboradas pelos programadores.
• Qual a conseqüência de um mau planejamento?
• O funcionamento de um computador depende
muito do conhecimento, raciocínio lógico e
esforço dedicados pelos programadores.
Lógica de Programação
• A lógica de programação é necessária para
pessoas que desejam trabalhar com
desenvolvimento de sistemas e programas, ela
permite definir a seqüência lógica para o
desenvolvimento.
• Def:
▫ Lógica de programação é a técnica de
encadear pensamentos para atingir
determinado objetivo.
Lógica de Programação
• As praias ficam na costa do País.
• Brasília está no centro do país.
• Logo, Brasília não tem praia
(uma conclusão lógica)
Seqüência Lógica
• O encadeamento de pensamentos, podem ser
descritos como uma seqüência de instruções,
que devem ser seguidas para se cumprir uma
determinada tarefa.
• Def:
▫ Seqüência Lógica são passos executados
até atingir um objetivo ou solução de um
problema.
Instruções
• Instrução é a informação que indica a um
computador uma ação elementar a executar.
• Ex:
▫ Se quisermos fazer uma omelete de batatas,
precisaremos colocar em prática uma série de
instruções: descascar as batatas, bater os ovos,
fritar as batatas, etc...
• As instruções tem que ser executadas em uma
ordem adequada, ter seqüência lógica.
▫ não se pode descascar as batatas depois de fritálas.
Algoritmos
• Um algoritmo é uma seqüência finita de passos
que levam a execução de uma tarefa.
▫ Ex: uma receita, um manual,
• São uma seqüência de instruções finitas que se
seguidas logicamente alcançamos a solução do
problema.
Algoritmo – Outras Definições
• É uma seqüência de ações finitas que descrevem como
um problema deve ser resolvido.
• É um conjunto de regras formais para a obtenção de um
resultado ou da solução de um problema.
• Seqüência ordenada de passos a ser seguida para a
realização de uma determinada tarefa.
• Conjunto de regras e operações bem definidas e
ordenadas, destinadas à solução de um problema, ou de
uma classe de problemas.
Algoritmos - Exemplo
• “Chupar uma bala”
▫
▫
▫
▫
1- Pegar a bala
2- Retirar o papel
3- Chupar a bala
4- Jogar o papel no lixo
Algoritmo
• Faça um algoritmo para preparar um sanduíche .
Algoritmo - Exemplo
•
•
•
•
•
•
•
•
•
•
1º - Pegar um pão
2º - Cortar o pão ao meio
3º - Pegar a maionese
4º - Passar maionese no pão
5º - Pegar alface e tomate
6º - Cortar alface e tomate
7º - Colocar alface e tomate no pão
8º - Pegar um hambúrguer
9º - Fritar o hambúrguer
10º - Colocar o hambúrguer no pão
Algoritmo
• Um problema pode ser resolvido de diversas
maneiras, mas deve sempre chegar ao resultado
desejado de forma correta.
• Podem existir vários algoritmos que solucionem
um problema, alguns mais rápidos, outros mais
seguros, mas todos conseguem resolver o
problema corretamente, apesar das diferenças
existentes no percurso de toda a lógica proposta
como solução.
Elaboração de um programa
• Conhecimento do problema
• Planejar, raciocinar sobre ele, de forma a encontrar
uma solução segura e eficaz para sua solução.
• conhecimento de todos os detalhes possíveis que
envolverão o computador e o programa que será
desenvolvido e disponibilizado
• Levantamento de informações
• Quanto mais informações do problema a equipe de
desenvolvedores tiver menores serão as chances do
processamento incorreto, ou mesmo incompleto, realizado
pelo programa que será executado pelo computador.
Algoritmo
• Observe que as instruções, seqüencialmente
descritas em passos, realizaram ao seu final (um
sanduíche).
• Cada um pode fazer o sanduíche de maneira
diferente, onde os passos, com outra ordenação,
também elaboraram um gostoso sanduíche
(atingi o objetivo).
Programas
• Os programas de computadores são algoritmos
escritos numa linguagem de computador
(Pascal, C, Cobol, Fortran, Visual Basic entre
outras) e que são interpretados e executados por
uma máquina, no caso um computador.
Elaboração de um programa
• O planejamento requer tempo suficiente para o
programador pensar nas possibilidades
envolvidas e encontrar uma lógica coerente para
a solução do problema.
Implementação
• É a codificação do raciocínio humano a ser
realizado pelo computador na busca de uma
solução para um problema computacional.
• Este raciocínio será descrito em uma linguagem
de comunicação com o computador (linguagem
de programação), para que ele compreenda as
instruções necessárias ao atendimento do
objetivo desejado por seu usuário.
Implementação
• É fundamental a organização clara e simples de
todos os raciocínios possíveis a serem
elaborados e testados na busca da solução para
um problema computacional.
• Os algoritmos possibilitam uma
representação simples e clara o suficiente para a
compreensão da lógica a ser aplicada na solução
do problema existente.
Algoritmos - Métodos de elaboração
• 1º - empenhar grande atenção sobre os dados
relacionados ao problema, procurando conhecer e
compreender o máximo sobre ele;
• 2º -definir os dados que essencialmente deverão ser
informados pelo usuário para que o processamento
seja realizado com sucesso (dados de entrada);
• 3º -descrever detalhadamente o processamento ou a
transformação a ser executada sobre os dados de
entrada em busca dos resultados desejados (como
chegar no objetivo);
Implementação
• O esforço dedicado a elaboração de um raciocínio
lógico coerente com o problema existente, poderá
ser realizado por um único indivíduo ou por uma
equipe de profissionais que almejam encontrar tal
solução lógica a ser implementada em um
computador.
• É claro que a complexidade do problema também
fará diferença considerável neste processo, pois
quanto maior for a sua complexidade, maior serão
os fatores que interferem em sua solução. Com isso,
a lógica racional a ser elaborada também envolverá
diversos fatores a serem previsto e analisados por
estes profissionais.
Algoritmos - Métodos de elaboração
• Existem várias as técnicas e métodos para a
construção de algoritmos.
• Um método para a construção de algoritmos
possibilita a implementação dos mesmos,
posteriormente, em um computador
(desenvolvimento de programas
computacionais):
Algoritmos - Métodos de elaboração
• 4º -definir quais são os dados resultantes do
processamento ou transformação (dados de saída);
• 5º -construir o algoritmo que represente a solução
encontrada com o detalhamento necessário a
implementação almejada;
• 6º -testar o algoritmo por meio de simulações e
efetuar as devidas correções que possam vir a ser
necessárias a lógica proposta.
Algoritmos - Métodos de elaboração
Tradução
• Um algoritmo é implementado sobre o
computador, por meio da transcrição (tradução)
da lógica representada no algoritmo para uma
linguagem de programação
• A tradução somente efetuará mudança na forma
de descrever o raciocínio a ser implementado no
computador.
LINGUAGEM DE PROGRAMAÇÃO
• Devemos traduzir o algoritmo para a linguagem
de programação desejada (linguagem entendida
pelo computador), respeitando as suas regras de
sintaxe e semântica.
LINGUAGEM DE ALTO NÍVEL
• São linguagens que estão próximas da linguagem
humana.
Ex: Java, C#, Ruby, Pascal, C, C++, Python, Cobol.
• Assembly é uma linguagem de baixo nível.
▫ Assembler é o programa que permite ao
programador montar (semelhante a um
compilador) o código assembly e compilá-lo.
LINGUAGEM DE PROGRAMAÇÃO
• Exemplo:
• Vamos traduzir a seguinte instrução:
•
escreva("Informe a sua idade:");
• A instrução escreva corresponde aos comandos
especificados respectivamente na linguagens
identificadas na relação a seguir:
COMANDO
LINGUAGEM
write
Pascal
printf
C
Programação (tradução)
• É a codificação de um algoritmo em uma
determinada linguagem de programação.
• Todo computador para funcionar necessita ser
controlado por um programa.
▫ O Sistema Operacional de um computador é o
programa responsável por controlar todas as
funções a serem desempenhadas em nível
operacional.
Compilação
• Para um programa tornar-se funcional este necessita ser
compilado (traduzido para linguagem de máquina).
• Um compilador é o tipo de programa que ao compilar
um programa fonte (em linguagem de alto nível) o
transforma em linguagem de máquina.
• Se houver a tentativa de descompilá-lo a fonte obtida
estará escrita em código assembly.
Estruturas lógicas básicas
• Seqüência, decisão e iteração. São as três
estruturas lógicas fundamentais no controle do
fluxo de dados e instruções.
• Também conhecidas como estruturas de
controle de dados, pois desempenham o papel
de controle sobre a seqüência de ações (ou
tarefas) a serem realizadas (ou executadas) no
algoritmo.
Metodologias de desenvolvimento
• Uma linguagem de programação permite ao
programador elaborar programas que instruirão
o computador nas operações a serem efetuadas.
• Métodos sistemático de programação devem ser
adotados para o desenvolvimento de programas
confiáveis, flexíveis e eficientes.
• Uma metodologia de desenvolvimento deve ser
adotada com etapas básicas fundamentais ao
desenvolvimento de qualquer programa
Programação estruturada
• É uma forma de programação de computadores que
preconiza que todos os programas possíveis podem ser
reduzidos a apenas três estruturas: seqüência, decisão e
iteração.
• A Programação estruturada é modular, orienta os
programadores para a criação de estruturas simples em
seus programas, usando as subrotinas e as funções
(subalgoritmos).
• Apesar de ter sido sucedida pela programação orientada
a objetos, pode-se dizer que a programação estruturada
ainda é marcantemente influente, uma vez que grande
parte das pessoas ainda aprendem programação através
dela.
Estruturas lógicas básicas
• Seqüência : as instruções existentes no algoritmo são
executadas uma após a outra, respeitando sempre a seqüência
linear de cima para baixo.
• Decisão : ou seleção, exerce o controle sobre a seqüência de
instruções a serem executadas, por meio do resultado de um
teste ou verificação lógica, sendo também conhecida como
lógica condicional.
• Iteração : ou repetição, por meio de um teste ou verificação
lógica uma instrução, ou um conjunto de instruções, é
executado repetidamente (mais que uma vez). Essa lógica de
execução também é conhecida como lógica de laço ou looping.
Metodologias de desenvolvimento
• ANÁLISE:
nessa etapa estuda-se o problema,
buscando a sua completa compreensão, onde os dados
de entrada, o processamento e os dados de saídas
possam ser identificados corretamente;
essa etapa aplica métodos e técnicas
• PROJETO:
que possibilitem a descrição necessária do problema
com suas possíveis soluções. Ela consiste no projeto
do programa, sendo elaborada por meio da construção
do algoritmo e da definição correta das estruturas de
dados necessárias a tal solução;
Metodologias de desenvolvimento
• CODIFICAÇÃO:
essa etapa consiste na implementação do
projeto do programa, ou seja, na tradução do raciocínio,
representado no algoritmo, para um programa computacional,
escrito na linguagem de programação desejada;
nessa etapa é finalizado o processo de
• VERIFICAÇÃO:
desenvolvimento do programa, que é classificado como software,
sendo também chamado de aplicação. Simulações, testes e
verificações dos resultados alcançados pelo programa são
analisados, podendo resultar em alterações no código elaborado.
Essas alterações procurarão o atendimento eficaz do objetivo
desejado pelo programa., que é finalmente liberado aos usuários
finais.
REPRESENTAÇÃO DO ALGORITMO
• Existem várias técnicas que representarão a
seqüência dos passos (ou etapas) a serem
realizados pela execução do algoritmo.
Metodologias de desenvolvimento
• As metodologias possibilitam o desenvolvimento
organizado e eficiente do programa desejado.
• Devemos ainda realizar a documentação
coerente em cada uma delas para a construção
de uma lógica clara e detalhada o suficiente para
a compreensão de qualquer outro profissional da
área, promovendo alta qualidade nesse
desenvolvimento.
Técnicas de Representação de
Algoritmos
• Dentre as formas de representação de
algoritmos mais conhecidas, sobressaltam:
▫ Descricao Narrativa
▫ Fluxograma Convencional
▫ Diagrama de Chapin
▫ Pseudocódigo, também conhecido como
Linguagem Estruturada ou Portugol.
Descrição Narrativa
• Nesta forma de representação os algoritmos são
expressos diretamente em linguagem natural
• Exemplo:
Troca de um pneu furado
x
x
x
x
x
x
x
Afrouxar ligeiramente as porcas
Suspender o carro
Retirar as porcas e o pneu
Colocar o pneu reserva
Apertar as porcas
Abaixar o carro
Dar o aperto final nas porcas
Descrição Narrativa
• Esta representação é pouco usada na prática
porque o uso de linguagem natural muitas vezes
dá oportunidade a más interpretações,
ambigüidades e imprecisões.
• Por exemplo, a instrução “afrouxar ligeiramente
as porcas” no algoritmo da troca de pneus está
sujeita a interpretações diferentes por pessoas
distintas.
• Uma instrução mais precisa seria:
“afrouxar a porca, girando-a de 30º no sentido
anti-horário”.
FLUXOGRAMA
• É uma representação gráfica de algoritmos onde
formas geométricas diferentes implicam ações
distintas.
• Objetivo: Facilitar o entendimento das idéias
contidas nos algoritmos.
• Ele é elaborado após a fase de análise do
problema.
Fluxograma - Exemplo
• Imagine uma situação onde a idade de uma
pessoa deva ser analisada para a classificação
dela ainda ser jovem ou velha.
Fluxograma – Vantagens x
Desvantagens
DIAGRAMA DE CHAPIN
• Foi elaborado por Nassi e Shneiderman e
ampliada por Ned Chapin.
• Almejada a substituição da representação
tradicional (diagrama de blocos) por uma
diagramação com quadros que oferecem a visão
hierárquica e estruturada da lógica proposta
para um programa.
DIAGRAMA DE CHAPIN
DIAGRAMA DE CHAPIN
• Vantagens x Desvantagens
PORTUGUÊS ESTRUTURADO
• Também chamada de portugol ou pseudocódigo
• Bastante rico em detalhes e, por assemelhar-se
bastante à forma em que os programas são
escritos, encontra muita aceitação.
• Consiste na descrição estruturada, por meio de
regras predefinidas, de passos (ou instruções) a
serem realizados para a resolução do problema.
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
algoritmo "avaliação médica"
// Síntese
// Objetivo: analisar a idade de uma pessoa
//Entrada: uma idade
//Saída: mensagem de velho ou jovem
// Declarações
var
idade:inteiro
inicio
escreva (“Informe sua idade: “)
leia (IDADE)
se (IDADE < 25) então
escreva (“você é jovem”)
senão
escreva (“você é velho”)
fimse
fimalgoritmo
PORTUGUÊS ESTRUTURADO
Algoritmo <nome_do_algoritmo>
<declaração_de_variáveis>
<subalgoritmos>
Início
<corpo_do_algoritmo>
Fim.
PORTUGUÊS ESTRUTURADO
• Vantagens x Desvantagens
PORTUGUÊS ESTRUTURADO
• Entre essas três formas de representação
(fluxograma, Chapin e português estruturado), o
português estruturado é o mais relevante no
desenvolvimento pelos seguintes fatores:
PORTUGUÊS ESTRUTURADO
• facilitar o desenvolvimento dos algoritmos;
• facilitar o seu entendimento pelo ser humano;
• antecipar à depuração (localização de erros) em
sua lógica;
• facilitar a sua manutenção e modificação;
• facilitar e agilizar a sua codificação (escrita do
programa);
• permitir o desenvolvimento simultâneo de
vários profissionais (trabalho em equipe).

Documentos relacionados

Conceitos Iniciais sobre Algoritmos e

Conceitos Iniciais sobre Algoritmos e “Programar é uma arte. Resume-se a ensinar um computador a fazer o que tem de ser feito. Não basta apenas sentar em uma cadeira e começar a escrever código, você não é apenas um mero codificador. E...

Leia mais

Programação - Software Livre Brasil

Programação - Software Livre Brasil Cada uma dessas formas de representar um algoritmo, tem suas vantagens e desvantagens, cabe a pessoa escolher a forma que melhor lhe convir. As principais formas de representação de algoritmos são:...

Leia mais