Você está na página 1de 10

Estrutura de Dados

Aula 2- Funes
Conceito de Funo: Uma funo conjunto de comandos limitado por um par de chaves e precedido por um cabealho. Na construo de uma funo, todas as estruturas que voc estudou na disciplina de Algoritmos podero ser usadas no corpo da funo, mas uma funo independente da outra e, por essa ra o, jamais poder! ser criada dentro de outra funo. Prottipo de uma funo: " prot#tipo de uma funo contm o tipo de retorno da funo, o nome da funo, seguido de um par de parnteses que podem ou no ter par$metros. % finali ado, obrigatoriamente, com o ;&ponto'e'v(rgula). *m outras palavras, o prot#tipo de uma funo o cabealho da funo com ;&ponto' e'v(rgula) ao final. +ocali ao das fun,es As fun,es podero ser colocadas antes, ou depois, da main. Antes -- .e colocadas antes da main, elas sero /conhecidas0 pelo compilador antes de serem chamadas, evitando maiores problemas, mas, 1 medida que o n2mero de fun,es cresce, diminui a legibilidade do programa. 3epois -- .e colocadas depois da main, aumentamos a legibilidade, mas criamos um problema4 funo chamada antes da identificao dela pelo compilador. *sse contratempo foi resolvido de uma forma muito simples4 os prot#tipos das fun,es sero locali ados antes da main e as defini,es, depois da main. Ateno! 5 ' No confunda. 3efinio o cabealho e o corpo enquanto que prot#tipo o cabealho com ponto e v(rgula ao final, podendo at se apresentar de forma simplificada como veremos mais adiante. 6' A prototipagem uma tcnica que declara fun,es atravs dos seus prot#tipos antes da main, indicando assim que as fun,es e7istem, mas se encontram em outro lugar.

Chamada da funo e o seu retorno 8uando uma funo chamada, o flu7o de controle desviado para essa funo e, a partir desse momento, os comandos da funo so e7ecutados e, ao finali ar, o flu7o

retorna ao comando seguinte daquele onde ela foi ativada &se for void) ou ao ponto onde ela foi chamada, para fun,es com retorno. 9ara que isso seja poss(vel, no poderemos desconsiderar o tipo de retorno e os par$metros, caso e7istam.

TIPO !" F#$%&" Fun'es sem par(metros Na linguagem :;; no obrigat#rio o uso de par$metros em todas as fun,es. .endo assim, nesse primeiro momento, vamos analisar as fun,es sem parmetros, pois no necessitam do dom(nio dos conceitos de passagem por valor ou por referncia e sem retorno por serem de mais f!cil entendimento. Uma funo que no retorna nada para a funo chamadora do tipo void e esse tipo de funo pode ser considerado, hierarquicamente, abai7o da main, tendo em vista que ela /fa tudo0 mesmo sem receber qualquer argumento. :omo feita a chamada de uma funo sem retorno< Uma funo do tipo void, tendo ou no par$metros, chamada pelo nome, isto , no precisar! que um comando lhe anteceda. .e tiver par$metros, eles estaro presentes entre os parnteses. =ejamos a sinta7e abai7o4 nome!afuno)***); 8uando lemos o prot#tipo de algumas fun,es sem retorno, no conseguimos visuali ar todas as opera,es que sero reali adas, mas isso natural porque somente a definio de uma funo que apresenta o conjunto de opera,es que devero ser reali adas.

Funo com par(metros 9ara que possamos trabalhar com fun,es com par$metros, primeiro precisamos saber como a passagem para esses par$metros feita. 3uas so as formas b!sicas de passagem dos par$metros4 5 ' 9assagem por valor Na passagem por valor, uma c#pia do valor, ou valores, passada para os par$metros formais da funo chamada atravs dos par$metros reais da funo chamadora. .endo que os par$metros reais podero estar representados por vari!veis ou constantes. A funo chamada poder! operar esses valores, mas no alterar! os valores da funo chamadora.

:oncordamos que para alguns poder! parecer confuso e, por essa ra o vamos e7emplificar com algo do cotidiano. .uponha um autor de livro e um leitor. Ao tentar entender a soluo de um problema, o leitor percebe que tem um erro. *le corrige o erro, mas no corrige o original que est! na editora, visto que ele recebeu uma c#pia do livro. As fun,es pr'definidas que voc viu em Algoritmos eram todas com passagem por valor. >un,es com passagem por valor podem, ou no ter retorno. .e a funo tiver retorno, lembre'se de que uma funo s# poder! retornar um valor para a funo chamadora. 6 9assagem por referncia Na passagem por referncia, o endereo da vari!vel da funo chamadora passado para a funo chamada e dessa forma, o valor poder! ser alterado. Na linguagem :, essa passagem tinha que ser feita atravs do uso da vari!vel ponteiro e acarretava, quando no operado corretamente, em muitos problemas. ?endo em vista os problemas causados pela manipulao dos ponteiros, a linguagem :;; criou um tipo novo de dado, chamado referncia que nada mais do que uma forma de atribuir um nome alternativo&apelido ou alias) para um objeto.

*sse conceito aplicado aos par$metros formais, par$metros da funo chamada, possibilitar! que a funo chamada receba o endereo do valor da funo chamadora, alterando'o. *sse tipo de passagem ficou mais simples do que o uso de ponteiros porque o compilador se responsabili a por tudo. :omo indicar uma referncia< " operador @ s(mbolo de endereo na linguagem : usado com outra conotao na linguagem :;; como afirma .aade, Aoel40 ... assume o papel de declarador de referncias0&p!g. 556). =amos us!'lo nos par$metros formais da funo. "bserve o prot#tipo abai7o.

9assagem por referncia por ponteiros

No se preocupe com os nomes usados por alguns autores para se referenciar a esse tipo4 passagem por nome ou passagem por endereo. " importante que o uso de uma vari!vel do tipo ponteiro obrigat#rio. *mbora a vari!vel do tipo ponteiro no seja objeto de estudo aqui, vale a pena di er que uma vari!vel do tipo ponteiro no guarda dado, mas o endereo de uma vari!vel. .uponha uma vari!vel inteira de nome a e uma vari!vel inteira do tipo ponteiro de nome pa. Assuma que a vari!vel pa aponta para a vari!vel a, significando que o conte2do de pa o endereo de a. ?rabalhar com vari!vel do tipo ponteiro implica no uso de dois operadores4 @&endereo) e B&conte2do do endereo apontado por pa). "bserve a figura ao lado.

Prottipos de fun'es

8ualquer funo poder! chamar outra funo desde que a funo chamada j! esteja declarada, ou definida.

+ari,veis -ocais . +ari,veis /0o1ais =ari!veis +ocais -- A maioria dos e7emplos apresentados at aqui teve vari!veis declaradas dentro das fun,es. A esse tipo de declarao, onde as vari!veis s# so visuali adas nas fun,es onde foram declaradas, chamamos de vari!veis locais. =ari!veis Clobais -- =ari!veis declaradas fora do escopo de todas as fun,es so chamadas de vari!veis globais. *sse tipo de vari!vel poder! ser manipulado por qualquer funo.

Aula 3: Estruturas Heterogneas


9odemos definir uma estrutura como sendo um conjunto de elementos, geralmente, agrupados sob uma l#gica e associados por um nome. *sses elementos podem ser vari!veis simples, matri es, outras estruturas e at fun,es. 9or essa definio, podemos concluir que uma estrutura pode ser formada por elementos de tipos diferentes. :ada elemento da estrutura chamado de membro ou campo. :omo se define uma estrutura< 9ara se definir uma estrutura, voc precisa seguir a seguinte sinta7e4

A?*NDE"F A definio termina com um G porque um comando. % bom ressaltar que nenhuma vari!vel foi declarada. 8uando definimos uma estrutura, o nome dado 1 estrutura se torna um tipo assim como voc usa int, f0oat, dou10e, char. :om este nome, voc poder! declarar vari!veis, inclusive arraHs &matri es) e, o mais importante, nem ser! necess!rio usar a palavra struct antes, s# o nome dado. Uma estrutura pode ser definida dentro de uma funo e ento, di emos que ela uma estrutura local ou ento, definida antes de todas as fun,es e di emos que ela uma estrutura global.

Uma estrutura definida como global poder! ser usada por todas as fun,es. *nquanto que uma estrutura definida localmente, s# poder! ser usada na funo onde foi definida. :omo se declara uma vari!vel do tipo definido por uma estrutura< 5I mtodo -- A declarao feita depois da definio. .e a definio for global, a declarao aparece em cada funo 6I mtodo -- A declarao feita junta com a definio. *7iste uma estrutura chamada de estrutura anJnima. *ssa estrutura no tem identificador. ?odas as vari!veis preciso ser declaradas na definio. As vari!veis de uma estrutura so agrupadas por uma l#gica e esto associadas a um mesmo nome. Um membro da estrutura pode ser acessado usando o operador membro da estrutura &.), chamado operador ponto, colocado entre o nome da vari!vel estrutura e o nome do membro.

5I mtodo -- Atribuindo valores aos membros Usando comando de atribuio na hora da declarao das vari!veis. Ateno para as chaves e para a sequncia correta dos dados. struct coordenadas K int 7, HG LG . . . coordenadas aMK'N, 6LG coordenadas bMK O, NLG "bserve o c#digo em :;; com a respectiva sa(da.

6I Ptodo -- Atribuindo valores aos membros Atribuio na hora da definioQdeclarao das vari!veis Atribuio de uma estrutura a outra estrutura um ponto a favor das estruturas em relao aos vetores struct prod K char nome9rodR65SG float valorG Lproduto5MK/martelo0, TN.UVL, produto6MK/furadeira0, 6NO.WNLG

Acessando cada membro de cada vari!vel estrutura do tipo prod No nosso e7emplo4 Nome da vari!vel estrutura4produto5 Nome do primeiro membro4 nome9rod Nome do segundo membro4 valor Acessando o membro nome9rod da vari!vel estrutura produto54 produto5. nome9rod Acessando o membro valor da vari!vel estrutura produto54 produto5. valor Nome da vari!vel estrutura4 produto6 Nome do primeiro membro4 nome9rod Nome do segundo membro4 valor Acessando o membro nome9rod da vari!vel estrutura produto64 produto6. nome9rod Acessando o membro valor da vari!vel estrutura produto64 produto6. valor "bserve o c#digo em :;; com a respectiva sa(da.

TI Ptodo -- Atribuio atravs da leitura via teclado struct prod K char nome9rodR65SG float valorG Lproduto5, produto6G "bserve o c#digo em :;; com a respectiva sa(da.

Como se dec0ara um arra2 de estruturas3 45 m6todo -- 3a mesma forma que declaramos as estruturas simples, podemos declarar os arraHs de estruturas. A declarao feita depois da definio. .e a definio for global, a declarao acontece em cada funo. 75 m6todo -- A declarao feita junta com a definio.

+isua0i8ando um arra2 de estruturas e acessando um e0emento do arra2 Acessando um e0emento do arra2 9recisamos ter muito cuidado quando formos acessar um arraH de estruturas porque primeiro temos que escolher a vari!vel do arraH como fa (amos com os arraHs

unidimensionais. 3epois, acrescentamos separado por um ponto, os membros da estrutura

Aula 4: Ordenao e Pesquisa


Ordenao "s Ptodos de "rdenao "rdenar significa dispor elementos de um conjunto seguindo um determinado critrio. *sse critrio baseado em um atributo do elemento do conjunto &Nome, Patr(cula, sal!rio, etc..). .abemos que um conjunto quando se encontra ordenado, facilita a recuperao dos seus elementos. Ordenao interna . ordenao e.terna 8uando o mtodo de ordenao s# usa a mem#ria principal para reali ar o processo de ordenao, esse mtodo classificado como ordenao Xnterna, mas de usa uma mem#ria au7iliar porque o arquivo muito grande, classificado como "rdenao *7terna. "s mtodos de ordenao interna so classificados em dois tipos4

e0ection ort )Ordenao por e0eo) .eu principio sempre buscar o menor e ir posicionando'o no in(cio. Xdeal para arquivos pequenos. Puito simples. No melhora sua performance se o arquivo j! estiver ordenado. ?em menos movimentos do que o Xnsertion .ort. Insertion ort )Ordenao por insero) " 9rinc(pio b!sico considera o vetor como dois subvetores, um ordenando e outro desordenando, tentando locali ar a posio correta no conjunto. .# ordena quando necess!rio. 8uando um elemento inserido, todos os elementos maiores do que ele, so deslocados para a direita. % considerado o melhor dos trs mtodos estudados. 9u110e ort )Ordenao por 9o0ha) % o mais conhecido mtodo.

% muito simples. Puito lento. % considerado o pior dos trs estudados.

Você também pode gostar