Vous êtes sur la page 1sur 20

Pontifícia Universidade Católica do Paraná

Curso Sequencial de Redes de Computadores

Algoritmos e Estrutura de Dados Básicas


Introdução e Conceitos Básicos

Prof. Luiz Eduardo S. Oliveira, PhD


soares @ ppgia.pucpr.br
http://www.ppgia.pucpr.br/~soares
Conteúdo

Fornecer o conceito de algoritmos, estruturas
de dados.

Introduzir as estruturas básicas de controle.

Apresentar o conceito de programação
estruturada e modularização.
Introdução

O conceito central da programação e da ciência
da computação em geral é o de algoritmo.

A programação é a arte de ou técnica de
construir e formular algortimos de uma forma
sistemática.

Programas de computadores são formulações
concretas de algoritmos abstratos, baseados
em representações e estrutura especificas de
dados.
Introdução

Em um algoritmo devemos distinguir dois
aspectos complementares:
– Estático: Texto contendo instruções (comandos)
que devem ser executados em uma ordem
prescrita.
– Dinâmico: Os efeitos que tais comandos podem ter
durante a execução dos mesmos no tempo, dado
um conjunto de “valores iniciais”.

A execução de um algortimo é um evento dinâmico,
evoluindo no tempo.

Daí vem a dificuldade no entendimento de algoritmos, ou
seja, como visualizar as estruturas dinâmicas.
Conceitos Básicos: Algoritmos

Acão
– Evento que ocorre num período de tempo finito,
estabelecendo um efeito intencionado e bem
definido, como por exemplo:

Caminhar até a próxima esquina.

Colocar um livro em cima de uma mesa.

Atribuir o valor 3.14 a uma variável.
– Estamos interessados primeiramente nos efeitos
que as ações produzem.
– Ações de efeito imprevisíveis não nos interessam.
– Algortimos determinísticos.
Conceitos Básicos: Algoritmos

Estado
– O conjunto de propriedades do objeto que são
relevantes para nós na situação considerada.

Batatas com casca ou descascadas.

Valor de uma variável em um certo instante de execução.

Processo ou Evento
– Uma sequência temporal de ações.

Trazer a cesta com batatas; Símbolo de

Pegar a panela do armário; sequenciamento.
(R1)

Descascar as batatas;

Guardar a cesta;
Conceitos Básicos: Algoritmos

Padrão de Comportamento
– Suponha que no dia seguinte alguém relate o
mesmo evento.
– Pode-se dizer que temos o mesmo evento?
– Não, pois ocorerram em momentos diferentes.
– O que eles tem em comum?

O mesmo padrão de comportamento.
Exercício

Qual é o padrão de comportamento utilizados
para gerar essas duas sequências?
– a) 1, 5, 9, 13, 17, 21
– b) 1, 1, 2, 3, 5, 8, 13, 21, 34, 55
Conceitos Básicos: Algoritmos

Algoritmo
– É a descrição de um padrão de comportamento,
expressado em termos de um repertório bem
definido e finito de ações “primitivas”, das quais
damos por certo que elas podem ser executadas.
– Norma executável para estabelecer um certo efeito
desejado, que na prática será geralmente a
obtenção de uma solução a um certo tipo de
problema.
Conceitos Básicos: Algoritmos

Considere o evento R2

Trazer a cesta com batatas;

Pegar a panela do armário;

Colocar o avental;

Descascar as batatas;

Guardar a cesta;

O efeito ainda é o mesmo de R1, ou seja,
batatas descascadas.

Considere agora que uma condição é usada
para colocar o avental
– Somente se estiver usando roupa branca.
Conceitos Básicos: Algoritmos

Podemos escrever uma algorimos que cubra os
dois eventos.

Trazer a cesta com batatas;

Pegar a panela do armário;

SE “roupa é branca” ENTÃO “colocar o avental”;

Descascar as batatas;

Guardar a cesta;

Conectivo condicional: SE...ENTÃO
– A execução ou não da ação está condicionada ao
resultado da inspeção (Verdadeiro ou Falso).
Conceitos Básicos: Algoritmos

Suponha que exista 20 batatas a serem
descascadas.

Trazer a cesta com batatas;

Pegar a panela do armário;

SE “roupa é branca” ENTÃO “colocar o avental”;

Descascar as batatas;

....

....

Descascar as batatas;

Guardar a cesta;
– Qual seria uma forma mais inteligente de fazer
isso?
Conceitos Básicos: Algoritmos

Concectivo repetitivo: ENQUANTO...FAÇA

Trazer a cesta com batatas;

Pegar a panela do armário;

SE “roupa é branca” ENTÃO “colocar o avental”;

ENQUANTO “houver batatas” FAÇA
– Descascar as batatas;

Guardar a cesta;
– A execução de ENQUANTO “inspeção” FAÇA
“ação”, corresponde à execução repetida do
comando SE...ENTÃO.
– Isso exemplifica o poderio do conceito de algoritmo

Texto estático capaz de cobrir toda uma classe de
acontecimentos.
Conceitos Básicos: Algoritmos

Nessa relação entre um texto estático e
eventos evoluindo no tempo reside um grande
perigo:
– É fácil construir um algoritmo que não seja
executável em tempo finito.
– Ex: Enquanto “roupa é branca” Faça “Descasque
uma batata”

Algoritmos devem ser determinísticos
– Dadas as mesmas condições iniciais, ele deve
produzir o mesmo resultado no fim.
Conceitos Básicos: Programas

Computadores: Máquinas capazes de seguir
uma certa espécie de algoritmos, chamados
programas.

Capazes de entender linguagem de máquina

Algoritmo na forma
Linguagem de
natural Compilador
Máquina
“ling. programação”
Conceitos Básicos: Programas

Tipos de programas
– Fonte: Texto com um programa que o usuário pode
ler. Escrito em uma linguagem de programação

C, C++, Pascal, Fortran, Basic, Cobol, etc...
– Objeto: Codigo de máquina gerado pelo compilador
– Executável: Resultado de um link-editor que une
vários códigos objetos e produz um executável
(.exe no DOS).
Conceitos Básicos: Estruturas de
Dados

Um programa de computador precisa
representar e armazenar dados. Isso se dá por
intermédio das estruturas de dados.

Uma estrutura de dados retrata as relações
lógicas existente entre os dados.

Tipos primitivos:
– Inteiro, real, lógico e caracter

Tipos compostos podem ser construídos com
base nos tipos primitivos.
Programação Estruturada

Uma metodologia de projeto de programas
visando:
– Facilitar a escrita dos programas.
– Facilitar a leitura.
– Permitir a verificação a priori
– Facilitar a manutenção e modificação.

Modularização
– Uma boa estratégia para resolver um problema
complexo é dividí-lo em partes e resolver cada
parte separadamente.
Programação Estruturada

Modularização (cont.)
– Dividir e conquistar.
– Módulos coesos

Cada módulo implementa uma tarefa bem definida

Estruturas de Controle
– Aumentam consideravelmente a legibilidade e
compreensão dos programas.
– Proibe o uso de comandos de desvio (GOTO)
Por que tenho que ver tudo isso?

Algoritmos, estrutura de dados, programação e
redes de computadores.

O que tudo isso tem haver?