Вы находитесь на странице: 1из 19

Prof. Msc.

Jos Eduardo Ribeiro


Centro Universitrio de Araraquara
Departamento de Cincias da Administrao e Tecnologia
Curso de Sistemas de Informao
Aula 1 - Sumrio
Apresentao do professor e da disciplina
Aspectos de comportamento e participao
Motivao
Reviso
Apresentao do professor
Mestre em Cincia da Computao pela Universidade
Federal deSoCarlos.
LecionanaUniara(Araraquara) h4anos.
E-mail paracontato:
jeduribeiro@gmail.com
jose_ribeiro@dc.ufscar.br
jeribeiro@uniara.com.br
Apresentao da disciplina
O objetivo bsico da disciplina de Estrutura de Dados
(ED) fornecer ao aluno conceitos fundamentais sobre
as estruturas de dados clssicas, suas formas de
representaoeoperaesassociadas.
Alm disso, o aluno dever entender quando e como
aplicar esses conceitos usando uma linguagem de
programao(linguagemC).
Portanto, ospr-requisitosso:
Possuir lgicadeprogramao.
Conhecer asintaxeesemnticabsicasdalinguagemC.
Veremosno1 Bimestre.
Apresentao da disciplina
Contedo bsico:
LinguagemC
Alocaodinmicadememria(ponteiros, struct)
Pilhas
Filas
Listas
Recursividade
rvores
Apresentao da disciplina
Referncias bibliogrficas:
TENENBAUN, A. M. Estruturas de Dados Usando C.
Makron: SoPaulo, 1995.
PEREIRA, S. L. Estrutura de Dados Fundamentais -
ConceitoseAplicaes. 12 ed. rica: SoPaulo, 2009.
SILVA, O. Q. Estrutura de dados e algoritmos usando C.
CinciaModerna: SoPaulo, 2007.
SENNE, E. L. F. Primeiro Curso de Programao em C.
VisualBooks. Florianpolis, 2003.
Aspectos de comportamento e
participao
Alguns aspectos de comportamento merecem ser
reforados:
Aproveitamento ao mximo das aulas.
Prova no ser remarcada para quem perde-la.
Para isso existe avaliao substitutiva.
Provas iguais ser considerado cola comprovada.
Cumprimento de horrio.
Participao com exerccios e/ou atividades a entregar
na aula.
Realizao de exerccios.
Consultas a livros da biblioteca.
Motivao
Por queestudar ED?
Aprincipal motivao para cursar a disciplina de ED estar
capacitado a resolver certos tipos de problemas usando as
estruturas de dados e suas representaes que sejammais
adequadas.
Quaistiposdeproblemas?
Exemplo: Clculodetempoematendimentobancrio.
necessrio construir um sistema para calcular o tempo
mdio durante o qual um cliente permanece na fila para
realizar algumservioemumaagnciabancria.
Motivao
Cenriodoexemplo:
X V V
Fila de clientes
Caixas
Motivao
Dado o cenrio, algumas consideraes devem ser
realizadas:
O sistema de clculo deve gerenciar duas entidades
basicamente: caixas e clientes. Para cada caixa, a nica
informaonecessriaseocaixaestlivreouocupado.
Asoperaes necessrias so:
Determinar o horrio em que o cliente chegou agncia. Em
outraspalavras, necessrioinserir oclientenafila.
Determinar o horrio em que o cliente foi atendido por algum
caixa. Emoutraspalavras, necessrioretirar oclientedafila.
Motivao
Para elaborar umsistema que represente esse conjunto
de dados e efetue as operaes necessrias, pode-se
utilizar umaestruturadedadosconhecidacomofila.
Fila pode ser vista como umconjunto de itens no qual o
primeiro item inserido ser tambm o primeiro a ser
removido.
Na disciplina, sero estudadas formas diferentes de
implementar filas.
Motivao
Gostariadeanalisar maisumexemplo.
Exemplo: Buscadasadaemumlabirinto.
Vamos supor que um rato esteja preso em um labirinto e
necessite encontrar a sada. Para isso, ele testa
sistematicamente cada caminho. Quando umcaminho levar
a umponto semsada, ele dever retroceder at umponto
ondeelepossatentar outrocaminhoaindanoexplorado.
Motivao
Cenriodoexemplo:
Motivao
De acordo com o cenrio, considere as seguintes
restriespararesolver oproblema:
O labirinto pode ser representado por uma matriz. Cada
posio do labirinto definida por uma linha e por uma
coluna.
Inicialmente, cadaposiopodeser marcadacomolivre ou
parede.
Cada movimento que realizado pelo rato deve ser
armazenado de alguma forma at que se encontre a sada.
Assim, o ltimo movimento armazenado representa a
posiocorrentedorato.
Motivao
Cada posio percorrida deveser atualizada para visitada,
ecadaposiosemsadadeveser atualizadaparabeco.
Caso o rato chegue a umbeco, ele dever retroceder at
chegar aumaposiolivre.
Para retroceder, ser necessrio analisar sempre o ltimo
movimento dado (posio corrente), removendo-o do
conjunto de movimentos. Isso dever acontecer at que o
ratochegueaumaposiolivre.
Casonohajamais movimentos paraanalisar noconjuntoe
o rato esteja em um beco, significa que o labirinto no
possui sada.
Motivao
Dessa forma, para elaborar umprograma que resolva esse
problema, asoperaes necessrias so:
Atualizar cada posio da matriz assimque o rato realizar algum
movimento.
Caso o rato possa se movimentar, inserir a posio corrente em
umconjuntodeposies.
Caso o rato chegue at umbeco, remover a posio corrente do
conjunto, de tal forma que a posio anterior se torne a nova
posiocorrente.
Motivao
Uma forma de representar o conjunto de posies e
efetuar as operaes necessrias utilizar uma
estruturadedadosconhecidacomopilha.
Pilha pode ser vista como umconjunto de itens no qual
o ltimo item inserido (topo) ser o primeiro a ser
removido.
Na disciplina, sero estudadas formas diferentes de
implementar pilhas.
Motivao
Com base nos dois exemplos apresentados, responda
qual das duas estruturas dedados (pilhaoufila) poderia
ser usadapararesolver oproblemaaseguir.
Problema: Deseja-se escrever um programa que leia do
usurio um nmero na base decimal e o converta para a
basebinria.
Soluo: Asoluodividir onmero lidopor 2 eguardar o
resto dessa diviso. Oquociente obtido dever ser dividido
novamente por 2 e o novo resto dever ser guardado. Esse
processo dever se repetir at que o quociente seja igual a
0. Para exibir o nmero binrio, basta exibir os valores de
restosnaordeminversaemqueforamcalculados.
Motivao
A partir dos exemplos, ficou mais claro por que
importante estudar estruturas de dados. Entretanto,
linguagens de alto nvel como Java e C# j
implementam algumas estruturas tornando-as
disponveis para os programadores. Mesmo assim,
necessrio aprender a escrever os cdigos referentes a
essasestruturas?
Muitas vezes, necessrio desenvolver sistemas para
certos dispositivos em que a principal restrio a
quantidade limitada de recursos computacionais. Nesses
casos, ser necessrio trabalhar com uma linguagem de
baixonvel comoalinguagemC.