PROGRAMAÇÃO ESTRUTURADA (MODULARIZAÇÃO/SUBPROGRAMAÇÃO)

Slides:



Advertisements
Apresentações semelhantes
Funções em C Prof. Fabiano Utiyama.
Advertisements

Python: Funções Claudio Esperança.
Programação em Java Prof. Maurício Braga
Linguagem PASCAL Subprogramas
Estruturas de Dados Marcio Gonçalves.
Prof.: Sergio Pacheco Linguagem PHP Prof.: Sergio Pacheco 1.
Capítulo II – Algoritmos e Programas
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.
Métodos, Parâmetros, Argumentos e Contratos
Construção de Algoritmos AULA 07
TECNOLOGIA EM REDES DE COMPUTADORES Algoritmos e programação de computadores Aula /08/2011 Professor Leomir J. Borba-
Algoritmos e Estrutura de Dados I
Conteúdo: - Modularização.
Recursividade Conceitos e Aplicações.
LINGUAGEM C.
PROGRAMAÇÃO MODULAR (com uso de subprogramas)
INTRODUÇÃO À PROGRAMAÇÃO
Funções e Subrotinas.
Algoritmos Escher.
Linguagem PHP Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Curso de Programação em C++
Aula 6 Subprogramas Universidade do Vale do Rio dos Sinos
Passos na elaboração de um Programa
Classes e objetos P. O. O. Prof. Grace.
Algoritmos e Programação
INTRODUÇÃ A COMPUTAÇÃO ENG. CIVIL
Introdução a Computação e Cálculo Numérico
Subprogramas São blocos de execução internas a um programa.
Aula prática 8 Ponteiros Monitoria de Introdução à Programação
Aula prática 6 Vetores e Matrizes
Introdução à Programação
Prof. Natalia Castro Fernandes Mestrado em Telecomunicações – UFF 2º semestre/2012.
Prof. Natalia Castro Fernandes Mestrado em Telecomunicações – UFF 2º semestre/2012.
Comunicação Inclusiva Acessibilidade e Programação Web
UNIVERSIDADE FEDERAL DE UBERLÂNDIA ENGENHARIA CIVIL INTRODUÇÃO À ALGORITMOS Professora: Fabíola Gonçalves.
UNIVERSIDADE FEDERAL DE UBERLÂNDIA ENGENHARIA CIVIL INTRODUÇÃO À ALGORITMOS Professora: Fabíola Gonçalves.
Funções Universidade Federal de Ouro Preto - UFOP
Construção de Algoritmos Professor: Aquiles Burlamaqui Construção de Algoritmos AULA 07 Aquiles Burlamaqui UERN
Introdução a Programação
PROGRAMAÇÃO PROCEDIMENTAL
Paradigmas de Linguagens de Programação Linguagem Imperativa 2
Conteúdo Processos e threads Partes do processo
Ambiente de Execução - Rotinas
Técnicas de Desenvolvimento de Programas
F UNÇÕES : PASSAGEM DE PARÂMETROS Aluno:Kaynã Vasconcelos Santos Matéria: Estrutura de dados e algoritmos I Turma: Professor: Danilo Silva dos Santos.
Capítulo III Modularização Procedimentos e Funções Universidade Federal de São Carlos Departamento de Computação Aluna: Luanna Lopes Lobato
Prof: Leandro Maranim Dei Santi Prof. Eduardo Rossit Paiossin
Estruturas de Dados Aula 2: Estruturas Estáticas 07/04/2014.
Capítulo VIII Ambientes de Execução
Algoritmos - Profa. Alciléia1 Profa. Maria Alciléia Alves Rocha Funções em C 2011.
Modularização Dividir um problema em subproblemas Módulos menores facilita a depuração Dividir o desenvolvimento entre vários programadores “Reutilização”
Programação de PIC em C Exposição das funções básicas para
Algoritmos e Estruturas de Dados I – Modularização
Aula01 – Técnicas de Programação II
Fundamentos de linguagens de programação
CES-10 INTRODUÇÃO À COMPUTAÇÃO
Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Algoritmos e Programação MC102 Prof. Paulo Miranda IC-UNICAMP Aula 15 Ponteiros.
Programação Computacional Aula 9: Meu primeiro programa em C
Conceituando o uso de funções em linguagens de programação
Linguagem de Programação I Parte IV
Linguagens de Programação Pedro Lopes MÓDULO 4- Subprogramas (Procedimentos e Funções) 2010/2011.
PCI- Funções e Procedimentos Profa. Mercedes Gonzales Márquez.
Algoritmos e Programação MC102 Prof. Paulo Miranda IC-UNICAMP Aula 15 Funções.
CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo VIII Subprogramação.
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.
Módulo I Capítulo 7: Funções e Procedimentos William Ivanski Curso de Programação C#
Adriano A. Ribeiro. Variáveis Compostas Homogêneas Variáveis indexadas. A declaração de uma variável indexada corresponde, na verdade, à declaração de.
EA869 Subrotinas Faculdade de Engenharia Elétrica e de Computação (FEEC) Universidade Estadual de Campinas (UNICAMP) Prof. Levy Boccato 1.
Lógica de Programação – Forbellone / Eberspacher Lógica de Programação Capítulo 6 Modularizando Algoritmos.
Transcrição da apresentação:

PROGRAMAÇÃO ESTRUTURADA (MODULARIZAÇÃO/SUBPROGRAMAÇÃO) UNIVERSIDADE FEDERAL DE UBERLÂNDIA ENGENHARIA CIVIL PROGRAMAÇÃO ESTRUTURADA (MODULARIZAÇÃO/SUBPROGRAMAÇÃO) Enfatizar melhor a passagem por valor e referencia quando estiver trabalhando com C. E apresentar funções recursivas. Aula 09 e lista 06 do Backes. Exceto exercicios 2, 3, 5 e 8. Fabíola Gonçalves

Roteiro Introdução; Escopo das variáveis; Passagem de parâmetro; Argumentos; Função.

MODULARIZAÇÃO INTRODUÇÃO Característica fundamental da programação estruturada: Modular a resolução do problema através da sua divisão em subproblemas menores e mais simples; Neste processo, cada subproblema pode ser analisado de forma individual e independente dos demais. Objetivo: Facilitar o trabalho com problemas complexos; Permitir a reutilização de módulos. Com a modularização de um programa, as partes que o compõem podem ser desenvolvidas por diferentes equipes.

MODULARIZAÇÃO INTRODUÇÃO Refinamentos Sucessivos (top-down): Divisão do problema inicial em subproblemas, e estes em partes ainda menores, sucessivamente, até que cada parte seja descrita através de um algoritmo claro e bem-definido. Um algoritmo que resolve um determinado subproblema é denominado subalgoritmo.

MODULARIZAÇÃO SUBALGORITMOS (MÓDULOS) A subprogramação é uma ferramenta que contribui com a tarefa de programar: Favorecendo a estruturação do programa; Facilitando a correção do programa; Facilitando a modificação do programa; Melhorando a legibilidade do programa; Divisão do problema a ser resolvido em partes (modularização).

MODULARIZAÇÃO SUBALGORITMOS (MÓDULOS) Por convenção, um subalgoritmo deve ser declarado acima dos módulos que o chamam; Todo subalgoritmo tem por objetivo a resolução de um determinado subproblema; Portanto, mantém as mesmas características de um algoritmo comum: Pode ter dados de entrada; Dados de saída; e Conter qualquer tipo de comando aceito por um algoritmo.

Exemplos:Algol: bloco; SUBPROGRAMAÇÃO As linguagens de programação oferecem algum tipo de suporte à subprogramação. Exemplos:Algol: bloco; FORTRAN: subrotina; Modula: co-rotinas; ADA: tarefas; C: funções; Visualg: procedimentos e funções. Pascal: procedimentos e funções.

SUBPROGRAMAÇÃO Procedimentos Procedimento é uma forma de criar um sub-programa; Quando um determinado conjunto de instruções tiver que ser repetido dentro da solução de um problema, é conveniente colocá-lo dentro de um procedimento; Para se criar um procedimento é necessário: Um identificador (o nome do procedimento); Uma lista de parâmetros (que possibilitam a comunicação entre o programa principal e o procedimento); As ações a serem executadas (que formam o corpo do procedimento).

SUBPROGRAMAÇÃO Funções Função também é uma forma de criar um sub- programa; A função deve obrigatoriamente retornar um valor processado através do seu nome identificador; Uma função deve ser ativada em um contexto de expressão.

Subalgoritmos (Módulos) Escopo das Variáveis Por serem tratados de forma independente dos demais módulos, cada subalgoritmo só pode manipular variáveis/constantes: Globais: declaradas no início do algoritmo principal ; Fora de todas as funções; Elas são conhecidas e podem ser alteradas por todas as funções do programa. Locais: declaradas no próprio subalgoritmo; Só têm validade dentro do bloco no qual são declaradas.

SUBALGORITMOS (MÓDULOS) PASSAGEM DE PARÂMETRO A passagem de parâmetros é o meio de comunicação entre as unidades de um programa, pode acontecer com um dos seguintes propósitos: apenas fornecer um valor para que a subrotina realize um processamento; apenas retornar um valor processado pela subrotina; fornecer um valor para processamento pela subrotina, e também ser responsável pelo retorno de um valor processado.

SUBALGORITMOS (MÓDULOS) PASSAGEM DE PARÂMETRO Existem duas formas de interagir com subalgoritmos: Explícita: quando a troca é feita através de argumentos. Existem 2 modos de passar argumentos/parâmetros para um subalgoritmo: Por valor: o argumento será uma variável independente, ou seja, ocupará um espaço na memória durante a execução do módulo. Qualquer alteração no argumento, não afeta a variável. Por referência: o argumento não ocupará espaço de memória, pois utilizará o espaço já alocado pela variável. Qualquer alteração realizada no subalgoritmo afetará a variável.

SUBALGORITMOS (MÓDULOS) PASSAGEM DE PARÂMETRO Existem duas formas de interagir com subalgoritmos: Implícita: quando a troca é feita pela utilização de variáveis globais. Esta forma funciona de modo similar à passagem de argumentos por referência, pois não necessita de nova alocação de memória e qualquer alteração realizada durante a execução do módulo afeta o conteúdo da variável para os demais módulos.

PASSAGEM DE PARÂMETROS Passagem por valor: Apenas o valor é transferido. Então, as alterações feitas nos parâmetros formais (da subrotina) não alteram os reais (unidade ativadora). Por referência: O endereço do parâmetro real é transferido. Então, as alterações nos parâmetros formais da subrotina na verdade estão sendo feitas sobre os parâmetros reais. Declaração

PASSAGEM DE PARÂMETROS POR VALOR Quando e porque passagem por valor: apenas fornecer um valor à subrotina para que ela realize um determinado processamento; utilizados somente para “valores de entrada”; protegem automaticamente o parâmetro real; deve ser explorado sempre que possível.

PASSAGEM DE PARÂMETROS POR REFERÊNCIA Quando e porque passagem por referência: Quando e porque passagem por :quando a unidade ativada (subrotina) necessitar retornar um valor a ser utilizado pela unidade ativadora; seu uso deve ser cuidadoso.

Subalgoritmos (Módulos) Argumentos Na escrita de um subalgoritmo, os dados necessários para a resolução do subproblema podem ser informados na declaração do módulo. Ex: real expoente( real BASE, int FATOR) resultado ← expoente(NRO, EXP);

SUBALGORITMOS (MÓDULOS) FUNÇÕES Sintaxe: tipo_retornado nome_funcao (tipo arg1, tipo arg2, ... , tipo argN) <declaração de variáveis/constantes locais> inicio <bloco de comandos> fim fim-funcao var ← nome_funcao(var1, var2, ... , varN);

subprograma Um subprograma pode ser ativado em qualquer parte do programa (em algumas linguagens somente depois de definido); Sua ativação se dá através do uso de seu identificador como uma instrução;

SUBALGORITMOS (MÓDULOS) FUNÇÕES Exemplo: int Square (int a) inicio return(a*a); fim int num; escreva("Entre com um numero: "); leia (num); num <- Square(num); escreva("O seu quadrado vale: ", num);

SUBPROGRAMAÇÃO Exemplo de aplicação: Fazer um algoritmo para calcular a combinação (análise combinatória) de N elementos tomados P a P. Sabe-se que isto é possível através da seguinte expressão:

SUBPROGRAMAÇÃO A solução deste problema pelos métodos vistos até agora (sem o uso da subprogramação) teria N e P como argumentos de entrada e C como argumento de saída; Seriam necessários os seguintes passos: Calcular o fatorial de N (armazenar numa variável, ex: FatN); Calcular o fatorial de P (armazenar numa segunda variável, ex: FatP); Calcular o fatorial de N-P (armazenar numa terceira variável, ex:FatNP); E finalmente calcular a expressão: FatN/(FatP*FatNP).

SUBPROGRAMAÇÃO Note que nesta solução teríamos que descrever várias vezes uma mesma sequência de ações que são utilizadas para o cálculo do fatorial de um número; Esta sequência tem um comportamento padrão. Suponha que tivéssemos à disposição um procedimento genérico, chamado FAT, para calcular o fatorial de um número qualquer: .....

SUBPROGRAMAÇÃO Uma subrotina é um subprograma com variáveis e comandos próprios e que, para ser executada, precisa ser chamada pelo programa principal. Existem dois tipos de subrotinas: Procedimento (procedure) Função (function) Diferença entre elas: A função retorna um valor O procedimento não retorna valor

Exercícios Crie um programa que leia três números. Para cada número, imprima o dobro. Use uma função que recebe como parâmetro um número inteiro e devolve o seu dobro. O valor calculado deve ser impresso na função principal. Faça um programa receba dois números e execute as seguintes funções: Verificar se o número digitado é positivo ou negativo. Sendo que o valor de retorno será 1 se positivo, 0 se negativo ou -1 se for igual a 0. Receber dois números inteiros positivos por parâmetro e retorne a soma dos N números inteiros existentes entre eles.

Exercícios Faça uma função que receba por parâmetro dois valores X e Z. Calcule e retorne o resultado de X^Z para o programa principal. Atenção não utilize nenhuma função pronta de exponenciação. Crie um programa que receba a nota de 10 alunos obtida ao longo do semestre (foram realizadas quatro avaliações). Elabore funções para: Calcular a média aritmética de todos os alunos; Indicar o aluno que deverá fazer recuperação, ou seja, aqueles com média inferior a 6. Dica: Opção 1 – ler as 10 notas dentro a função de média (sejam em variáveis ou vetor); Opção 2 – criar 10 variáveis no programa principal e passar como argumento; Opção 3 – ler um vetor de tamanho 10 e passar o vetor como parâmetro para a função.

REFERÊNCIAS Martins, L. G. A., Silva, A. J. Introdução à Algoritmos. Apostila da FACOM-UFU.