ALGORÍTMOS E
PROGRAMAÇÃO
Engenharia - 2012
PLT – Programação Estruturada – 81
Algorítmo e Programação
Victorine Viviane Mizrahi
AULA 1
APRESENTAÇÃO. 1.1.Noção de Algoritmos
1.2. Pseudo Linguagem
Eriovaldo Coelho Magalhães
[email protected]
Conteúdo Programático
1. CONCEITOS FUNDAMENTAIS DE PROGRAMAÇÃO
1.1.Noção de Algoritmos
1.2. Pseudo Linguagem
1.3 .Estrutura de um Programa
1.4. Dados e Variáveis
1.5 .Operadores
2.
PROGRAMAÇÃO ESTRUTURADA
2.1. Desenvolvimento de Algoritmos: análise e resolução de problemas técnica top-down
2.2. Estrutura de Controle: Condição.
2.3. Estrutura de Controle: Laço de Repetição.
3.
VETORES E MATRIZES
3.1. Conceitos de vetores
3.2. Declaração de vetores
3.2. Operações de Manipulação de vetores
3.3. Conceito de Matrizes
3.4. Declaração de Matrizes
3.5. Operações sobre Matrizes
4.
MODULARIZAÇÃO
4.1 Conceitos de Modularização e decomposição
4.2. Declaração de funções
4.3. Passagem de parâmetros
5.
STRINGS E FUNÇOES DE MANIPULAÇÃO
6. TIPOS ESTRUTURADOS
6.1.Registros
Cronograma de Aulas
Semana n°.
Tema
1
Conceitos Fundamentais de Programação
2
Conceitos Fundamentais de Programação
3
Conceitos Fundamentais de Programação
4
Programação Estruturada
5
Programação Estruturada
6
Programação Estruturada
7
Programação Estruturada
8
Vetores e Matrizes
9
Avaliação
10
Vetores e Matrizes
11
Vetores e Matrizes
12
Modularização
13
Modularização
14
Strings e Funções de Manipulação
15
Strings e Funções de Manipulação
16
Tipos Estruturados (Registros)
17
Tipos Estruturados (Registros)
18
Avaliação Oficial
19
Revisão e preparação para Avaliação Substitutiva
20
Prova Substitutiva
NOÇÕES DE
LÓGICA
E
ALGORITMO
Algoritmo Objetivo :
Facilitar o entendimento da
lógica de programação usando
uma linguagem conhecida
(português).
Lógica:
A lógica trata da correção do pensamento, isto
é, ela nos ensina a usar corretamente o raciocínio.
Pensar com lógica significa ordenar o pensamento.
Para resolver um determinado problema é
necessário raciocinar de forma lógica ordenando o
pensamento com o objetivo de atingir a solução
pretendida.
A lógica está presente no nosso cotidiano, nas
nossas ações, quando falamos, ou escrevemos, pois
quando queremos
falar, escrever
ou
agir
corretamente
precisamos
ordenar
nosso
pensamento.
Algoritmo:
Algoritmo pode ser definido como uma
sequência lógica, e sem ambiguidade de passos
que levam a solução de um dado problema.
É uma sequência de passos que visam
atingir um objetivo bem definido.
O algoritmo está presente em todas as
ações do nosso dia à dia como se fosse um
plano para resolução de problemas.
Os algoritmos são comuns em nosso
cotidiano, como por exemplo, uma receita de
bolo. Nela está descrita um série de
ingredientes necessários, uma sequência de
passos a serem cumpridos para atingir o
objetivo que é ter um bolo pronto. Ou então um
mapa para chegar até um local, que descreve o
caminho a ser percorrido através de uma
sequência
de
passos.
Podemos descrever atividades do
cotidiano como por exemplo, trocar uma
lâmpada queimada.
Apesar
de
aparentemente
óbvio
demais, muitas vezes fazemos esse tipo de
atividade sem percebermos determinados
detalhes.
De
maneira
simples
podemos
descrever:
pegue uma escada;
posicione-a embaixo da lâmpada
queimada;
pegue uma lâmpada nova;
suba na escada;
retire a lâmpada velha;
coloque a lâmpada nova
desça e guarde a escada.
A sequência descrita supõe que a lâmpada
nova não esteja queimada e que se tenha
apenas uma lâmpada para ser trocada.
Se tivermos uma outra situação: várias
lâmpadas que precisam ser testadas e trocadas
ou não, conforme sua condição, a sequência de
passos para a solução do problema será outra.
Para resolvermos um problema através
da construção de um algoritmo podemos
especificar um método que traduza uma
sequência lógica de passos:
“1. Ler atentamente o enunciado - para resolver um problema é necessária sua
compreensão;
2. Retirar do enunciado a relação das entradas de dados - através do
enunciado podemos descobrir quais são as informações que devem ser
fornecidas, a partir das quais desenvolveremos as ações;
3. Retirar do enunciado a relação das saídas de dados - através do
enunciado podemos descobrir quais são os dados que devem ser emitidos para
compor o resultado final, objetivo do algoritmo;
4. Determinar as ações que o levarão a atingir o resultado desejado - nesta
etapa precisamos determinar qual sequência de ações é capaz de transformar
um conjunto definido de dados nas informações de resultado;
5. Construir o algoritmo - descrever os passos para resolver o problema;
6. Executar o algoritmo - implica em executar todas as ações descritas
seguindo o fluxo de execução estabelecido, verificando se os resultados obtidos
correspondem ao esperado. Desta forma torna-se possível detectar algum
possível erro no desenvolvimento do algoritmo. Essa atividade é conhecida
como “TESTE DE MESA”.
Exercícios:
1 - Um homem precisa atravessar um rio com um
barco que possui capacidade de transportar apenas
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 ?
Informações:
um barco
um homem
um lobo
um bode
um maço de alfafa
Ficando sozinhos (sem o Homem) :
- O Bode come a Alfafa
- O Lobo come o Bode
ação:
atravessar o rio sem perder as cargas
resultado:
todas as as cargas na outra margem do
rio.
Algoritmo:
início
atravessar homem e bode
voltar homem
atravessar homem e lobo
voltar homem e bode
atravessar homem e alfafa
voltar homem
atravessar homem e bode
fim
2 - Elabore um algoritmo que mova três discos de
uma Torre de Hanói, que consiste em três 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. Deve-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.
ações:
movimentar um disco de cada vez de forma
que fiquem ordenados
resultado:
discos transferidos e ordenados
haste
para outra
Algoritmo:
início
mover o disco 1 para a haste b
mover o disco 2 para a haste c
mover o disco 1 para a haste c
mover o disco 3 para a haste b
mover o disco 1 para a haste a
mover o disco 2 para a haste b
mover o disco 1 para a haste b
fim
3. 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 medidas de segurança não se permite
que em alguma margem a quantidade de
jesuítas seja inferior à de canibais. Qual a
sequência de passos que permitiria a
travessia com segurança ?
informações:
3 jesuítas
3 canibais
1 barco com capacidade para 2 pessoas
Condição : não ter em nenhum momento
quantidade de jesuítas inferior a canibais.
1. Atravessar um jesuíta e um canibal para a margem B
2. Voltar o jesuíta para a margem A
3. Atravessar dois canibais para a margem B
4. Voltar um canibal para a margem A
5. Atravessar dois jesuítas para a margem B
6. Voltar um jesuíta e um canibal para a margem A
7. Atravessar dois jesuítas para a margem B
8. Voltar um canibal para a margem A
9. Atravessar dois canibais para a margem B
10. Voltar um canibal para a margem A
11. Atravessar dois canibais para a margem B
ALGORITMOS
Já vimos que para resolvermos um problema
através da construção de algoritmos podemos
seguir um método, entre outros existentes, que
traduza uma sequência lógica de passos. Estes
envolvem descobrir as informações, ações e
resultados.
Introdução à Programação
Conceitos Introdutórios sobre
Construção de Algoritmos
Conteúdo
• Representação Algorítmica
• Fases Básicas da Construção de Algoritmos
• Programação Estruturada
• Introdução a uma Linguagem Algorítmica
Contextualização
• Abrangência
– Apresentar os primeiros conceitos relacionados à
construção de algoritmos estruturados.
• Importância
– Os conceitos discutidos formam a parte mais
elementar de qualquer algoritmo.
Objetivos
•
•
•
•
Apresentar as principais formas de representar um algoritmo.
Discutir as 3 fases para construção de algoritmos.
Contextualizar a importância de Algoritmos Estruturados.
Definir os seguintes conceitos:
– Identificadores e Palavras Reservadas
– Tipos de Dados
– Variável e Constante
– Expressões
– Operadores
Formas de representar um algoritmo
• Algoritmos podem ser representados, dentre outras maneiras, por:
– DESCRIÇÃO NARRATIVA
• Utiliza uma linguagem de escrita natural para descrever
algoritmos.
– FLUXOGRAMA (DIAGRAMA DE MÓDULOS)
• Utiliza uma linguagem de representação gráfica para
descrever algoritmos.
– LINGUAGEM ALGORÍTMICA (PSEUDO-CÓDIGO)
• Utiliza uma linguagem de escrita artificial para descrever
algoritmos.
Formas de representar um algoritmo
Exemplo:
Algoritmo para converter uma
temperatura em Fahrenheit
para Celsius
Formas de representar um algoritmo
• Descrição narrativa do algoritmo FahrenheitCelsius:
solicite a temperatura em Fahrenheit;
transforme a temperatura em Fahrenheit para
Celsius;
informe a temperatura em Celsius.
Formas de representar um algoritmo
• Fluxograma (Diagrama de Módulos)
– Seus principais símbolos gráficos são:
= Início e final do fluxograma
= Operação de entrada de dados
= Operação de saída de dados em impressora
= Operação de saída de dados em vídeo
= Operações de processamento
= Decisão
= Seta de Fluxo de Dados
= Conector de Fluxo de Dados
Formas de representar um algoritmo
• Fluxograma do algoritmo Fahrenheit-Celsius
Início
Início do algoritmo
Fahrenheit
Entrada da temperatura (F)
Celsius = 5/9 * (Fahrenheit – 32)
Cálculo da temperatura (C)
Celsius
Apresentação do resultado
Fim
Fim do algoritmo
Formas de representar um algoritmo
• Linguagem algorítmica (pseudo-código)
– A forma geral de um algoritmo em pseudo-código:
Algoritmo <nome_do_algoritmo>
[<declaração_de_variáveis>]
[<sub-algoritmos>]
Início
<corpo_do_algoritmo>
Fim.
Formas de representar um algoritmo
•
LINGUAGEM ALGORÍTMICA (PSEUDO-CÓDIGO)
– Onde:
• Algoritmo
– Indica o início da definição do algoritmo.
• <nome_do_algoritmo>
– Nome dado ao algoritmo para distingui-lo dos demais.
• [<declaração_de_variáveis>]
– Parte opcional onde são declaradas as variáveis globais usadas no
algoritmo principal e, eventualmente, nos sub-algoritmos.
Formas de representar um algoritmo
• LINGUAGEM ALGORÍTMICA (PSEUDO-CÓDIGO)
– Onde:
• [<subalgoritmos>]
– Parte opcional onde são definidos os sub-algoritmos.
• Início
– Palavra que delimita o início do corpo do algoritmo.
• <corpo_do_algoritmo>
– Conjunto de instruções do algoritmo.
• Fim
– Palavra que delimita o término do corpo do algoritmo.
Formas de representar um algoritmo
• Pseudo-código do algoritmo Fahrenheit-Celsius
Algoritmo Fahrenheit-Celsius
Real: Fahrenheit, Celsius;
Início
Ler (Fahrenheit);
Celsius  5/9 * (Fahrenheit – 32);
Escrever (Celsius);
Fim
Formas de representar um algoritmo
Desc. Narrativa
Solicite a temperatura
em Fahrenheit.
Transforme de
Fahrenheit para
Celsius.
Informe a temperatura
em Celsius.
Fluxograma
Início
Fahrenheit
Celsius = 5/9 *
(Fahrenheit – 32)
Celsius
Fim
Ling. Algorítmica
Algoritmo Fahrenheit-Celsius
Real: Fahrenheit, Celsius;
Início
Ler (Fahrenheit);
Celsius  5/9 * (Fahrenheit – 32);
Escrever (Celsius);
Fim
Formas de representar um algoritmo
Vantagens
Desvantagens
Descrição
Narrativa
 O português é bastante conhecido  Imprecisão.
Fluxograma
 Padrão mundial.
 Ferramenta bem conhecida.
 Figuras dizem muito mais que
palavras.
 Independência de linguagem de
programação.
 Usa o português como base.
 Define-se melhor quais e como os
dados vão estar estruturados.
 Passagem quase imediata do
algoritmo para uma linguagem de
programação qualquer.
Linguagem
Algorítmica
por nós.
 Pouca confiabilidade (a imprecisão
acarreta a desconfiança).
 Extensão (normalmente, escreve-se
muito para dizer pouca coisa).
 Complica-se à medida que o
algoritmo cresce.
 Pouca atenção aos dados, não
oferecendo recursos para declará-los.
 Exige a definição de uma linguagem
não real para trabalho.
 Não é padronizada.
Construindo algoritmos
• Uma boa prática para construir algoritmos é dividir o problema em 3 fases
(Entrada, Processamento e Saída).
– Lembra-se do seu primeiro mantra de programação?
Entrada
Processamento
Saída
– ENTRADA: São os dados de entrada do algoritmo.
– PROCESSAMENTO: São os procedimentos utilizados para chegar ao
resultado final.
– SAÍDA: São os dados já processados.
Construindo algoritmos
• No algoritmo Fahrenheit-Celsius temos:
– ENTRADA: Temperatura em Fahrenheit
– PROCESSAMENTO: Celsius = 5/9 *(Fahrenheit – 32)
– SAÍDA: Temperatura em Celsius
• Num algoritmo para calcular a área de um triângulo temos:
– ENTRADA: Base e Altura do triângulo
– PROCESSAMENTO: Área = (Base * Altura)/2
– SAÍDA: Área
Construindo algoritmos
Dividir o problema em Entrada,
Processamento e Saída
irá ajudá-lo a ordenar corretamente as
instruções do seus algoritmos.
Construindo algoritmos
Por isso, antes de construir um algoritmo,
pare para pensar e identificar:
Que dados preciso para começar? – Entrada
Quais são os cálculos e decisões? – Processamento
Que dados devem ser exibidos? – Saída
Atividade 1
•
Identifique a entrada, o processamento e a saída dos
problemas abaixo:
1. Calcular e exibir a média ponderada de 2 notas dadas.
(nota1= peso 6 e nota2= peso 4)
2. Reajustar um salário em 17,75%.
3. Calcular o desconto de 23% sobre o preço de um produto.
4. Dada uma taxa de câmbio, transformar um valor em Dólar
para Reais.
5. Dada uma taxa de câmbio, transformar um valor em Reais
para Dólar.
Atividade 1 – Respostas
1. Calcular e exibir a média ponderada de 2 notas dadas.
(nota1= peso 6 e nota2= peso 4)
– ENTRADA: nota1 e nota2
– PROCESSAMENTO: médiaP=((nota1 * 6)+(nota2 *
4))/(6+4)
– SAÍDA: médiaP
Atividade 1 – Respostas
2. Reajustar um salário em 7,75%.
– ENTRADA: salário
– PROCESSAMENTO: salárioR = salário+(salário*0,0775)
– SAÍDA: salárioR
3. Calcular o desconto de 23% sobre o preço de um produto.
– ENTRADA: preço
– PROCESSAMENTO: desconto = preço*0,23
– SAÍDA: desconto
Atividade 1 – Respostas
4. Dada uma taxa de câmbio, transformar um valor em Dólar
para Reais.
– ENTRADA: câmbio e dólar
– PROCESSAMENTO: real = dólar * câmbio
– SAÍDA: real
5. Dada uma taxa de câmbio, transformar um valor em Reais
para Dólar.
– ENTRADA: câmbio e real
– PROCESSAMENTO: dólar = real/câmbio
– SAÍDA: dólar
Atividade 2
1.) Imagine o seguinte problema: Calcular a média final dos
alunos da 3ª Série. Os alunos realizarão quatro provas: P1, P2,
P3 e P4.
Onde:
Média Final = P1 + P2 + P3 + P4
-------------------------4
Para montar o algoritmo proposto, faremos três perguntas:
a) Quais são os dados de entrada?
R: Os dados de entrada são P1, P2, P3 e P4
b) Qual será o processamento a ser utilizado?
R: O procedimento será somar todos os dados de
entrada e dividi-los por 4 (quatro)
c) Quais serão os dados de saída?
Atividade 2
2.) Imagine o seguinte problema: acrescentar os
pesos para cada prova que são respectivamente :
P1= PESO 4
, P2= PESO 6
, P3= PESO 4
e P4 = PESO 6
- Calcular e mostrar a media_final
Atividade para próxima aula
Lista com o professor
FIM
Download

ALGORITMO E PROGRAMAÇÃO.