Rotinas, Modos e Tipos de Passagem de Parâmetros
|
|
|
- Vergílio Cavalheiro Bacelar
- 8 Há anos
- Visualizações:
Transcrição
1 Linguagens de Programação Rotinas, Modos e Tipos de Passagem de Parâmetros Carlos Bazilio [email protected]
2 Chamada de Rotinas Rotina f Rotina g(w) g (k)
3 Passagem de Parâmetros Os parâmetros são um canal de comunicação entre uma rotina chamadora e uma chamada Na rotina chamadora, o parâmetro é tecnicamente chamado de argumento ou parâmetro real Na rotina chamada, o parâmetro é chamado de parâmetro formal Tipos comuns de passagem de parâmetros: Valor, Referência, Valor/Resultado, Nome
4 Analogia
5 Passagem de Parâmetros Valor Neste modo, na transferência de execução da rotina chamadora para a chamada é realizada uma cópia do valor do argumento para o parâmetro A rotina chamada não consegue modificar o valor do argumento passado Este modo fornece apenas valores de entrada para uma dada rotina chamada Exemplo: passagens de parâmetro em Java
6 Passagem de Parâmetros Valor Rotina f Rotina g(w) g (k)
7 Passagem de Parâmetros Referência Neste modo, na transferência de execução da rotina chamadora para a chamada o parâmetro passa a ser um sinônimo do argumento Com isso, qualquer modificação do parâmetro altera o argumento Exemplos: os operadores & (em C++) e var (em Pascal) precedendo a declaração de parâmetros numa função
8 Passagem de Parâmetros Referência Rotina f Rotina g(w) g (k)
9 Passagem de Parâmetros Referência Usualmente, este modo é preferido em relação ao modo por valor por causa da possível operação custosa de clonar um objeto Na passagem do valor, o valor do argumento é copiado para o parâmetro da função
10 Passagem de Parâmetros Resultado Modo dual à passagem por valor Ou seja, este modo permite o retorno de valores de saída atualizados por uma dada rotina chamada O valor inicial do argumento passado é desconsiderado
11 Passagem de Parâmetros Resultado Rotina f Rotina g(w) g (k)
12 Passagem de Parâmetros Valor/Resultado Combina os modos valor e resultado Difere da passagem por referência, pois as áreas de memórias para argumento e parâmetro são distintas entre as rotinas chamadora e chamada A execução entre este modo e o de referência poderia ser diferente, por exemplo, num programa multithreaded
13 Passagem de Parâmetros Nome Tipicamente utilizado quando queremos passar um argumento que será posteriormente avaliado Exemplo a seguir, em Algol, extraído do link abaixo: Imagine que queiramos computador a seguinte fórmula:
14 Passagem de Parâmetros Nome Em Algol, isto pode ser feito da seguinte forma: begin integer k; real procedure sum (i, lo, hi, term); value lo, hi; integer i, lo, hi; real term; comment term passado por nome, assim como i; begin real temp; temp := 0; for i := lo step 1 until hi do temp := temp + term; sum := temp end; comment observe a correspondência entre a notação matemática e a chamada à função sum; print (sum (k, 1, 100, 1/k)) end
15 Passagem de Parâmetros Nome Os argumentos i e 1/i são passados por nome, o que permite a expressão ser avaliada apenas dentro da função, quando é referenciada Para a função sum computar outras fórmulas, basta passar a equação correspondente i e 1/(1 i*i) k e k*k j e f(j)
16 Jensen's Device em outras Linguages %27s_Device
17 Funções Exemplo def fwhile (cond: => Boolean)(corpo: => Unit) : Unit = { if (cond) { corpo var i = 5 fwhile(cond)(corpo) fwhile (i > 0) { println("hello nro: " + i + "!!") } i = i - 1 } } A função acima defne o comando while Esta possui 2 listas de parâmetros O tipo Unit representa o tipo sequência de comandos em Scala => representa passagem por nome
18 Tipos de Valores Passados por Parâmetro Valores, Endereços, Funções,... Valores de 1a classe: Estes podem ser associados à uma variável, podem ser passados como parâmetro e podem ser retornados como resultado de uma função 2a classe Estes podem ser associados à uma variável, podem ser passados como parâmetro 3a classe
19 Outras Características de Passagens por Parâmetro Algumas linguagens permitem que o número de parâmetros de uma função seja variável Por exemplo, observe os argumentos passados para as funções scanf() e printf() Em C isto é obtido terminando a lista de parâmetros com o parâmetro ' '
20 Outras Características de Passagens por Parâmetro Algumas linguagens permitem a definição de valores padrão (default) na passagem de parâmetros Desta maneira, quando algum argumento não é informado na chamada da função, o valor padrão é utilizado
21 Outras Características de Passagens por Parâmetro #include "stdio.h" \ #include "stdlib.h" \ #include "string.h" #include "stdarg.h" float frac (int k = 0) { // Valor default: somente em C++ return ++k; } int frac2(int k,...) { // Pelo menos 1 parâmetro fixo va_list args; va_start(args, k); int proxi = va_arg(args, int); int proxi2 = atoi(va_arg(args, char *)); va_end(args); return k + proxi + proxi2; } main() { printf("%3.1f\n", frac(20)); printf("%d\n", frac2(5, 15, "25.0")); }
22 Rotinas Genéricas Diversos mecanismos (estruturas, funções, etc) tem seus conceitos definidos independente do tipo de dado manipulado Listas, Pilhas, Filas, Ordenação, Pesquisa, Linguagens usualmente disponibilizam mecanismos genéricos para a implementação destes conceitos Em C, por exemplo, isto é obtido através do tipo (void *)
23 Rotinas Genéricas Implementação de Lista
24 Rotinas Genéricas #include "stdio.h" #include "stdlib.h" main() { ListaGen* l = NULL; char *nome = "vinicius"; l = insere(l, nome, imprimestring); int *x = (int *)malloc(sizeof(int)); (*x) = 10; l = insere(l, x, imprimenumero); exibe(l); }
25 Rotinas Genéricas #include "stdio.h" #include "stdlib.h" typedef struct lista_gen { void* info; void (* impressao)(void *); // Campo que representa uma função struct lista_gen* prox; } ListaGen; ListaGen* insere(listagen *l, void* p, void impr(void *)); void imprimestring (void *p); void imprimenumero (void *p);
26 Rotinas Genéricas... ListaGen* insere(listagen *l, void* p, void impr(void *)) { ListaGen* n = (ListaGen *) malloc(sizeof(listagen)); n->info = p; n->impressao = impr; n->prox = l; return n; } void imprimestring (void *p) { printf("%s\n", (char *)p); } void imprimenumero (void *p) { printf("%d\n", *((int *)p)); } void exibe(listagen *l) { ListaGen *laux; for (laux = l; laux!= NULL; laux=laux->prox) { laux->impressao(laux->info); } }
Estruturas de Dados. Introdução Definição de Ponteiros Declaração de Ponteiros em C Manipulação de Ponteiros em C
Estruturas de Dados Revisão de Ponteiros Prof. Ricardo J. G. B. Campello Sumário Introdução Definição de Ponteiros Declaração de Ponteiros em C Manipulação de Ponteiros em C Operações Ponteiros e Arranjos
FUNÇÕES EM C Material adaptado da profa Silvana Maria Affonso de Lara
Universidade do Estado de Minas Gerais - UEMG Curso de Engenharia da Computação FUNÇÕES EM C 1 Material adaptado da profa Silvana Maria Affonso de Lara ROTEIRO DA AULA Definição de Função Argumentos, retornos
ALGORITMOS E ESRUTRA DE DADOS I. Ponteiros Passagem por Valor e Referência Alocação de Memória
ALGORITMOS E ESRUTRA DE DADOS I Ponteiros Passagem por Valor e Referência Alocação de Memória 2 Agenda Ponteiros Conceitos gerais O que é Ponteiro? Declaração de Ponteiros Operadores para Ponteiros Exemplos
Sumário. Introdução à Ciência da Computação. Ponteiros em C. Introdução. Definição. Por quê ponteiros são importantes?
Introdução à Ciência da Computação Ponteiros em C Prof. Ricardo J. G. B. Campello Sumário Introdução Definição de Ponteiros Declaração de Ponteiros em C Manipulação de Ponteiros em C Operações Ponteiros
Programação 1. Atribuição, operadores aritméticos, entrada de dados. Técnico em Eletrônica Semestre 5 02
Programação 1 Atribuição, operadores aritméticos, entrada de dados Técnico em Eletrônica Semestre 5 02 Armazenando na memória tipo de variável #include #include main() { int ano; Declaração
1ª versão. #include <stdio.h> #include <string.h> #include <stdlib.h> #define maxdiscos 1000
#include #include #include #define maxdiscos 1000 typedef struct { char nomeautor[80]; char nomedisco[100]; int numdiscosvendidos; DISCO; 1ª versão int main() { DISCO listadiscos[maxdiscos];
Ponteiros e Tabelas. K&R: Capítulo 5
Ponteiros e Tabelas K&R: Capítulo 5 Ponteiros e Tabelas Ponteiros e endereços Ponteiros e argumentos de funções Ponteiros e tabelas Alocação dinâmica de memória Aritmética de ponteiros Tabelas de ponteiros
Universidade de São Paulo São Carlos Instituto de Ciências Matemáticas e de Computação. Material preparado pela profa Silvana Maria Affonso de Lara
Universidade de São Paulo São Carlos Instituto de Ciências Matemáticas e de Computação FUNÇÕES EM C 1 Material preparado pela profa Silvana Maria Affonso de Lara 2º semestre de 2010 ROTEIRO DA AULA Definição
Introdução a Programação. Ponteiros e Vetores, Alocação Dinâmica
Introdução a Programação Ponteiros e Vetores, Alocação Dinâmica Tópicos da Aula Hoje aprenderemos que existe uma forte relação entre ponteiros e vetores Associação entre ponteiros e vetores Ponteiros constantes
Introdução a Programação. Tipos Estruturados de Dados
Introdução a Programação Tipos Estruturados de Dados Tópicos da Aula Hoje aprenderemos a trabalhar com tipos de dados mais complexos Tipos Primitivos x Tipos Estruturados Conceito de Tipos Estruturados
Carlos Eduardo Batista. Centro de Informática - UFPB
Estrutura de Dados Carlos Eduardo Batista Centro de Informática - UFPB [email protected] Aritmética de ponteiros em C (continuação) O que acontece na memória? Ponteiro para ponteiro etc. Métodos de pesquisa
Algoritmos e Estruturas de dados
Algoritmos e Estruturas de dados Listas Encadeadas Prof. Dr. Fábio Rodrigues de la Rocha (Listas Encadeadas) 1 / 21 Definição: Anteriormente estudamos listas encadeadas que foram implementadas como vetores
Programação Estruturada
Programação Estruturada Introdução à linguagem C Professores Emílio Francesquini e Carla Negri Lintzmayer 2018.Q3 Centro de Matemática, Computação e Cognição Universidade Federal do ABC Programação estruturada
Ponteiros e Alocação de Memória
Algoritmos e Estrutura de Dados I Ponteiros e Alocação de Memória Prof. Paulo Henrique Pisani fevereiro/2019 Memória Podemos entender a memória como um grande vetor de bytes devidamente endereçados: 0x1051
Implementando subprogramas
Implementando subprogramas Linguagens de Programação Marco A L Barbosa cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual 4.0 Internacional. http://github.com/malbarbo/na-lp-copl
Trabalho Linguagem e Programação de Compiladores
Trabalho Linguagem e Programação de Compiladores Responda as questões. Os exercícios deverão ser desenvolvidos utilizando as estruturas apresentadas em aula e adequadas para cada problema. Forma de entrega:
INF 1620 P2-01/11/03 Questão 1 Nome:
INF 1620 P2-01/11/03 Questão 1 Considere a implementação de uma lista encadeada para armazenar as notas dos alunos de uma turma dada pelo tipo abaixo: struct lista { char nome[81]; int mat; float p1, p2,
Introdução a Computação
Introdução a Computação Aula 03 Introdução a Linguagem C Edirlei Soares de Lima Programação Programa é um algoritmo escrito em uma linguagem de programação. Existem diversas linguagens
#include <stdio.h> Void main() { printf( Cheguei!\n"); } INTRODUÇÃO A LINGUAGEM C
#include Void main() { printf( Cheguei!\n"); } INTRODUÇÃO A LINGUAGEM C ANTES DO C ERA A LINGUAGEM B B foi essencialmente uma simplificação da linguagem BCPL. B só tinha um tipo de dado, que
Alocação Dinâmica em C
Universidade de São Paulo São Carlos Instituto de Ciências Matemáticas e de Computação Alocação Dinâmica em C Profa Rosana Braga Adaptado de material preparado pela profa Silvana Maria Affonso de Lara
Implementação de subprogramas
Implementação de subprogramas Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual
PONTEIROS E LISTAS. Kalinka Regina Lucas Jaquie Castelo Branco
PONTEIROS E LISTAS Kalinka Regina Lucas Jaquie Castelo Branco [email protected] ALOCAÇÃO DINÂMICA DE MEMÓRIA Pode-se assumir que as variáveis declaradas na cláusula variável do pseudo-código do algoritmo
Listas Ligadas (Encadeadas) Listas Simplesmente Encadeadas
Listas Ligadas (Encadeadas) Matrizes são estruturas de dados muito úteis fornecidas nas linguagens de programação. No entanto, elas têm pelo menos duas limitações: 1- Seu tamanho tem que ser conhecido
Programação de Computadores I Introdução ao C PROFESSORA CINTIA CAETANO
Programação de Computadores I Introdução ao C PROFESSORA CINTIA CAETANO Introdução Criada em 1972, por Dennis Ritchie; Centro de Pesquisas da Bell Laboratories; Para utilização no S.O. UNIX; C é uma linguagem
REVISÃO DE C. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos
REVISÃO DE C Vanessa Braganholo Estruturas de Dados e Seus Algoritmos REVISÃO DE C Ponteiros Alocação dinâmica de memória Recursão INSTITUTO DE COMPUTAÇÃO - UFF 2 PONTEIROS PONTEIROS C permite o armazenamento
Métodos Computacionais. Tipos Estruturados
Métodos Computacionais Tipos Estruturados Tipos Estruturados C oferece tipos primitivos que servem para representar valores simples Reais (float, double), inteiros (int), caracter (char) C oferece também
Introdução a Programação de Jogos
Introdução a Programação de Jogos Aula 03 Introdução a Linguagem C Edirlei Soares de Lima Estrutura de um Programa C Inclusão de bibliotecas auxiliares: #include Definição
Alocação de Memória. Lucas Ferrari de Oliveira Professor Adjunto Universidade Federal do Paraná (UFPR)
Alocação de Memória Linguagem de Programação Estruturada 1 Alocação dinâmica e ponteiros Lucas Ferrari de Oliveira Professor Adjunto Universidade Federal do Paraná (UFPR) Sumario Introdução Alocação Estática
Linguagens de Programação I
Linguagens de Programação I Tema # 4 Operadores em C Susana M Iglesias FUNÇÕES ENTRADA-SAÍDA I/O printf(), utilizada para enviar dados ao dispositivo de saída padrão (stdout), scanf(), utilizada para ler
Linguagens de Programação Aula 11
Linguagens de Programação Aula 11 Celso Olivete Júnior [email protected] Na aula passada Uma definição de subprograma descreve as ações representadas pelo subprograma Subprogramas podem ser funções
Linguagem C. Programação Estruturada. Modularização (Funções) Prof. Luis Nícolas de Amorim Trigo
Programação Estruturada Linguagem C Modularização (Funções) Prof. Luis Nícolas de Amorim Trigo [email protected] Sumário Introdução Por que usar funções? Escopo de Variáveis Declarando uma
Carlos Eduardo Batista. Centro de Informática - UFPB
Linguagem de Programação I Carlos Eduardo Batista Centro de Informática - UFPB [email protected] Complexidade dos sistemas de software Estrutura Decomposição Abstração Hierarquia Projeto de sistemas complexos
Linguagens de Programação Conceitos e Técnicas. Amarrações
Linguagens de Programação Conceitos e Técnicas Amarrações Conceituação Amarração (ou binding) é uma associação entre entidades de programação, tais como entre uma variável e seu valor ou entre um identificador
Tipos Básicos. Operadores de Incremento e Decremento. Operador Sizeof. Estruturas de Dados Aula 2: Estruturas Estáticas
Tipos Básicos Quantos valores distintos podemos representar com o tipo char? Estruturas de Dados Aula 2: Estruturas Estáticas 03/03/2010 Operadores de Incremento e Decremento ++ e -- Incrementa ou decrementa
Introdução à Linguagem C
Introdução à Linguagem C Eduardo Simões de Albuquerque Instituto de Informática UFG 13/03/2006 1 História Inventada e desenvolvida por Dennis Ritchie em um DEC- PDP 11 Originária de: BCPL desenvolvida
Módulo 5 Vetores e Alocação Dinâmica
Estruturas de Dados Módulo 5 Vetores e Alocação Dinâmica 1/9/2005 (c) Dept. Informática - PUC-Rio 1 Referências Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora
Computação para Informática - Prof. Adriano Joaquim de Oliveira Cruz Segunda Aula Prática - 29 de agosto de 2008
Computação para Informática - Prof. Adriano Joaquim de Oliveira Cruz Segunda Aula Prática - 29 de agosto de 2008 Introdução O objetivo desta aula prática é exercitar comandos de entrada e saída simples
1 Exercícios com ponteiros
Computação para Informática Funções e Ponteiros1 EXERCÍCIOS COM PONTEIROS Computação para Informática - Prof. Adriano Joaquim de Oliveira Cruz Aula Prática - Funções e ponteiros O objetivo desta aula prática
Métodos Computacionais. Funções, Escopo de Variáveis e Ponteiros
Métodos Computacionais Funções, Escopo de Variáveis e Ponteiros Tópicos da Aula Hoje vamos detalhar funções em C Escrevendo funções Comando return Passagem de argumentos por valor Execução de uma função
Linguagem C. André Tavares da Silva.
Linguagem C André Tavares da Silva [email protected] Variáveis Posição nomeada de memória que é usada para guardar um valor que pode ser modificado pelo programa. Todas as variáveis devem ser
Linguagem C Ficheiros Compilação Separada
Linguagem C Ficheiros Compilação Separada typedef definição de tipos Apontadores para estruturas Ficheiros na bibiloteca standard do C Compilação Separada Definição de novos tipos em C É possível definir
Programação de Computadores II
Programação de Computadores II 1. Programação Básica 2019.1 Slides adaptados do material de Karina Mochetti Problema, Algoritmo, Programa Um programa de computador é a implementação de um algoritmo para
Listas: nós de cabeçalho, listas não homogêneas, listas generalizadas
Listas: nós de cabeçalho, listas não homogêneas, listas generalizadas SCC-502 Algoritmos e Estruturas de Dados I Prof. Thiago A. S. Pardo Lista com nó de cabeçalho Nó de cabeçalho Header, sentinela, etc.
Faculdade de Computação
Faculdade de Computação Programação Procedimental 1 o Laboratório de Programação C Prof. Cláudio C. Rodrigues 1. Introdução O objetivo desta aula prática é exercitar o uso de variáveis de vários tipos
LINGUAGEM C Estrutura / Funções
Tópicos Especiais em T. Computação CONCEITOS DA LINGUAGEM C Estrutura / Funções Prof. Elyssandro Piffer ESTRUTURAS As estruturas em C são muito semelhantes aos registros em Pascal. Agrupam num único tipo,
INF 1620 P3-21/06/08 Questão 1 Nome:
INF 1620 P3-21/06/08 Questão 1 Dada uma lista encadeada de números inteiros cujo tipo que representa um nó da lista é dado por: struct lista { int info; struct lista *prox; typedef struct lista Lista;
Algoritmos e Programação. Linguagem C Procedimentos e. Eliane Pozzebon
Algoritmos e Programação Linguagem C Procedimentos e Funções Eliane Pozzebon Procedimentos e Funções Procedimentos são estruturas que agrupam um conjunto de comandos, que são executados quando o procedimento
Capítulo 1: Introdução à Linguagem C. Pontifícia Universidade Católica Departamento de Informática
Capítulo 1: Introdução à Linguagem C Pontifícia Universidade Católica Departamento de Informática Programa Programa é um algoritmo escrito em uma linguagem de programação. No nosso caso, a linguagem C.
Introdução à Programação Aula 09. Prof. Max Santana Rolemberg Farias Colegiado de Engenharia de Computação
Introdução à Programação Aula 09 Prof. Max Santana Rolemberg Farias [email protected] Colegiado de Engenharia de Computação A linguagem C, como qualquer outra linguagem de programação, permite
Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP. Alocação Dinâmica de Memória
Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP Alocação Dinâmica de Memória Alocação Estática x Dinâmica C: dois tipos de alocação de memória: Estática e Dinâmica Na alocação estática, o espaço
CAP. IX - MANIPULAÇÃO DE ARQUIVOS Generalidades sobre Arquivos. 9.2 Abertura e Fechamento de Arquivos. Operações com arquivos:
CAP. IX - MANIPULAÇÃO DE ARQUIVOS 9.1 Generalidades sobre arquivos 9.2 Abertura e fechamento de arquivos 9.3 Arquivos textos e arquivos binários 9.4 Leitura e escrita em arquivos binários 9.5 Procura direta
SCC 202 Algoritmos e Estruturas de Dados I. Pilhas (Stacks) (implementação dinâmica)
SCC 202 Algoritmos e Estruturas de Dados I Pilhas (Stacks) (implementação dinâmica) Operações alocação encadeada dinâmica typedef struct elem{ tipo_info info; struct elem *lig; tipo_elem; typedef struct{
Tipos Abstratos de Dados. Estrutura de Dados
Tipos Abstratos de Dados Tipo Abstrato de Dados ou TAD Idéia principal: desvincular o tipo de dado (valores e operações) de sua implementação: O que o tipo faz e não como ele faz! Vantagens da desvinculação:
SCC 202 Prova 1. 28/9/2010 Resolução e Comentários
SCC 202 Prova 1 28/9/2010 Resolução e Comentários Questão 1) (3.5) Sobre TADs. a) O que é e quais são as vantagens de se utilizar Tipos Abstratos de Dados (TADs) no projeto de desenvolvimento de software?
