Linguagem de Programação C



Documentos relacionados
Curso C: Funções e Macros

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

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

Tabela ASCII de caracteres de controle

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

GFM015 Introdução à Computação Linguagem C / Introdução à Modularização de Programas (uso de subprogramas)

1. Fazer um programa em C que pergunta um valor em metros e imprime o correspondente em decímetros, centímetros e milímetros.

Computadores Digitais 2. Prof. Rodrigo de Souza Couto

Linguagem C: variáveis, operadores, entrada/saída. Prof. Críston Algoritmos e Programação

Orientação a Objetos. Conceitos Iniciais Introdução a Linguagem Java. Gil Eduardo de Andrade

Programação Engenharia Informática (11543) 1º ano, 1º semestre Tecnologias e Sistemas de Informação (6619) 1º ano, 1º semestre

Algoritmos e Programação

INF 1007 Programação II

Estruturas de Dados. Alguns dados não costumam ser tão simples assim... Podem ser compostos por vários dados distintos

Estrutura de Dados Básica

PROGRAMAÇÃO FUNÇÕES NA LINGUAGEM C

INTRODUÇÃO À LINGUAGEM C++

Variáveis e Comandos de Atribuição

15 a Aula Subprogramação /Subalgoritmos Função e Procedimento

Introdução a Computação

cast poderia ser usado também para transformar um real (float) em inteiro. A sintaxe C (float)i pode ser substituída em C++ por float(i).

Linguagem de Programação

Introdução à Programação. Armazenamento de Grande Quantidade de Informação Usando Vetores

Computação II Orientação a Objetos

Listas (Parte 2) Túlio Toffolo BCC202 Aula 10 Algoritmos e Estruturas de Dados I

Linguagem C Tipos de Dados. void; escalares; sizeof Vectores; strings em C Estruturas Introdução ao pré-processador

Operaçõe õ s c om o Strings Intr oduç ão a o Ponte iros o e Funçõe õ s

5 Apresentando a linguagem C

Linguagem C. Programação Estruturada. Fundamentos da Linguagem. Prof. Luis Nícolas de Amorim Trigo

Programação Estruturada I

5 - Vetores e Matrizes Linguagem C CAPÍTULO 5 VETORES E MATRIZES

Convertendo Algoritmos para a Linguagem C

LINGUAGEM C. Estrutura básica de um programa

BC0505 Processamento da Informação

Conceitos básicos da linguagem C

Linguagem C Funções definidas pelo usuário. Lógica de Programação

Linguagem de Programação I

Algoritmos e Estruturas de Dados I. Universidade Federal de São João del-rei Pedro Mitsuo Shiroma Sala 119 Bloco 3

Métodos Computacionais. Fila

Plano de Aula. if(condição) { bloco de comandos; } else { bloco de comandos2; }

Introdução a POO. Introdução a Linguagem C++ e POO

Programação. MEAer. Bertinho Andrade da Costa. Instituto Superior Técnico. Introdução ao Pré-Processador. 2011/2012 1º Semestre

PROGRAMAÇÃO ESTRUTURADA. CC 2º Período

Programação: Estruturas de seleção

Neste artigo estudaremos os conceitos relacionados às matrizes unidimensionais (vetores) e multidimensionais.

Tipo Abstrato de Dados

UNIVERSIDADE FEDERAL DO ESPÍRITO SANTO CENTRO UNIVERSITÁRIO NORTE DO ESPÍRITO SANTO

Tipos de Dados Avançados Vetores e Matrizes

Programação Estruturada. Programação Estruturada. Idéias Básicas da Programação Estruturada

INF 1005 Programação I

Estrutura de Dados. Prof. Gustavo Willam Pereira. Créditos: Profa. Juliana Pinheiro Campos

Programa ConsoleRPN. PUC-Rio CIV Sistemas Gráficos para Engenharia Luiz Fernando Martha & André Maués Brabo Pereira

Estruturas de repetição (Ciclos)

IFTO LÓGICA DE PROGRAMAÇÃO AULA 05

ATENÇÃO!!! Rui Morgado - TLP 2

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

insfcanceof new public switch transient while byte continue extends for int null

Programação de Computadores I. Ponteiros

MC102 Algoritmos e programação de computadores Aula 3: Variáveis

INF 1007 Programação II

INSTITUTO SUPERIOR DE CIÊNCIAS DO TRABALHO E DA EMPRESA. Filas de mensagem

compreender a importância de cada estrutura de controle disponível na Linguagem C;

Estruturas de Controle em PHP

Conversão de Tipos e Arrays

Busca em Memória. Secundária

/*(Atenção: Em se tratando de uma lista estaticamente alocada, temos utilizado a estratégia de passa o tamanho máximo do vetor.)*/

Desenvolvimento OO com Java Orientação a objetos básica

O que é um algoritmo? O que é um programa? Algoritmos. Programas. Aula 1 Tipo Abstrato de Dados

Algoritmos e Programação. Curso de Engenharia de Produção Prof. Ms. Rogério Cardoso rogerio.cardoso@aedu.com professor@rogeriocardoso.com.

Estruturas de Dados Aula 15: Árvores 17/05/2011

Unidade IV: Ponteiros, Referências e Arrays

17 - Funções e Procedimentos em C Programação Modular

Capítulo 8. CICLOS. Tabela 8.1 Programa8a.f90.

LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA INTRODUÇÃO À PROGRAMAÇÃO COM C/C++ Prof. Dr. Daniel Caetano

Operadores unários de incremento/decremento. Ciclo for

Trabalho 3: Agenda de Tarefas

Introdução à Engenharia ENG1000

Tipo de Dados em Linguagem C

1 Funções básicas de implementação de arquivos

Programação científica C++

INF PROGRAMAÇÃO II LISTA DE EXERCÍCIOS 4

Programação por Objectos. Java

Universidade Federal de Rondônia Técnicas de Desenvolvimento de Programas Lista 4

2 a LISTA DE EXERCÍCIOS DE LINGUAGEM C

Capítulo 2: Introdução à Linguagem C

LTP-IV. Prof. Dr. Silvio do Lago Pereira. Departamento de Tecnologia da Informação Faculdade de Tecnologia de São Paulo

Estrutura switch if-else switch switch switch if-else-if switch switch case default break switch switch break Observações: case

Algoritmo e Técnica de Programação - Linguagem C

Carga horária : 4 aulas semanais (laboratório) Professores: Custódio, Daniel, Julio foco: introdução a uma linguagem de programação Linguagem Java

3. INTRODUÇÃO À LINGUAGEM C 3.1. CONCEITOS BÁSICOS. Lógica de Programação

PIP/CA - Programa Interdisciplinar de Pós-Graduação em Computação Aplicada da UNISINOS ALGORITMOS & ESTRUTURAS DE DADOS

INF 1620 P1-10/04/02 Questão 1 Nome:

Programação: Tipos, Variáveis e Expressões

Implementando uma Classe e Criando Objetos a partir dela

9 Comandos condicionais

INF 1005 Programação I lista 12

Transcrição:

ICMC USP Linguagem de Programação C Aula: Funções em C Prof Alneu de Andrade Lopes

MODULARIZAÇÃO Um problema complexo é melhor abordado se for dividido primeiramente em vários subproblemas MODULARIZAÇÃO

MODULARIZAÇÃO Um problema complexo é melhor abordado se for dividido primeiramente em vários subproblemas MÓDULOS MODULARIZAÇÃO

MODULARIZAÇÃO A implementação desses Módulos é feita através de SUBPROGRAMAS MÓDULOS

MODULARIZAÇÃO A implementação desses Módulos é feita através de SUBPROGRAMAS programa subprograma1 subprograma2.........

MODULARIZAÇÃO A implementação desses Módulos é feita através de SUBPROGRAMAS MÓDULOS Os SUBPROGRAMAS em C são implementados por FUNÇÕES

FUNÇÕES As linguagens de programação têm à sua disposição várias funções pré-definidas: EXEMPLO (C) pow (X,2) quadrado de X printf( %s,x) imprime string X

FUNÇÕES As linguagens de programação têm à sua disposição várias funções pré-definidas: EXEMPLO (C) pow (X,2) quadrado de X printf( %s,x) imprime string X Identificador da FUNÇÃO

FUNÇÕES As linguagens de programação têm à sua disposição várias funções pré-definidas: EXEMPLO (C) pow (X,2) quadrado de X printf( %s,x) imprime string X Parâmetros

FUNÇÕES As Funções Pré Definidas podem ser usadas diretamente em expressões: Exemplo: H = pow ((pow(x,2) + pow (Y,2)), 0.5);

FUNÇÕES As Funções Pré Definidas podem ser usadas diretamente em expressões: Exemplo: H = pow ((pow(x,2) + pow (Y,2)), 0.5); Parâmetros REAIS

FUNÇÕES As Funções Pré Definidas podem ser usadas diretamente em expressões: Exemplo: H = pow ((pow(x,2) + pow (Y,2)), 0.5); Estes parâmetros devem ser valores conhecidos Parâmetros REAIS

FUNÇÕES Se houver necessidade o programador pode definir suas próprias FUNÇÕES

# include <stdio.h> int sqr(float x){ x = x*x; return(x); } main(){ float t=10; printf( %f,sqr(t)); }

DEFINIÇÃO DE FUNÇÃO Linguagem Algoritmica função declaração do tipo da saída da função NOME-DA DA- FUNÇÃO (declaração do tipo do parâmetro1 parâmetro1, declaração do tipo do parâmetro2 parâmetro2,..., declaração do tipo do parâmetron parâmetron) início declaração das variáveis utilizadas localmente corpo da função fim

DEFINIÇÃO DE FUNÇÃO Em C Tipo do retorno NOME-DA-FUNÇÃO (tipo_p1 p1, tipo_p2 p2,..., tipo_pn pn){ declaração de variáveis utilizadas no corpo da função; corpo da função; };

CARACTERÍSTICAS DAS Retorna um único valor FUNÇÕES Na definição da função devem ser declarados: o tipo de todos os parâmetros o tipo do valor que a função retorna todas as variáveis utilizadas internamente no subprograma (variáveis locais) Para utilizar a função no programa principal basta colocar seu nome (identificador) e os parâmetros.

Resumo Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa Estrutura: valor_retornado nome_função ( parâmetros ) { } declarações comandos

Detalhes 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

Declaração de Funções Funções devem ser definidas ou declaradas antes de serem utilizadas A declaração apenas indica a assinatura ou protótipo da função: valor_retornado nome_função(declaração_parâmetros); Menor função possível: void faz_nada( void ) {}

função DEFINIÇÃO DE FUNÇÃO Exemplo - Função Fatorial real FAT(declaração do tipo do parâmetro X) início da função //declaração das variáveis utilizadas no subprograma P 1 para I de 1 até X faça P P * I fim para return(p); fim da função

função DEFINIÇÃO DE FUNÇÃO tipo do valor que a função retorna Exemplo - Função Fatorial real FAT(declaração do tipo do parâmetro X) início da função //declaração das variáveis tipo do parâmetro utilizadas no subprograma NOME DA P FUNÇÃO 1 PARÂMETRO FORMAL para I de 1 até X quando a função faça P P * I fim para return(p); fim da função for utilizada, este parâmetro recebe um valor real lido ou atribuído no programa principal

função DEFINIÇÃO DE FUNÇÃO Exemplo - Função Fatorial real FAT(declaração do tipo do parâmetro X) início da função //declaração das variáveis utilizadas no subprograma P 1 para I de 1 até X faça P P * I fim para return(p); fim da função Declarações relativas às variáveis do algoritmo

função DEFINIÇÃO DE FUNÇÃO Exemplo - Função Fatorial real FAT(declaração do tipo do parâmetro X) início da função //declaração das variáveis utilizadas O no número subprograma para o P 1 qual é calculado para I de 1 até X o fatorial entra faça P P * I como parâmetro fim para return(p); fim da função NÃO PRECISA SER LIDO DENTRO DA FUNÇÃO

DEFINIÇÃO DE FUNÇÃO Exemplo - Função Fatorial função real FAT(declaração do tipo do parâmetro X) início da função O resultado do cálculo do fatorial deve ser retornado para o programa que chamou a função. declaração das variáveis utilizadas no subprograma P 1 para I de 1 até X faça P P * I fim para return(p); fim da função

Exercício Implemente a função fatorial.

Passagem de Parâmetros em C os argumentos para uma função são, via de regra, 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. }

Passagem de Parâmetros como, então, mudar o valor de uma variável? passagem de parâmetro por referência enviar o endereço do argumento para a função

Passagem de Parâmetros Passagem por valor Passagem por referência arg func_call (arg) Cópia de arg enviado para a função arg func_call (* arg) Endereço de arg enviado para a função def_função (arg) arg def_função (* arg) (* arg)

Passagem de Parâmetros Passagem por referência: 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 = 10. }

Prática: função troca Fazer uma função troca(px, py) que recebe como parâmetros 2 ponteiros para inteiros e troca o conteúdo deles ex: int x = 10, y = 20; troca(&x, &y); printf( x=%d y=%d, x, y) => x=20 y=10

Prática: função troca void troca (int *px, int *py) { int temp; px: py: } temp=*px; *px=*py; *py=temp; x: y:

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;

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 */

Ex: Concatena Strings char *concatena( char cabeca[], char cauda[] ) { int i, j; } for (i = 0; cabeca[i]!= '\0'; i++); for (j = 0; (cabeca[i] = cauda[j])!= '\0'; i++, j++); cabeca[i] = '\0'; return cabeca;

Exemplo (cont.) int main( ) { char nome[80] = "Santos"; char sobrenome[] = " Dumont"; printf( "O nome é %s.\n", concatena( nome, sobrenome ) ); return 0; } ==> Santos Dumont

Prática: Localiza char em string Fazer uma função que procura um caracter em um string e retorna o seu endereço caso o encontre, senão retorna NULL (ponteiro nulo) Ex: char *achachar (char *str, char c) {...} char str[] = abcd5678 ; achachar(str, c ); ==> retorna endeço do terceiro caracter do string: &str[2]

Achachar char *achachar (char *str, char c) { char *pc = str; } while (*pc!= c && *pc!= '\0') pc++; return *pc? pc : NULL;

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 );

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, ultimo_arg_def ): inicia o ponteiro ap fazendo-o apontar para o primeiro argumento da lista, ou seja, o primeiro argumento depois de ultimo_arg_def. ultimo_arg_def é o nome do último argumento especificado no declaração da função

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

Exemplo Parâmetros Variáveis #include <stdio.h> #include <stdlib.h> #include <stdarg.h> int sum( int no_args,... ) { } va_list ap; int result = 0, i; va_start( ap, no_args ); for( i = 1; i <= no_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

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

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

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