1 Aula 6 – Sumário  Revisão da aula anterior  Endereçamento indirecto  Recursividade  Conceito  Exemplos.

Slides:



Advertisements
Apresentações semelhantes
Estrutura de Dados Pilha by Aquiles Burlamaqui. Definição Uma pilha é uma das várias estruturas de dados que admitem remoção de elementos e inserção de.
Advertisements

Aquiles Burlamaqui AULA 09
Python: Recursão Claudio Esperança.
Recursividade Inhaúma Neves Ferraz
Recursividade Função recursiva é aquela que chama a si própria.
V Procedimentos – são estruturas que agrupam um conjunto de comandos, que são executados quando o procedimento é chamado. v Funções – são procedimentos.
Algoritmos de manipulação de estruturas elementares de dados
Programação II Estruturas de Dados
Aula 5 – Sumário Revisão da aula anterior Endereçamento indirecto
O Conjunto de Instruções
Assembly MAC-1 Implementação de ciclos Ciclo ‘while’ // Em Java : ...
1 O Conjunto de Instruções ISA – Instruction Set Architecture.
Programação MAC-1 Exemplo: copiar vector
Aula 4 – Sumário Linguagem assembly do MAC-1 A pilha
Algoritmos e Estrutura de Dados I
Algoritmos e Programação Estruturada Conceitos básicos
PROCEDIMENTOS COM RECURSIVIDADE
Recursividade Inhaúma Neves Ferraz
David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP
Listas lineares Listas Lineares Fila Dupla Pilha Fila Saída restrita
Prof.: Sergio Pacheco Estruturas de Dados I Prof.: Sergio Pacheco 1.
Construção de Compiladores
Estrutura de dados Busca
linguagem orientada para problemas nível 5 tradução nível 4 linguagem de montagem tradução nível 3 sistema operacional interpretação nível 2 máquina.
Lista Encadeada Circular Lista Duplamente Encadeada
Programação em Assembly Procedimentos e funções
APRESENTAÇÃO: DAVID ANDERSON CARDOSO DANTAS CURSO DE C AULA 04: Funções Maceió, Maio de 2010.
Sub-programas. Mecanismo de composição de programas Sub-programa está para peça de LEGO assim como um programa está para a construção.
Prof. Natalia Castro Fernandes Mestrado em Telecomunicações – UFF 2º semestre/2012.
1 Ponteiros Ponteiros são variáveis que guardam localizações em memória. A declaração de uma variável ponteiro x para um dado tipo type é type *x; Essa.
Linguagem de Montagem.
João Ferreira, Dez 2003STRINGS, 1/6 Definição de String String (sentido lato) -> um string é um conjunto de valores (não necessariamente interpretáveis.
AJProença, Sistemas de Computação, UMinho, 2013/141 Análise do código de gestão de uma função –invocação e regresso instrução de salto, mas com salvaguarda.
1 Tipos Abstratos de Dados Pilhas e Filas TPA – 2008 –1 Prof. Mateus Costa.
Estrutura de dados II Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
UNIDADE 6 - complemento Funções recursivas
Argumentos por valor Passagem de valor da variável indicada Não permite alteração de variável indicada Exemplo: int quadrado_de(int ); //protótipo int.
Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Mergesort Katia Guimarães.
Estruturas de Dados Aula 9: Listas (parte 1)
Ambiente de Execução - Rotinas
Algoritmos e Estruturas de Dados I – Recursão
Pilhas Profa. Nádia Félix.
Algoritmos e Estruturas de Dados I – Recursão
Universidade do Vale do Rio dos Sinos - São Leopoldo -
Algoritmos e Estruturas de Dados RECURSIVIDADE. O que é recursividade? Recursividade significa algo ser definido em termos de sí próprio. Em termos de.
A Linguagem de Máquina – Funções e recursividade Prof. André Luis M. Silva orgearq wordpress.com.
8088 Assembly Software Básico Mitsuo Takaki.
Recursividade Bruno Silva.
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2014 Capítulo IX Subprogramação e Recursividade.
8 - 1 Organização Básica de Computadores e Linguagem de Montagem Ricardo Pannain ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM A pilha e subrotinas.
Procedimentos Registro de Ativação e Variáveis Locais 11 1.
Estudo do MINIX: Parte 2 PCS-2042 –Sistemas Operacionais – 2ª etapa do projeto Erick Butler Poletto Felipe Giunte Yoshida Gabriel Iseppe Porto Geovandro.
Recursividade Profs. De Prog2 e Lab2.
2a Aula Pratica Dispositivos Programáveis Roteador 2E-2S e Modularização.
Aula 4 – Sumário Linguagem assembly do MAC-1: Funções e procedimentos
Analise de Algoritmos e Notação Assintótica
Processador MAC-1 Arquitectura.
Existem 8 registos principais de 32 bits no processador (existem mais como %EIP): %EAX %EBX %ECX %EDX %ESI %EDI %EBP %ESP Os registos são armazenados em.
Algoritmo e Estrutura de Dados I
Professor Luiz José Hoffmann Filho
Linguaguem de Programação II
Estrutura de dados Pilhas e filas
PCI- Funções e Procedimentos Profa. Mercedes Gonzales Márquez.
Algoritmos e Programação MC102 Prof. Paulo Miranda IC-UNICAMP Aula 15 Funções.
Recursividade e análise Cristiano Arbex Valle Vinicius Fernandes dos Santos
Programação em Assembly
Introdução à Computação para Engenharia MAC2166
Programação em assembly
Transcrição da apresentação:

1 Aula 6 – Sumário  Revisão da aula anterior  Endereçamento indirecto  Recursividade  Conceito  Exemplos

2 Processador MAC-1 Revisão – endereçamento indirecto

3 Exemplo: copiar vector Implementar um procedimento que copie n elementos de um vector A para um vector B O procedimento deverá receber como argumentos:  O número de elementos a copiar (n)  O endereço do primeiro elemento do vector A (referência)  O endereço do primeiro elemento do vector B (referência)

4 Revisão – endereçamento indirecto copia:loco 0 push # int i=0 ciclo:lodl 0 subl 4 jzer fim # i-n == 0? lodl 3 addl 0 pshi # A[i] no topo da pilha lodl 3 addl 1 popi # B[i] = A[i] loco 1 addl 0 stol 0 # i=i+1 jump ciclo fim:insp 1 retn jump main A: B: n:5 main:lodd n push loco A push loco B push call copia insp 3 halt A (ref.) B (ref.) End. Ret. i SP Organização da pilha em ‘copia’ n

5 Processador MAC-1 Recursividade

6  Existem situações em que uma rotina se invoca a si própria  Diz-se que a rotina é recursiva ou recorrente  Soluções recursivas podem ser úteis, simplificando a resolução de alguns problemas, …  … mas é preciso ter cuidado, pois uma solução recursiva causa um maior crescimento da pilha  cada chamada à rotina faz com que sejam colocados dados na pilha (argumentos, endereço de retorno, variáveis locais);  se a rotina se chamar demasiadas vezes a ela própria, a pilha pode ficar sem espaço para crescer (“stack overflow”)

7 Programação MAC-1 Exemplo: uma sucessão Implementar uma função que calcule o termo de ordem n da seguinte sucessão, definida de forma recursiva: // Pseudo-código int U(int n) { if (n==1) return 1; return 2*U(n-1) + 1; }

8 Programação MAC-1 # int U(int n) U:lodl 1 subd C1 # AC = n-1 jzer ret1 # if n-1==0 return 1 push # call U # U(n-1) insp 1 # push # temp = U(n-1) addl 0 # AC = 2*temp insp 1 # descarta temp addd C1 # AC = 2*U(n-1)+1 retn ret1:loco 1 # AC = 1 retn jump main C1:1 main: loco 4 push call U # U(4) insp 1 halt End. Ret. SP Organização da pilha em ‘U’ n

9 Programação MAC-1 Exemplo: números de Fibonacci Fazer uma função que calcule o número de Fibonacci de ordem n. Este é dado por: // Pseudo-código int fibo(int n) { if (n==1 || n==0) return 1; return fibo(n-1) + fibo(n-2); }

10 Programação MAC-1 fibo:lodl 1 subd C1 # AC = n-1 jzer ret1 # if n-1==0 return 1 lodl 1 jzer ret1 lodl 1 # subd C2 # push # call fibo # fibo(n-2) insp 1 push # tmp = fibo(n-2) lodl 2 # subd C1 # push # call fibo # F(n-1) insp 1 addl 0 # AC=fibo(n-1)+tmp insp 1 # descarta tmp retn ret1:loco 1 # AC = 1 retn jump main C1:1 C2:2 main: loco 4 push call fibo # fibo(4) insp 1 halt n End. Ret. SP Organização da pilha em ‘fibo’ n End. Ret. SP tmp