terça-feira, 15 de julho de 2008

Agoritmos


















Formas de Representação de Algoritmos

Descrição Narrativa
Fluxograma Convencional
Pseudocódigo, Linguagem Estruturada ou Portugol
Fluxograma de Chapin

Descrição Narrativa
representação dos algoritmos diretamente em linguagem natural

Fluxograma Convencional

É uma representação gráfica de algoritmos no qual formas geométricas diferentes implicam ações (instruções, comandos) distintas.

Simbologias Básicas

Pseudocódigo, Portugol

nassemelha-se bastante à forma em que os programas são escritos

Diagrama de Chapin

Criado por NED CHAPIN a partir dos trabalhos de NASSI & SHNEIDERMAN

Solução de Problema x Disciplinas do Curso

Método para Construção de Algoritmos


Ler atentamente o enunciado.
Retirar do enunciado a relação das entradas de dados.
Definir a relação das saídas.
Determinar o que deve ser feito para transformar entradas determinadas nas saídas especificadas
Construir o algoritmo.
Executar o algoritmo (teste de mesa).

Construção de algoritmos computacionais

Capacidades elementares
Ler
Escrever
Efetuar operações aritméticas básicas:
Adição, subtração, multiplicação e divisão
A execução de instruções em um computador requer a manipulação de dados armazenados em sua memória.

MEMÓRIA - Dispositivo físico para armazenar programas e dados. Organizada em um conjunto de elementos denominados bytes.
Cada conjunto de bytes compõe uma posição de memória.
Cada posição recebe um nome (identificação) e armazena um determinado valor.

Memória

Cada posição sempre armazena um valor.
lixo
Toda vez que uma mesma posição recebe um valor novo (execução de uma nova instrução), o valor velho é sobrescrito, isto é, deixa de existir dando lugar ao novo conteúdo .
Programa que calcula a área de um triângulo
Posições de memória
Base, altura, memória
Instruções de entrada e saída
comando versus posição de memória
Sobrescrição de valores
Armazenamento de resultados
Símbolo de atribuição ←
Linguagem
Sintaxe

Pseudocódigo - Linguagem

Características
Não é uma linguagem de programação
Base
Português
Sintaxe usadas em linguagens de programação tradicionais
Código escrito em pseudocódigo:Algoritmo
Vantagens
Abstração – detalhes específicos da linguagem de programação
Construção de uma solução – solução do problema

Bibliografia

ASCENCIO, A. F. G.; CAMPOS, E.A. V. Fundamentos e programação de computadores. São Paulo: Pearson, 2007.
CARBONI, I.F. lógica de programação, São Paulo: Thomsom, 2003.
BORATTI, I.C.; OLIVEIRA, A.B. Introdução à programação de computadores. Florianópolis: VisualBooks, 2004.
MANZANO. J. A. N. G. Estudo dirigido de algoritmos. São Paulo: Érica, 2003. (15)
FORBELLONE, André Luiz Villar; EBERSPACHER, Henri Frederico Eberspacher. Lógica de Programação de Algoritmos e Estrutura de Dados. 2 ed. São Paulo: Makron Books, 2000 (9)
GUIMARÃES, LAGES. Algoritmos e estruturas de dados. Rio de Janeiro: LTC,1994.


Algoritmo

Seqüência lógica e finita de instruções, descritas em uma linguagem específica, as quais ao serem executadas solucionam um problema.

“Um algoritmo deve especificar quais são as instruções que devem ser executadas e em que ordem ”( BORATI; OLIVEIRA,2004)

Algoritmo Correto: Sempre termina e para qualquer instância de entrada produz uma saída correta

Exercício
compor um algoritmo que determine a média aritmética de 03 valores.

Exercício - solução

Algoritmo media_tres;
variáveis
valor1,valor2,valor3:inteiro;
media:real;
Inicio
{leia valor1,valor2, valor3;}
leia valor1; (1)
leia valor2; (2)
leia valor3; (3)
media ← (valor1+valor2+valor3)/3; (4)
escreva media; (5)
Fimalgoritmo

Tipos de valores

Algoritmos manipulam valores :
Informados pelo usuário
Intermediários
Resultado final
Existem diferentes tipos de dados
Exemplo: Livro
Título: PHP A BIBLIA
Ano:2004
Preço:195,00
Editora: makron books
tipos de dados X operações
Tipos de valores
Classificação
Tipo
Características e operações
Classificação em pseudocódigo
Inteiro
Real
Caractere
Literal
lógico

Tipos de valores
Variáveis


Posição de memória versus armazenamento de valores
Sobreposição de valores - volatilidade
Tudo aquilo que é sujeito a variações, que é incerto, instável ou inconstante:
variável
Variável (computação) representa um nome de um local onde se pode colocar um valor ou conjunto de valores

Variáveis

O nome de uma variável é um IDENTIFICADOR, cuja sintaxe em pseudocódigo obedece a regra:
O nome de uma variável pode ser composto por letras, dígitos, e o caractere sublinhado (_), sendo que o primeiro caractere deve ser uma letra.
Maiúscula versus minúscula: indiferente
Situação: nome,_valor, #55, k2, achou, ano, x,12, “Vacina”

Compatibilidade de tipos

O valor a ser armazenado em uma variável deve ser do mesmo tipo da variável
Exemplos
1.Num ← 30 / 0.75;
2.Media_semestre ← (7.5 +6.2)/2;
3.digito ← “2x”;
4.Aprovado ← (Media_semestre >= 7.0) E (frequencia >0.75)
Tipo das variáveis
Num, Media_semestre: REAL;
Digito: LITERAL;
Aprovado: LÓGICO;
ALGORTIMO ILUSTRATIVO: Compatibilidade de Tipos

Operadores

Os operadores podem subdividir-se em:
Operadores unários - por envolverem apenas um operando
Operadores binários - por envolverem dois operandos
Operadores de atribuição - por permitirem a atribuição de um valor a uma variável
Operadores especiais - existentes em algumas linguagens como a C e C++
Operador de atribuição
Sintaxe - pseudocódigo: ←

Operação de atribuição

Conceito – operação que permite armazenar um valor em uma variável
Exemplos:
aux ¬ 2
soma ¬ aux + 100
b ¬ (5 = 3)

operadores aritméticos

+, -, *, /, resto(mod), div, sqr, **, ^
SQR = raiz quadrada
MOD = resto divisão inteira
DIV = quociente da divisão inteira
**, ^ = exponenciação
Delimitadores
colchetes [ ] ou (. .)
comentários { } ou //

Exemplos

1.num ← (A**X) – Y**Z;
2.valor ← percentual_aumento*(salario + gratificacao);
3.Z ← P-V *D;
4.N ← X Resto 2; - lê-se n recebe resto da divisão de x por dois
5.Resultado ← sqr a; {lê-se resultado recebe raiz quadrada de a }
6.M ← 4 div 2; //lê-se M recebe quociente da //divisão de 4 por dois.

Operadores relacionais
Operadores lógicos


Expressões aritméticas

Precedência dos operadores:
1.+, - (unários)
2.*, /, \ , %, div, mod
3.+, - (binários)

Comandos de entrada e saída

Finalidades
Comando de Leitura – entrada
Leia
Exemplo
Leia codigo, nome_funcionario, cargo;
Comando de saída
escreva
Exemplo
Escreva codigo, nome_funcionario, cargo, salario;
Algoritmo Ilustrativo: entrada e saída de dados

Constantes

Valor que permanece inalterável durante toda a execução de um algoritmo, ou seja, é sempre constante e não sofre alteração no seu conteúdo.
Está associado a um local na memória do computador e portanto, também deve possuir um identificador.
É um valor tipado:lógico, literal, caractere, literal etc...

Atividade prática

Resolução da lista de exercícios 1

Regras para construção de algoritmos legíveis

1.Comentar algoritmo {}
Descrever significado das variáveis
{declaração das variáveis}
{declaração de constantes}
{cálculo do ICMS}
Partes significativa do código
2.Dê nomes significativos as variáveis
Significativo = indique o tipo de informação armazenada na variável ou constante.
Exemplo: nome_funcionario:literal;
3.Sublinhe todas as palavras-chave do algoritmo, destacando as estruturas de controle
•Se (salario <600,00) cargo=" 019)">


Máximas da Programação (1/2)

Algoritmos devem ser feitos para serem lidos por seres humanos.
Escreva comentários no momento em que estiver escrevendo o algoritmo.
Os comentários deverão acrescentar alguma coisa.
Use comentários no início ao algoritmo:
O que faz o algoritmo, como utilizá-lo, explicar o significado das variáveis mais importantes, autor, data de escrita e alterações.

Máximas da Programação (2/2)

Utilize espaços em branco para melhorar a legibilidade.
Escolha nomes representativos para suas variáveis.
Um comando por linha é suficiente.
Utilize parênteses para aumentar a legibilidade das expressões e prevenir-se contra erros.
Utilize “indentação” (alinhamento) para mostrar a estrutura lógica do algoritmo.

Leituras Recomendadas

Guimarães, Lages - Algoritmos e estruturas de dados. LTC (1994)
Capítulos 1, 2 e 3.
Saliba - Técnicas de Programação- Uma Abordagem Estruturada (1993)
Capítulo 1- Introdução.
Capítulo 2- Formas de Representação de Algoritmos.
Capítulo 10- O Método dos Refinamentos Sucessivos.

Nenhum comentário: