FUNÇÕES EM C Material adaptado da profa Silvana Maria Affonso de Lara

Documentos relacionados
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

3. Linguagem de Programação C

Linguagem de Programação C

1. Revisão de Vetores, Ponteiros, Funções e Estruturas em C

Curso C: Funções e Macros

MESMO QUE ESTAS VARIÁVEIS TENHAM NOME IDÊNTICOS

Funções. Introdução à Computação para a Engenharia Ambiental

Fundamentos de Programação

ponteiros INF Programação I Prof. Roberto Azevedo

Ponteiros. um ponteiro é uma variável que contém o endereço um dado declaração: * indica que a variável é um ponteiro. Ex: tipo_dado *nome_ponteiro;

Aula 07 Introdução à Programação Subprogramas

Programação: Vetores

Permite modularidade (dividir programa em partes): Facilita a depuração (debug) e portabilidade.

Algoritmos e Programação

Computação 2. Aula 7. Profª. Fabiany Ponteiros

Programação I Funções. Prof. Carlos Alberto

Introdução a Programação. Tipos Estruturados de Dados

LINGUAGEM C: FUNÇÕES FUNÇÃO 08/01/2018. Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa.

Sumário. Introdução à Ciência da Computação. Ponteiros em C. Introdução. Definição. Por quê ponteiros são importantes?

INF 1620 P1-13/09/02 Questão 1 Nome:

LINGUAGEM C: FUNÇÕES FUNÇÃO 04/07/2017. Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa.

Programação Estruturada

Ponteiros e Tabelas. K&R: Capítulo 5

Estruturas de Dados. Módulo 4 Funções. 9/8/2005 (c) Dept. Informática - PUC-Rio 1

Linguagens de Programação I

1 Exercícios com ponteiros

Linguagem C Funções. André Tavares da Silva.

Linguagem C. André Tavares da Silva.

Linguagem e Técnicas de Programação

Funções em C. Lucas Ferrari de Oliveira Professor Adjunto. Linguagem de Programação Estruturada I. Universidade Federal do Paraná

Tipos Básicos. Operadores de Incremento e Decremento. Operador Sizeof. Estruturas de Dados Aula 2: Estruturas Estáticas

Subprogramas. Prof. Carlos Lopes

Estruturas de Dados Aula 2: Estruturas Estáticas 02/03/2011

Estruturas de Dados Aula 2: Estruturas Estáticas. Tipos Básicos. Quantos valores distintos podemos representar com o tipo char?

Aula 18: Funções em C

Alocação Dinâmica em C

Estruturas da linguagem C. 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões.

Mais sobre Ponteiros em C

Sub-rotinas em C. Disciplina de Programação de Computadores I Universidade Federal de Ouro Preto

prim = A ; prim = &A[0];

Métodos Computacionais. Funções, Escopo de Variáveis e Ponteiros

3. Linguagem de Programação C

Suponha um conjunto habitacional, com várias famílias... imagina se todas elas morassem em uma única casa?

Algoritmos e Estruturas de Dados I IEC012. Procedimentos e Funções. Prof. César Melo Todos os créditos para o professor Leandro Galvão

Suponha um conjunto habitacional, com várias famílias... imagina se todas elas morassem em uma única casa?

Ponteiros & tabelas (cont.) K&R: Capítulo 5

Ponteiros e Tabelas. K&R: Capitulo 5 IAED, 2012/2013

Ponteiros e Tabelas. K&R: Capitulo 5 IAED, 2012/2013

Rotinas, Modos e Tipos de Passagem de Parâmetros

Introdução à Programação em C

A linguagem C (visão histórica)

1 Exercícios com ponteiros

Introdução à Programação Aula 09. Prof. Max Santana Rolemberg Farias Colegiado de Engenharia de Computação

Linguagens de Programação. Rotinas, Modos e Tipos de Passagem de Parâmetros. Carlos Bazilio

Básico: estrutura de programa, sintaxe Interface com linha de comando

Algoritmos e Programação. Linguagem C Procedimentos e. Eliane Pozzebon

Introdução à Programação Aula 07. Prof. Max Santana Rolemberg Farias Colegiado de Engenharia de Computação

Hello World. Linguagem C. Tipos de Dados. Palavras Reservadas. Operadores Aritméticos. Pré e pós incremento e pré e pós decremento

10. - ESTRUTURAS Características Básicas

Algoritmos e Programação

Função. Unidade autônoma do programa desenvolvida para executar alguma atividade. A estrutura de uma função C é semelhante à da função main( )

Introdução à Programação. Funções e Escopo de Variáveis

ESTRUTURAS CONDICIONAIS. Baseado nos slides de autoria de Rosely Sanches e Simone Senger de Souza

INF 1007 Programação II

Estruturas de Dados. Introdução Definição de Ponteiros Declaração de Ponteiros em C Manipulação de Ponteiros em C

Modularidade - Funções e Procedimentos

ESTRUTURAS CONDICIONAIS. Introdução à Ciência da ComputaçãoI Simone Senger de Souza

Estrutura de Dados I Bacharelado em Sistemas de Informação FACOM UFU Lista de Exercícios

MC-102 Aula 21 Registros

Tipos Abstratos de Dados. Estrutura de Dados

Funções. definição, declaração e chamada

Introdução à Programação

Estruturas. K&R: Capitulo 6. Estruturas IAED, 2014/2015. Introdução às Estruturas Estruturas e Funções Vectores de Estruturas Typedef Exemplo

Introdução a Programação. Ponteiros e Vetores, Alocação Dinâmica

Computação 2. Aula 5. Profª. Fabiany defines vetor, strings e matriz por parâmetros de função

Aula 25: Alocação Dinâmica

EXERCÍCIO DE SONDAGEM TURMA 02 SEMESTRE DATA: 01/11/2016. Matrícula Nome Nota

Módulo 5 Vetores e Alocação Dinâmica

Introdução à linguagem C

Programação de Computadores II

Sistemas Operacionais e Introdução à Programação. Programação com linguagem C

Programação de Computadores I Funções na Linguagem C PROFESSORA CINTIA CAETANO

Linguagem C: Introdução

Exercício. Alocação Dinâmica. Alocação dinâmica de memória. Alocação de memória. Alocação da Memória Principal. Alocação da Memória Principal

LINGUAGEM C Estrutura / Funções

Computadores Digitais 2. Prof. Rodrigo de Souza Couto

Programação Estruturada Prof. Rodrigo Hausen Organização e Gerenciamento de Memória

Subprogramas. (ou Sub-rotinas) em C: Procedimentos e Funções. 2015/1 Programação Básica de Computadores (INF 09325)

Funções em Linguagem C Parte II

Introdução à Programação em C Input / Output

Aula 27: Estruturas heterogêneas e alocação dinâmica

Lista de Exercícios de Algoritmos - 04 Para cada um dos exercícios abaixo, faça um programa (em laboratório) que teste a função.

Aula de hoje. Funções. Introdução. Função. Definição de funções. Exemplo. SCC Introdução à Programação para Engenharias

C Comandos de Controle

Aula 03 -Introdução àlinguagc Programação: Estrutura-Repetição. OPL e IC1 Prof: Anilton Joaquim da Silva

Universidade de São Paulo São Carlos Instituto de Ciências Matemáticas e de Computação. Estruturas em C

Modularização: Funções em C

Programação de Computadores II. Cap. 4 Funções

REVISÃO DE C. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

Transcrição:

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 e protótipos Funcionamento de uma chamada Passagem de Informações Número de parâmetros variáveis Acesso aos parâmetros 2

FUNÇÃO - DEFINIÇÃO Agrupa um conjunto de comandos e associa a ele um nome O uso deste nome é uma chamada da função Após sua execução, programa volta ao ponto do programa situado imediatamente após a chamada A volta ao programa que chamou a função é chamada de retorno 3

FUNÇÃO A chamada de uma função pode passar informações (argumentos) para o processamento da função Argumentos = lista de expressões Lista pode ser vazia Lista aparece entre parênteses após o nome da função Ex. int Soma (int x, int y) { } 4

O RETORNO DA FUNÇÃO No seu retorno, uma função pode retornar resultados ao programa que a chamou return (resultados); O valor da variável local resultados é passado de volta como o valor da função Valores de qualquer tipo podem ser retornados Funções predicado: funções que retornam valores Procedimentos: funções que não retornam valores Exemplo: void function (int x) 5

FUNÇÕES Definições de funções Funções são definidas de acordo com a seguinte sintaxe: tipo_de resultado nome (lista de parâmetros) { corpo de função } 6

FUNÇÕES - EXEMPLO int MDC (int a, int b) { int aux; if (a < b) { aux = a; a = b; b = aux; } while (b!= 0) { aux = b; b = a % b; a = aux; } return (a); } uma função C para calcular o máximo divisor comum entre dois números 7

FUNÇÕES Definições de funções Tipo de resultado Quando a função é um procedimento, usa-se a palavra chave void Procedimento não retorna valor Lista de parâmetros Funcionam como variáveis locais com valores iniciais Quando função não recebe parâmetros, a lista de parâmetros é substituída pela palavra void 8

FUNÇÕES Funcionamento de uma chamada: Cada expressão na lista de argumentos é avaliada O valor da expressão é convertido, se necessário, para o tipo de parâmetro formal Este tipo é atribuído ao parâmetro formal correspondente no início do corpo da função O corpo da função é executado 9

FUNÇÕES Funcionamento de uma chamada: Se um comando return é executado, o controle é passado de volta para o trecho que chamou a função Se um comando return inclui uma expressão, o valor da expressão é convertido, se necessário, pelo tipo do valor que a função retorna O valor então é retornado para o trecho que chamou a função Se um comando return não inclui uma expressão nenhum valor é retornado ao trecho que chamou a função Se não existir um comando return, o controle é passado de volta para o trecho que chamou a função após o corpo da função ser executado 10

PASSAGEM DE INFORMAÇÕES Exemplo: double mesada (double notas, int idade) { double total; } if (idade > 10) return (idade * 20.0); else{ total = notas*idade*20; return total; } 11

PASSAGEM DE INFORMAÇÕES Argumentos são passados por valor Quando chamada, a função recebe o valor da variável passada Quando argumento é do tipo atômico, a passagem por valor significa que a função não pode mudar seu valor Os argumentos deixam de existir após a execução do método 12

FUNÇÕES Protótipos ou Declaração de funções Antes de usar uma função em C, é aconselhável declará-la especificando seu protótipo Tem a mesma forma que a função, só que substitui o corpo por um (;) Nomes das variáveis de um parâmetro são opcionais Fornecê-los ajuda a leitura do programa A declaração apenas indica a assinatura ou protótipo da função: valor_retornado nome_função(declaração_parâmetros); 13

FUNÇÕES Mecanismo do processo de chamada de função 1.Valor dos argumentos é calculado pelo programa que está chamando a função 2.Sistema cria novo espaço para todas as variáveis locais da função (estrutura de pilha) 3.Valor de cada argumento é copiado na variável parâmetro correspondente na ordem em que aparecem 3.1 Realiza conversões de tipo necessárias 14

FUNÇÕES Mecanismo do processo de chamada de função 4.Comandos do corpo da função são executados até: 1.Encontrar comando return 2.Não existirem mais comandos para serem executados 5.O valor da expressão return, se ele existe, é avaliado e retornado como valor da função 6. Pilha criada é liberada 7. Programa que chamou continua sua execução 15

FUNÇÕES uma função pode retornar qualquer valor válido em C, sejam de tipos pré-definidos ( int, char, float) ou de tipos definidos pelo usuário ( struct, typedef ) uma função que não retorna nada é definida colocando-se o tipo void como valor retornado (= procedure) Pode-se colocar void entre parênteses se a função não recebe nenhum parâmetro 16

FUNÇÕES Projeto top-down Procedimentos e funções permitem dividir um programa em pedaços menores Facilita sua leitura É chamado de processo de decomposição Estratégia de programação fundamental Encontrar a decomposição certa não é fácil Requer experiência 17

FUNÇÕES Projeto top-down Melhor estratégia para escrever programas é começar com o programa principal Pensar no programa como um todo Identificar as principais partes da tarefa completa: Maiores pedaços são candidatos a funções Mesmo essas funções podem ser decompostas em funções menores Continuar até cada pedaço ser simples o suficiente para ser resolvido por si só 18

EXERCÍCIO int MDC (int a, b) { int aux; if (a < b) { aux = a; a = b; b = aux; } while (b!= 0){ aux = b b = a % b; a = aux } return (a); } Escrever um programa completo em C para calcular o máximo divisor comum entre dois números desmembrando o programa em pelo menos três funções 19

FUNÇÕES Menor função possível: void faz_nada( void ) { } 20

PASSAGEM DE PARÂMETROS Em C os argumentos para uma função são sempre passados por valor (by value), ou seja, uma cópia do argumento é feita e passada para a função void loop_count( int i ) { printf( "Em loop_count, i = " ); while( i < 10 ) printf ( "%d ", i++); ==> i = 2 3 4 5 6 7 8 9 } void main( ) { int i = 2; loop_count( i ); printf( "\nem main, i = %d.\n", i ); ==> i = 2. } 21

RETORNANDO VALORES uma função retorna um valor através do comando return Ex: int power (int base, int n) { int i,p; } p = 1; for (i = 1; i <= n; ++i) p *= base; return p; 22

FUNÇÕES o valor retornado por uma função é sempre copiado para o contexto de chamada (retorno by value) x = power(2, 5); /* atribuição */ if (power(7, 2) > 12543) /* comparação */ printf( Numero grande! ); x = 10*power(2,3); /* expressão */ array[get_index()]; /* índice */ funcao( get_arg() ); /* argumento */ 23

VETORES COMO ARGUMENTOS DE FUNÇÕES Quando vamos passar um vetor como argumento de uma função, podemos declarar a função de três maneiras equivalentes. Seja o vetor: int matrx [50]; e que queiramos passá-la como argumento de uma função func(). Podemos declarar func() de três maneiras: void func (int matrx[50]); void func (int matrx[]); void func (int *matrx); 24

NÚMERO DE PARÂMETROS VARIÁVEL C permite declarar funções com número variável de argumentos através da inserção de reticências... função ( arg1, arg2,... ); Como determinar o número de parâmetros passados: string de formato, como no comando printf: Ex: printf ( %s %d %f\n, s, i, f); pela especificação do número de parâmetros Ex: soma (3, 10, -1, 5); pela inclusão de um valor de terminação Ex: media ( 1, 4, 6, 0, 3, -1 ); 25

ACESSO AOS PARÂMETROS C oferece uma série de macros para acessar uma lista de argumentos: va_list é um tipo pré-definido utilizado para declarar um ponteiro para os argumentos da lista va_start(va_list ap, arg_def ) inicia o ponteiro ap fazendo-o apontar para o primeiro argumento da lista, ou seja, o primeiro argumento depois de arg_def. arg_def é o nome do último argumento especificado na declaração da função 26

ACESSO AOS PARÂMETROS type va_arg( va_list ap, type ) retorna o valor do argumento apontado por ap e faz ap apontar para o próximo argumento da lista. type indica o tipo de argumento lido (int, float, etc.) void va_end ( va_list ap ) encerra o acesso à lista de parâmetros. Deve sempre ser chamada no final da função 27

EXEMPLO PARÂMETROS VARIÁVEIS #include <stdio.h> #include <stdlib.h> #include <stdarg.h> int sum( int nro_args,... ) { va_list ap; int result = 0, i; va_start( ap, nro_args ); for( i = 1; i <= nro_args; i++ ) { result += va_arg( ap, int ); } } va_end(ap); return result; sum( 5, 3, 5, 18, 57, 66 ) ==> 149 sum( 2, 3, 5 ) ==> 8 40

PARÂMETROS PARA MAIN( ) ao executar programas a partir de linha de comando, é possível passar parâmetros diretamente para a função main( ) os argumentos são fornecidos na forma de um array de strings. main( ) é definida com dois parâmetros: main ( int argc, char *argv[] ) argc é o número de argumentos argv é o array de argumentos 41

PARÂMETROS PARA MAIN() por convenção, o primeiro argumento argv[0] é o nome do programa e o último é 0 (zero) ex: echo Alô, mamãe argc = 3 argv echo\0 Alô, \0 mamãe\0 0 42

PARÂMETROS PARA MAIN() Uma possível implementação para echo: #include <stdio.h> void main( int argc, char *argv[] ) { int i; for ( i = 1; i < argc; i++ ) printf( %s%s, argv[i], (i < argc-1)? : ); printf( \n ); } 31

EXERCÍCIO Fazer um programa em C que lê um array de caracteres e cria um outro array em que os caracteres estão totalmente invertidos, por exemplo, ler MARCONI e retornar INOCRAM Usar ponteiros Usar uma função que recebe um array e retorna o outro invertido 32