quarta-feira, 18 de fevereiro de 2009

Algoritmos

INTRODUÇÃO À LÓGICA DE PROGRAMAÇÃO

ALGORITMOS
Definimos Algoritmo como a seqüência de passos que visam atingir um objetivo bem definido.
Os algoritmos são utilizados no dia-a-dia para a solução dos mais diversos problemas.
Alguns exemplos genéricos de algoritmos usados no nosso cotidiano são: uma coreografia, um manual de instruções, uma receita de bolo, a solução de uma equação do 2º grau, uma pesquisa na lista telefônica, etc.
Assim, outra definição para algoritmos poderia ser:

Algoritmo é a descrição de um conjunto de ações que, obedecidas, resultam numa sucessão finita de passos, atingindo um objetivo esperado.
vSão propriedades de algoritmos:
• ações simples e bem definidas (não ambíguas);
• seqüência ordenada de ações;
• seqüência finita de passos.
Construindo um Algoritmo

RESOLUÇÃO DE PROBLEMAS ATRAVÉS DE COMPUTADORES

Os computadores podem ser usados de forma eficiente na solução de certos tipos de problemas. Os problemas que suportam tratamento por computador, em geral, envolvem grandes quantidades de dados ou são problemas de natureza complexa, exigindo a execução de um grande número de passos para alcançar a solução. Basicamente são problemas na área de processamento de dados e na área científica.
O Computador é uma ferramenta que permite a realização do processamento automático (ou eletrônico) de dados.

Dados de Entrada--------Dados de Saída-------Processamento(transformação)

Define-se por Processamento de Dados qualquer atividade que, utilizando informações (ou dados), efetua transformações para obter novas informações (ou dados) como resultado.
Porém, a tarefa desempenhada pelos computadores é apenas parte do processo de solução de problemas.
As etapas na solução de problemas são:
i) Entendimento do problema;
ii) Criação de uma seqüência de operações (ou ações) que, quando executadas, produzem a solução para o problema;

iii) Execução desta seqüência de operações.

iv) Verificação da adequação da solução.

As etapas de entendimento do problema, criação de seqüência de ações e verificação da adequação da solução são tarefas desempenhadas por pessoas. Já a execução das operações pode ser desempenhada por computadores.
Os computadores têm a capacidade de executar processos complicados e com grande quantidade de informações com rapidez e confiabilidade.
Os dados existem nas mais variadas formas, tanto no mundo real quanto nos computadores, mas para este curso usaremos três tipos, que serão suficientes embora não representem toda a gama possível. Estes tipos são:


Dados Numéricos - são quantidades como o peso de uma pessoa, o número de alunos em uma sala de aula, o preço de uma mercadoria, uma temperatura, etc. Nos algoritmos são representados como na escrita corrente, com a exceção de que se usa o ponto e não a vírgula para se separar a parte decimal, e não se separam as casas de milhares, milhões, etc.
Exemplos: 1.23 -3 45657 0.66 -897.06 etc.
Nos nossos exemplos daremos a todas as variáveis que armazenam valores numéricos o tipo numérico (assim mesmo, sem acento).


Dados Literais - são letras, nomes, sinais de pontuação, etc. Outros nomes comuns para este tipo de dados são caracteres e strings (por causa do inglês). Nos algoritmos são representados por letras, números, espaços e sinais entre aspas.
Exemplos: "Rio de Janeiro" "Computador" "A" "?" "Fora!" "1234"
Nos nossos exemplos daremos a todas as variáveis que armazenam valores literais o tipo caracter.


Dados Lógicos - podem assumir apenas dois valores: Falso ou Verdadeiro. Também são chamados de dados booleanos. Vamos estudar com mais profundidade este tipo à frente no curso. Ele é importante porque dá a "inteligência" ao computador, mas neste momento podemos ficar só com esta pequena explicação.
Nos nossos exemplos daremos a todas as variáveis que armazenam valores lógicos o tipo logico (assim mesmo, sem acento).
E como os dados estão representados nos algoritmos? De duas maneiras: como constantes, ou seja, o dado escrito como ele é, como nos exemplos acima, e armazenados em variáveis.

Variáveis são locais de armazenamento temporário para os dados. É um conceito parecido com os famosos x, y e z que usamos na Álgebra. Elas têm três características:

Nome: é como nos referimos às variáveis. Os nomes geralmente descrevem a função das variáveis no programa; por exemplo, se você tem um programa para calcular a média aritmética de dois valores, teria as variáveis PrimeiroValor, SegundoValor, e Media; já em um outro, poderia ter a variável Salario, para armazenar o salário de um funcionário, etc.

Regras para a formação de nomes de variáveis
Toda linguagem de programação tem regras para a formação de nomes de variáveis, e nós também teremos: neste curso, os nomes de variáveis deverão começar com uma letra, e depois poderão ter qualquer combinação de letras, números e sublinhado ("_"). Não pode haver espaços no interior dos nomes, e não haverá diferenciação entre maiúsculas e minúsculas (ou seja, os nomes "Salario", "SALARIO", e "salario" se referem à mesma variável. Exemplos: Nomes Válidos: Valor1, Valor2, Nota_do_Aluno, Salario Nomes Inválidos: 1Valor, 2Valor, _Salario, Nota.do.Aluno, Media-Aritmetica

Tipo: indica o tipo de dado que aquela variável armazena. Assim, uma variável pode ser do tipo numérico, literal ou lógico. Quando se define uma variável para uso no programa (os programadores dizem "declarar uma variável"), temos que indicar ao computador não só o seu nome, mas também o tipo de dados que ela vai armazenar.


Conteúdo: É o valor armazenado na variável em determinado momento. Podemos fazer duas coisas com o conteúdo de uma variável: examiná-lo, ou seja "ver o que ela contém, para usar ou não", e modificá-lo. Quando criamos uma variável em um programa, ela está "vazia", ou seja, seu conteúdo é indeterminado. Para que ela tenha utilidade, devemos dar-lhe valores que tenham a ver com o problema em questão (os programadores usam a expressão "atribuir valores a ela").

http://www.4shared.com/file/39138333/b3c7fdff/Pzim50.html

Segue o link para o Pascal, a ferramenta de programação que utilizaremos em nossas aulas.
É só copiar o link e colar na barra de endereços.

segunda-feira, 16 de fevereiro de 2009

Diretrizes para elaboração de um algoritmo

Diretrizes para a Elaboração de Algoritmos

As diretrizes apresentadas abaixo são genéricas e podem ser usadas ou adaptadas na organização dos passos que comporão a solução de um determinado problema (ou seja, na criação de um algoritmo para atingir um objetivo determinado).

1. Identificação do problema: determinar o que se quer resolver ou qual objetivo a ser atingido.

2. Identificação das “entradas de dados”: informações fornecidas, a partir das quais se desenvolverão os cálculos.

3. Identificação das “saídas de dados”: as informações a serem geradas como resultado.

4. Identificação das regras e limitações do problema ou das limitações do agente executante (ex: se o agente fosse uma calculadora não-científica, iriam existir limitações no cálculo de funções, por exemplo).

5. Determinação do que deve ser feito para transformar as “entradas” em “saídas”. Neste ponto deve ser determinada a seqüência de ações que leve à solução do problema. Para isto é preciso:

5.1. observar as regras e limitações já identificadas;

5.2. determinar ações possíveis de serem realizadas pelo agente.

6. Construção do Algoritmo, utilizando uma das formas de representação de algoritmos.

7. Teste da solução - execução de todas as ações do algoritmo, seguindo o fluxo estabelecido para verificar se ele está realmente gerando os resultados esperados ou detectar possíveis erros em sua descrição.

Exemplo:
Imagine o seguinte problema: Calcular a média final dos alunos da 6ª Série. Os alunos realizarão quatro provas: P1, P2, P3 e P4. A Média Final é calculada por:
(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)
(P1 + P2 + P3 + P4)/4
c) Quais serão os dados de saída?
R: O dado de saída será a média final

Diagrama de Blocos Diagramas de Blocos

• Os diagramas de blocos devem ser feitos e quebrados em níveis.
• Para o desenvolvimento correto de um diagrama, ele deve ser iniciado de cima para baixo.
• É incorreto e “proibido” ocorrer o cruzamento de linhas de fluxo de dados entre os símbolos.

segunda-feira, 9 de fevereiro de 2009

Referências

  • LOPES, Anita; GARCIA, Guto. Introdução à Programação 500 Algoritmos Resolvido.
  • FORBELLONE, André L.V., EBERSPACHER, Henri. F. Lógica de Programação: A Construção de Algoritmos e Estrutura de Dados.