Buscar

Fundamentos Programação

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 12 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 12 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 12 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

FUNDAMENTOS DE PROGRAMAÇÃO
FUNÇÕES E PROCEDIMENTOS
MODULARIZAÇÃO
	É muito difícil manter um código quando ele tende a ser grande (com muitas linhas). É preciso organizar o programa em partes bem definidas (módulos)
	Com o avanço do estudo sobre algoritmos os problemas a serem solucionados aumentam em complexidades. Trata-se de um método utilizado para facilitar a construção de grandes programas, através de sua divisão em pequenas etapas (dividir para conquistar), que são os módulos ou subprogramas.
	Podemos desta forma construir um algoritmo composto por subalgoritmos denominados módulos. Modularizar um algoritmo significa que se está reduzindo o problema em um conjunto de tarefas. Sendo que, cada uma delas corresponde a um módulo.
DEFINIÇÃO DE MODULARIZAÇÃO
> Um módulo é uma unidade do software;
> É um grupo de comandos com uma funcionalidade ou um objetivo bem definido;
> Esse componente deve ser o mais independente possível das outras partes do algoritmo;
> Ele realiza uma tarefa específica dentro duma solução do problema.
POR QUE MODULARIZAR?
	Decompor um problema para:
> facilitar a implementação, isolando as funcionalidades, e especificando o foco delas;
> facilitar os testes das partes (cada módulo independentemente);
> facilitar a manutenção: releituras podem ser separadas aumentar o nível de abstração;
> parar de copiar/ colar funcionalidades já presentes estender a linguagem com novas funções.
MODULARIZAÇÃO ESTRUTURA DE UM PROGRAMA
	Geralmente, um algoritmo vai ter um módulo principal e ele vai chamar outros módulos principal e ele vai chamar outros módulos para compor uma solução algorítmica.
COMPONENTES – Módulos e parâmetros duma interface
Um módulo tem:
> uma interface: declaração das funcionalidades de ofertas, descrição dos dados de entradas e de saída. É tudo que vocês precisam para utilizar o módulo.
> um corpo: implementação das funcionalidades, comandos que compõe o trecho de algoritmo do módulo.
> Um parâmetro: é um tipo de variável utilizada pelo módulo para receber/ comunicar valores de dados das outras partes do algoritmo. Ele pode ser:
		* de entrada, para passar valores para um módulo;
		* de saída, para receber valores do módulo;
		* de entrada e saída, para permitir a passagem de valores tanto para o módulo quanto dele.
	As categorias dos parâmetros serão especificados na criação da interface.
	A grande maioria das linguagens de programação que são utilizadas, têm esta facilidade, seja com o nome de sub-rotinas, subprogramas, procedimentos, funções, módulos, blocos, etc… Sempre é possível subdividir-se um programa de modo a facilitar o entendimento, permitir a reutilização, evitando-se a repetição de blocos dos programas.
	Nosso pseudocódigo definiremos dois tipos de módulos:
		> procedimentos;
		> funções.
	A definição de um procedimento ou de uma função é feita através:
		> de sua declaração, a qual é constituída de um cabeçalho;
		> de declarações, se houver, e;
		> de um corpo (algoritmo).
	
	A comunicação entre programa principal, procedimento e funções ocorre através de chamadas. Os dados são transferidos através de parâmetros e/ou pela utilização e variáveis globais.
ESCOPO DE VARIÁVEIS
	> Global: variável que só pode ser utilizada em um módulo interno ao módulo onde foi declarada.
	> Local: variável que só pode ser utilizada no módulo interno onde foi declarada, e que não possui qualquer significado fora desse módulo.
DESCRIÇÃO
PROCEDIMENTO: módulo que não produz um valor de saída.
FUNÇÃO: módulo que produz um (único valor de saída), pode ser visto como uma função matemática que vai produzir um valor a partir dos argumentos.
TIPOS DE PARÂMETROS: os parâmetros declarados são chamados de parâmetros formais.
PROCEDIMENTOS
	Um procedimento é um módulo que possui ou não um conjunto de entradas, efetua a execução de um conjunto de instruções e não gera um valor como saída, ou seja, não apresenta retorno.
Exemplo
CORPO
> Declaração de variáveis, começada por var.
> Sequência de comandos, começando por inicio e terminando com fimprocedimento.
Exemplo
FUNÇÕES
	Uma função, embora seja bastante semelhante a um procedimento, tem a característica especial de retornar ao programa que a chamou um único valor.
Interface de uma função
CORPO DA FUNÇÃO
> Declaração de variáveis, começando com var.
> Sequência de comandos, começando por inicio e terminando com fimfuncao.
AS funções podem ter multiplos pontos de retorno.
Outro exemplo de função
PARÂMETRO
Podem ser formais ou reais.
AGRUPAMENTO DE PARÂMETROS
Parâmetros formais do mesmo tipo podem ser agrupados a fim de:
	> não repetir declarações de tipos;
	> facilitar a leitura.
Exemplo:
PARÂMETROS DE SAÍDA
	> Um parâmetro formal pode ser marcado como parâmetro de saída através da palavra-chave var.
	> O valor dele pode ser modificado pela rotina.
Exemplo:
PASSAGEM DE PARÂMETROS
	
	Parâmetro de entrada são passados por valor:
		> O valor do parâmetro real é atribuído ao parâmetro formal no lugar da chamada.
		> Esse valor é copiado.
		> Uma alteração do parâmetro formal não impactará o parâmetro real.
	
	Parâmetro de saída são passados por referência:
		> O parâmetro formal torna-se igual ao parâmetro real;
		> Eles compartilham a mesma zona de armazenamento;
		> todas as alterações de valor do formal no procedimento serão refletidas no parâmetro real.
RESUMINDO
Modularização é um método utilizado para facilitar a construção de grandes programas, através de sua divisão em pequenas etapas (dividir para conquistar), que são os módulos ou subprogramas;
	> Procedimento
		- Módulo que não produz um valor de saída.
	> Função
		- Módulo que produz um (único valor de saída), pode ser visto como uma função matemática que vai produzir um valor a partir dos algoritmos.
> A definição de um procedimento ou de uma função é feita através:
		- de sua declaração, a qual é constituída de um cabeçalho;
		- de declarações, se houver, e;
- de um corpo (algoritmo).
LISTAS
MOTIVAÇÃO ESTRUTURA DE DADOS
	O estudo das estruturas de dados é necessário para que possamos identificar e desenvolver modelos matemáticos que resolvam problemas abstratos, bem como a resolução de problemas praticos que envolvam estruturas de dados.
	Uma estrutura de dados armazena dados na memória do computador a fim de permitir o acesso eficiente dos mesmos. A maioria das estruturas de dados consideram a memória primária (a chamada RAM) como pilhas, filas, árvores binárias de busca, árvores AVL e árvores rubro-negras.
RESUMINDO
	Lista é uma estrutura de dados na qual cada elemento é precedido por um elemento e sucedido por outro (exceto o primeiro que não tem predecessor e o último que não tem sucessor).
* Operação com listas
-Inserção
-Remoção
* Implementação de listas lineares:
- Com alocação sequencial e estática;
Vantagens: economia de memória (os ponteiros são implícitos nesta estrutura)
Desvantagens:
> custo para inserir ou retirar itens da lista, que pode causar um deslocamento de todos os itens, no pior caso.
> aplicação em que não existe previsão sobre o crescimento da lista, a utilização de arranjos em linguagens como o Pascal e o C pode ser problemática, neste caso, o tamanho máximo da lista tm de ser definido em tempo de compilação.
- Com alocação não sequencial e dinâmica
Vantagens:
> extremamente eficiente no custo de memória e de processamento;
> nunca acarreta em movimentar todos os elementos;
> bom para aplicações em que não existe previsão sobre o crescimento da lista (o tamanho máximo da lista não precisa ser definido a priori)
Desvantagens:
> envolve conceitos mais avançados de programação: Ponteiro ou Referências;
> utilização de memória extra para armazenar os ponteiros.
PILHAS
Estrutura de dados correspondente
Pilha - sequência de elementos dispostos em ordem, mas com uma regra para entrada e saída dos elementos (o último que chega é o primeiro que sai da estrutura)
RESUMINDO
	É uma lista linear em que todas as inserções e remoçõessão feitas numa mesma extremidade da lista linear. Esta extremidade se denominada topo ( em inglês “top”) ou lado aberto da pilha.
* LIFO (ou FILO):
- Last in, First Out;
- Ultimo a entrar, primeiro a sair.
* As operações definidas para uma pilha incluem:
> Verificar se a pilha está vazia;
> Inserir um elemento na pilha (empilhar ou “push”), no lado do topo;
> Remover um elemento da pilha (desempilhar ou “pop”), do lado do topo.
FILAS
	Sequência de elementos dispostos em ordem com uma regra para a entrada e saída dos elementos (o primeiro que chega também é o primeiro que sai da estrutura). São casos especiais de listas.
	Uma fila é uma estrutura do tipo FIFO (“ First in first out”). Elementos novos são inseridos no lado In (fim da fila) e a retirada ocorre no lado Out (frente ou começo da fila).
	Não podemos remover os elementos que não estejam no início da fila.
FILAS – EXEMPLOS COM OPERAÇÕES
Inicialização: quando sua frente e seu fim for igual a zero, ou seja, não existe nenhuma posição da estrutura ocupada por algum elemento.
Frente: é a posição que indica o próximo elemento a ser acessado
Fim: é a posição que indica o próximo elemento a ser inserido.
Tamanho: é o número máximo de posições permitidas na fila.
EXEMPLOS de uso de filas na computação:
> Filas de impressão
> Filas de processos
> Filas de tarefas
RESUMINDO
	Uma fila é uma estrutura de dados cujas inserções são realizadas em um extremo da lista (que chamaremos fim) e cujas retiradas são realizadas no outro extremo da lisa ( que chamaremos frente).
Inicialização
Inserção
Remoção
ÁRVORES (estrutura de dados não lineares)
Listas ligadas
> São mais flexíveis do que matrizes;
> Mas, são estruturas lineares sendo difícil utilizá-las para organizar representações hierárquica de objetos.
Pilhas e Filas
> Refletem alguma hierarquia;
> Mas, são limitadas a somente uma dimensão.
Árvores
> Estrutura criada para superar limitações de listas ligadas, pilhas e filas.
> Consiste de nós e de arcos.
> São representadas com a raiz no topo e as folhas na base.
> São estruturas adequadas para representação de hierarquias.
REPRESENTAÇÃO
DEFINIÇÃO DE ÁRVORES
Raiz (pai)
Não possui ancestrais. Só pode ter filhos.
Folhas (terminais)
Não tem filhos (ou melhor, seus filhos são estruturas vazias)
ELEMENTOS DE UMA ÁRVORE
> Nó (vértice): elemento que contém a informação;
> Arco (aresta): liga dois nós;
> Pai: nó superior de um arco;
> Filho: nó inferior de um arco;
> Raiz: nó topo – não tem um nó pai
> Folhas: nós das extremidades inferiores – não têm nós filhos;
> Grau: representa o número de subárvores de um nó;
> Grau de uma árvore: é definido como sendo igual ao máximo dos graus de todos os seus nós.
> Cada nó tem que ser atingível a partir da raiz através de uma sequência única de arcos, chamados de caminho.
> Comprimento do caminho: o número de arcos do caminho. Exemplo: o caminho de A até H tem comprimento 2
> Nível de um nó: é a sua distância da raiz da árvore. Usando o exemplo de cima: A raiz tem nível 0, os nós B,C, D e E tem nível 1.
> Altura (ou profundidade) é o nível do nó folha que tem o mais longo caminho até a raiz, somando 1.
- A altura da árvore abaixo é igual a 3.
- A árvore vazia é uma árvore de altura -1, por definição.
- Uma árvore com um único nó tem altura 1.
ÁRVORES BINÁRIAS
Uma árvore binária é uma estrutura que é o vazia ou possui 3 componentes:
- Uma raiz
- Uma subárvore esquerda
- Uma subárvore direita
As subárvores devem ser árvores binárias.
REPRESENTAÇÃO DE ÁRVORES BINÁRIAS
	O equivalente de uma lista de adjacência é uma coleção de registros com três campos contendo o nó em questão, um ponteiro para o registro do nó filho esquerdo e um ponteiro para o registro do nó filho direito.
PERCURSOS EM ÁRVORES BINÁRIAS
	Os nós de uma árvore binária podem ser visitados de três formas (varredura da árvore):
> Pré- ordem (pre-order): raiz, subárvore esquerda (E), subárvore direita (D);
	- visitar a raiz antes das subárvores.
> Em - ordem (in-order): subárvore esquerda (E), raiz, subárvore direita (D);
> Pós - ordem (post-order): subárvore esquerda (E), subárvore direita (D), raiz.
	- visitar a raiz após visitar as subárvores.
Exemplo em pré-ordem
Exemplo em ordem
Exemplo Pós-ordem
RESUMINDO
> Estrutura criada para superar limitações de listas ligadas, pilhas e filas;
> Consiste de nós e de arcos;
> São representadas com a raiz no topo e as folhas na base;
> São estruturas adequadas para representação de hierarquias;
> Elementos de uma árvore: vértice, aresta, raiz, folhas, grau, caminho, comprimento e altura.
> Uma árvore binária é uma estrutura que é ou vazia ou possui 3 componentes:
- Uma raiz;
- Uma subárvore esquerda;
- Uma subárvore direita.
Percurso em árvores:
> Pré-ordem (pre-order): o percurso em pré-ordem segue os nós até chegar os mais “profundos”, em “ramos” de subárvores da esquerda para a direita.
> Em-ordem (in-order): a ordem simétrica visita a raiz entre as ações de percorrer as duas subárvores.
> Pós-ordem (post-order): percorremos a subárvore da esquerda mais longe, depois a subárvore da direita e por fim a raiz.

Continue navegando