PROCEDIMENTOS COM RECURSIVIDADE

Slides:



Advertisements
Apresentações semelhantes
Aquiles Burlamaqui AULA 09
Advertisements

Recursividade Inhaúma Neves Ferraz
Parte 1: Organização de Computadores
1.3.2 – Linguagem Assembly Um programa em linguagem de máquina sofre de total falta de clareza O programa é uma sequência de linhas numeradas Cada linha.
Exercicio 1 Dados três valores X, Y e Z, Faça um programa em C para verificar se eles podem ser os comprimentos dos lados de um triângulo e, se forem,verificar.
Aula 5 – Sumário Revisão da aula anterior Endereçamento indirecto
Assembly MAC-1 Implementação de ciclos Ciclo ‘while’ // Em Java : ...
Programação MAC-1 Exemplo: copiar vector
Aula 4 – Sumário Linguagem assembly do MAC-1 A pilha
Recursividade Prof. Alex F. V. Machado
ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM
ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM
ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM
ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM
ESTRUTURA DE UM PROGRAMA
ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM
Recursividade Inhaúma Neves Ferraz
David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP
Ferramentas Programação
THOBER CORADI DETOFENO, MSC. Aula 07
Montador para Intel TASM - Turbo Assembler
LINGUAGEM C X LINGUAGEM ASSEMBLY
Assembly x86.
Linguagem C Funções.
Vetores, Matrizes e Funções
Programação em Assembly Procedimentos e funções
Programação em assembly
PROGRAMAÇÃO I UNIDADE 1.
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.
A ULA P RÁTICA - A SSEMBLY Ciro Luiz Araujo Ceissler.
Aula Prática - Assembly
Introdução à Programação
Linguagem de Montagem.
Linguagem de Montagem Vetores.
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.
Recursividade Programação II.
UNIDADE 6 - complemento Funções recursivas
Programação II Estruturas de Dados Aula 02 - continuação
Linguagem de Montagem PROVA 4 – 3/12.
Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Prática de Programação Assembly 8086
Recursão.
Interface C / Assembly Modo Real
2 -1 Organização Básica de Computadores e Linguagem de Montagem Ricardo Pannain ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM - Laboratório.
Exercício.
Agenda - Aula 2 Introdução (Computador Digital) Processadores
Orientação a Objetos e Java Graduação em Ciência da Computação
Algoritmos e Estruturas de Dados I – Recursão
Capítulo III Modularização Procedimentos e Funções Universidade Federal de São Carlos Departamento de Computação Aluna: Luanna Lopes Lobato
Algoritmos e Estruturas de Dados I – Recursão
Recursão Uma função é dita recursiva quando dentro do seu código existe uma chamada para si mesma Exemplo Cálculo do fatorial de um número:
Algoritmos e Estruturas de Dados RECURSIVIDADE. O que é recursividade? Recursividade significa algo ser definido em termos de sí próprio. Em termos de.
Introdução ao MATLAB 5.3 para Hidrólogos
A Linguagem de Máquina – Funções e recursividade Prof. André Luis M. Silva orgearq wordpress.com.
8088 Assembly Software Básico Mitsuo Takaki.
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2014 Capítulo IX Subprogramação e Recursividade.
Arquitetura de Computadores 2009 Infra-estrutura Hardware
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.
Recursividade Profs. De Prog2 e Lab2.
Hugo Calazans André Ricardo
1 Aula 6 – Sumário  Revisão da aula anterior  Endereçamento indirecto  Recursividade  Conceito  Exemplos.
Interface Hardware Software
Algoritmo e Estrutura de Dados I
ASSEMBLY – aula 2 Hugo Calazans
USP – ICMC – SSC SSC0300 2º Semestre 2015 Disciplina de Linguagem de Programação e Aplicações [ Eng. Elétrica / Eletrônica ] 1 Prof. Dr. Daniel Rodrigo.
USP – ICMC – SSC SSC0300 2º Semestre 2015 Disciplina de Linguagem de Programação e Aplicações [ Eng. Elétrica / Eletrônica ] 1 Prof. Dr. Daniel Rodrigo.
DESENVOLVIMENTO Prof: Marcelo West Disciplina: Lógica de Programação.
EA869 Subrotinas Faculdade de Engenharia Elétrica e de Computação (FEEC) Universidade Estadual de Campinas (UNICAMP) Prof. Levy Boccato 1.
Programação em Assembly
Fundamentos de Programação1
Transcrição da apresentação:

PROCEDIMENTOS COM RECURSIVIDADE ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM - Laboratório 8 RECURSIVIDADE UM PROCESSO É DITO RECURSIVO SE É DEFINIDO EM TERMOS DELE MESMO, EM OUTRAS PALAVRAS, A SUA DESCRIÇÃO CHAMA A SI MESMO. PROCEDIMENTOS COM RECURSIVIDADE UM EXEMPLO TÍPICO DE UMA PROCEDURE RECURSIVA É O CÁLCULO DO FATORIAL DE UM NÚMERO: LEMBRANDO QUE: FATORIAL (1) = 1 FATORIAL (N) = N x ( N-1) x (N-2) x ... 2 x 1 se N > 1 O procedimento pode ser escrito em forma de uma subrotina: PROCEDURE FATORIAL (INPUT: N, OUTPUT:RESULT) IF N = 1 THEN RESULT = 1 ELSE CALL FATORIAL(INPUT: N –1, OUTPUT: RESULT) END IF RETURN

PARA N = 4 TERIAMOS A SEGUINTE SEQÜÊNCIA DE EVENTOS ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM - Laboratório 8 RECURSIVIDADE PARA N = 4 TERIAMOS A SEGUINTE SEQÜÊNCIA DE EVENTOS Programa para calculo do fatorial .MODEL SMALL .STACK 100H .CODE MAIN PROC MOV AX,3 PUSH AX CALL FACTORIAL MOV AH,4CH INT 21H MAIN ENDP

ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM - Laboratório 8 Programa para calculo do fatorial FACTORIAL PROC NEAR PUSH BP MOV BP,SP CMP WORD PTR[BP+4], 1 JG END_IF MOV AX,1 JMP RETURN END_IF: MOV CX, [BP+4] DEC CX PUSH CX CALL FACTORIAL MUL WORD PTR[BP+4] RETURN: POP BP RET 2 FACTORIAL ENDP END MAIN

ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM - Laboratório 8 O Programa de teste coloca 3 na pilha e chama factorial fazendo o seguinte aspecto SP  | (original) |  BP (primeira chamada) | return addr | | 3 (valor de N) | |___________________________| SP  | BP (primeira chamada) |  BP (segunda chamada) | return addr (linha 28) | | 2 (valor de N) | | BP (original) | | 3 | SP  | BP (segunda chamada)|  BP (segunda chamada) | 1 (valor de N) | | return addr (linha 8) |

ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM - Laboratório 8 OUTRO EXEMPLO DE UMA PROCEDURE RECURSIVA É O CÁLCULO DO MAIOR NÚMERO DE UMA ARRAY DE N NÚMEROS INTEIROS: PROCEDURE FIND_MAX (INPUT: N, OUTPUT:MAX) IF N = 1 THEN MAX = A[1] ELSE CALL FIND_MAX(N –1, MAX) IF A[N] > MAX MAX = A[N] MAX = MAX END IF RETURN

ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM - Laboratório 8 Exercício 1. Escreva um programa assembly recursivo que calcule o fatorial de um número N. O número N deve ser uma entrada do programa. Exercício 2. Escreva um programa assembly recursivo que ache o maior dos elementos de um array. Exercício 3: Escreva um programa assembly recursivo para calcular a soma dos elementos de um array. Exercício 4: Escreva um programa assembly recursivo que calcula a série de Fibonacci (1,1,2,3,5,8,13,21,34,55,... ), para um determinado valor N, que deve ser a entrada do programa. F(0) = F(1) = 1 F(n) = F(n-1) + F(n-2) se N > 1 OBS. Usar procedimentos, identação do código, comentários e usar o TD para verificar os erros de lógica que podem estar acontecendo. Entregar junto com os códigos, um esquema de como a recursão está sendo tratada (ver exemplo no slide 6-4) Entregar na próxima aula (segunda)

ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM - Laboratório 8 Exercícios Edite o programa anterior – utiliza o EDIT sob o DOS > EDIT nome do programa (extensão .asm) Gere o código objeto – utilize o montador TASM > TASM nome do programa (extensão .asm) 3. Gere o executável – utilize o ligador TLINK > TLINK nome do programa (extensão .obj) 4. Execute o programa > nome do programa (extensão .exe) 5. Gere o código objeto com informações para o debugger > TASM nome do programa (extensão .asm) /zi 6. Gere o código executável com informações para o debugger > TLINK nome do programa (extensão .obj) /v 7. Utilize o debugger e tire as informações sobre os registradores > TD nome do programa (extensão .exe)