Buscar

04 - funcoes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 35 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 35 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 35 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Italo Valcy Programação em C, 2013.1
Programação C
Italo Valcy <italo@dcc.ufba.br>
Aula 04 – Funções
Italo Valcy Programação em C, 2013.1 2 / 35
Todo o material aqui disponível pode, posteriormente, ser utilizado sobre os termos da:
Creative Commons License: 
Atribuição - Uso não comercial - Permanência da Licença
http://creativecommons.org/licenses/by-nc-sa/3.0/
Licença de uso e distribuição
Este curso foi baseado no curso “Algoritmos e Programação de
Computadores” do prof. Centoducatte, da UNICAMP, disponível
em <http://www.ic.unicamp.br/~ducatte/mc102/mc102.html>, e 
nas aulas de prof. Luciano Oliveira.
Italo Valcy Programação em C, 2013.1 3 / 35
Funções
Italo Valcy Programação em C, 2013.1 4 / 35
Funções
Funções são blocos de código que agrupam 
sequências de operações que, atrelados a um 
“nome”, podem ser invocados em todo o 
programa, de forma que tal sequência possa ser 
executada
Italo Valcy Programação em C, 2013.1 5 / 35
Funções
Reaproveitamento de código
Evitar repetição de código ao longo do 
programa
Facilitar alterações de um trecho de código
Evitar que blocos de código fiquem muito 
grandes e difíceis de entender
Facilitar a leitura do fonte
Separar o programa em blocos, que possam ser 
compreendidos separadamente
Motivação
Italo Valcy Programação em C, 2013.1 6 / 35
Funções
Procedimento: agrupa um conjunto de instruções
Função: mesmo que procedimento, porém retorna 
um valor!
Exemplo:
Em C, consideraremos tudo como Função
Procedimentos serão funções que retornam “vazio”
Funções vs Procedimentos
void cumprimenta() {
   char nome[30];
   scanf(“%29[^\n]”,&nome);
   printf(“Ola %d!\n”, nome);
}
int quadrado(int x) {
   int x2 = x*x;
   return(x2);
}
Italo Valcy Programação em C, 2013.1 7 / 35
Funções
Funções da biblioteca padrão do C:
printf() 
scanf() 
getchar() 
gets() 
putchar() 
strcmp() 
strlen()
...
Funções em C
Italo Valcy Programação em C, 2013.1 8 / 35
Funções
Forma geral:
Funções que não retornam nenhum valor, 
devem ser do tipo void.
Não é possível definir uma função dentro de 
outra
tipo_retorno nome_da_funcao(tipo_param nome_param, ...) {
// comandos
   return (valor);
}
Funções em C
Italo Valcy Programação em C, 2013.1 9 / 35
Funções
Após fazer seu processamento, as funções 
podem necessitar retornar um valor ou 
resultado.
Exemplo:
quadrado(4) => 16
Tipos de retorno:
int, float, double, char, void
O tipo void é usado quando a função não deve 
retornar nada. Ex: printf()
Valor de retorno
Italo Valcy Programação em C, 2013.1 10 / 35
Funções
O retorno de uma função é definido pelo 
comando return. Ex.:
Provoca uma saída imediata da função 
chamadora
Valor de retorno: comando return
...
int quadrado(int x) {
return x*x;
}
...
Italo Valcy Programação em C, 2013.1 11 / 35
Funções
Exemplo de função para calcular o quadrado 
de um inteiro:
#include <stdio.h>
int quadrado(int x) {
return x*x;
}
int main() {
int numero;
printf(“Digite um numero: ”);
scanf(“%d”, &numero);
printf(“O quadrado de %d e' %d”, numero, quadrado(numero));
}
Funções em C
Italo Valcy Programação em C, 2013.1 12 / 35
Funções
Em C, todas as funções devem ser definidas 
antes da função main().
O nome da função DEVE ser ÚNICO (dentre as 
outras funções e variáveis)
A mesma regra de nomenclatura de variáveis é 
aplicada à nomenclatura de funções.
Funções em C
Italo Valcy Programação em C, 2013.1 13 / 35
Funções
Na chamada de uma função, o tipo e 
quantidade de parâmetros devem acordar com 
sua definição
A comunicação com a função é feita através 
dos argumentos e parâmetros
Na função, os parâmetros são como variáveis 
locais
Parâmetros de funções
Italo Valcy Programação em C, 2013.1 14 / 35
Funções
Parâmetros de funções:
Vetor como parâmetro:
int myfunction(char *vetor_de_char);
Parâmetros de funções
Italo Valcy Programação em C, 2013.1 15 / 35
Funções
Exercício: fazer uma função, pot(x,y), para 
calculo da potência de um número x por y (xy )
Não é permitido usar a biblioteca math.h
Exercícios
Italo Valcy Programação em C, 2013.1 16 / 35
Funções
Todo programa em C, deve SEMPRE possuir a 
função main() em seu código, independente 
das outras funções.
Diversas formas possíveis:
   int main () { ... }
   main () { ... }
   int main(int argc, char **argv) { ... }
A função main
#include <stdio.h>
int main() {
// comandos...
return 0;
}
Italo Valcy Programação em C, 2013.1 17 / 35
Funções
A função main: argc e argv
Programa
Argumentos
Italo Valcy Programação em C, 2013.1 18 / 35
Funções
É possível passar parâmetros para seu programa, via 
linha de comando (ou prompt/cmd do Windows):
    prompt$ ./soma 10 15
    => 25
Parâmetros são separados por espaço
Use aspas para fazer o escape
Todos os parâmetros são considerados como string
Use as funções de conversão (atoi(), atof(), etc.)
Internamente no seu programa:
argc e argv
A função main: argc e argv
Italo Valcy Programação em C, 2013.1 19 / 35
Funções
argc quantidade de argumentos (> 1)
argv vetor de argumentos (strings)
Todo programa possui no mínimo um argumento: o 
nome do programa!
#include <stdio.h>
int main(int argc, char **argv){
   if (argc < 2) {
      printf("Usage: %s <NOME>\n", argv[0]);
      return 1;
   }
   printf("Ola, %s\n", argv[1]);
   return 0;
}
A função main: argc e argv
Italo Valcy Programação em C, 2013.1 20 / 35
Funções
Exemplo: imprimir todos os argumentos:
#include <stdio.h>
int main(int argc, char **argv) {
   int i;
   for (i=0; i<argc; i++) {
      printf("parametro #%d: %s\n",i, argv[i]);
   }
   return 0;
}
A função main: argc e argv
~> /tmp/eg­args argumento­1 453 arg sep1 "arg sep2"
parametro #0: /tmp/eg­args
parametro #1: argumento­1
parametro #2: 453
parametro #3: arg
parametro #4: sep1
parametro #5: arg sep2
Saída:
Italo Valcy Programação em C, 2013.1 21 / 35
Funções
Exercício: fazer um programa para somar dois 
números fornecidos vinha linha de comando:
Dica: consulte a referência da função atoi() em 
<http://www.cplusplus.com/reference/clibrary/> 
A função main: argc e argv
Italo Valcy Programação em C, 2013.1 22 / 35
Funções
Funções recursivas
Recursão é o processo repetitivo 
no qual a função chama ela 
própria
Sequência de Fibonacci (mat.):
F(n) = F(n-1) + F(n-2)
F(0) = 0 ; F(1) = 1
Solução recursiva:
Problema decomposto: top/down
Problema resolvido: bottom/up
Italo Valcy Programação em C, 2013.1 23 / 35
Funções
Funções recursivas (fatorial)
Exemplo clássico:
Decomposição fatorial
Italo Valcy Programação em C, 2013.1 24 / 35
Funções
Funções recursivas (fatorial)
Exemplo clássic (fatorial.c):
#include <stdio.h>
int fatorial(int num) {
    if (num<=1)
        return 1;
    else
        return num*fatorial(num­1);
}
int main() {
    int x;
    scanf("%d", &x);
    printf("%d\n", fatorial(x));
    return 0;
}
Italo Valcy Programação em C, 2013.1 25 / 35
Funções
Toda função em C precisa ser declarada antes 
de ser usada
É possível separar funções em arquivos 
diferentes (bibliotecas)
Declaração vs Definição
A declaração pode ser feita através do 
protótipo da função
Localização das funções no fonte
Italo Valcy Programação em C, 2013.1 26 / 35
Funções
Protótipo de função
Protótipo: trecho de código que especifica:
Tipo de retorno da função
Nome da função
Tipo dos argumentos
Exemplo:
void funcao1(int a, floar b, char *mystr);
int printf ( const char * format, ... );
Italo Valcy Programação em C, 2013.1 27 / 35
Funções
Protótipo de função (exemplo)
#include <stdio.h>
int soma(int a, int b);
int mult(int a, int b);
int main() {
   int x, y;
   printf("Digite x y: ");
   scanf("%d %d",&x, &y);
   printf("%d + %d = %d\n",x,y,soma(x,y));
   printf("%d * %d = %d\n",x,y,mult(x,y));
}
int soma(int a, int b) {
   return a + b;
}
int mult(int a, int b) {
   return a * b;
}
Italo Valcy Programação em C, 2013.1 28 / 35
Funções
Arquivos de header (.h)
Já que podemos declarar a função (protótipo) e 
só defini-la depois...Podemos separar as declarações/definições 
das funções em arquivos diferentes!
Criação de bibliotecas
Uso da diretiva #include
Os códigos objetos devem ser ligados ao 
executável em tempo de compilação
Italo Valcy Programação em C, 2013.1 29 / 35
Funções
Arquivos de header (.h)
Exemplo: soma-mult separado em arquivos
matematica.h
#ifndef _MATEMATICA_H_
#define _MATEMATICA_H_
// declaracao de tipos
int soma(int a, int b);
int mult(int a, int b);
#endif
Italo Valcy Programação em C, 2013.1 30 / 35
Funções
Arquivos de header (.h)
Exemplo: soma-mult separado em arquivos
matematica.c
int soma(int a, int b) {
   return a + b;
}
int mult(int a, int b) {
   return a * b;
}
Italo Valcy Programação em C, 2013.1 31 / 35
Funções
Arquivos de header (.h)
Exemplo: soma-mult separado em arquivos
soma­mult.c
#include <stdio.h>
#include "matematica.h"
int main() {
   int x, y;
   printf("Digite x y: ");
   scanf("%d %d",&x, &y);
   printf("%d + %d = %d\n",x,y,soma(x,y));
   printf("%d * %d = %d\n",x,y,mult(x,y));
   return 0;
}
Italo Valcy Programação em C, 2013.1 32 / 35
Funções
Arquivos de header (.h)
O processo de compilação:
Italo Valcy Programação em C, 2013.1 33 / 35
Funções
Arquivos de header (.h)
O processo de compilação:
Na linha de comando:
gcc -c matematica.c
gcc -c soma-mult.c
gcc matematica.o soma-mult.o -o soma-mult
matematica.c
soma­mult.c
matematica.o
soma­mult.o
soma­mult
Italo Valcy Programação em C, 2013.1 34 / 35
Exercício
Exer04 (main.c, busca-binaria.h e busca-binaria.c): 
Escrever um programa que faz busca binária de um 
número X, informado pelo usuário, em um vetor de valores 
de uma P.A., cujos parâmetros serão fornecidos pelo 
usuário (A1, R e N, com 1<=N<=200). A busca deve ser 
implementada como uma função, definida em um arquivo 
separado da função main(). O programa imprimir na saída 
padrão a quantidade de passos (comparações com uma 
posição do vetor) necessários para encontrar (ou não) o 
número X.
DICA: para navegar nos sub-vetores, use indices esq e dir
Italo Valcy Programação em C, 2013.1 35 / 35
Exercício
Exer04: Exemplos
Entrada1:
10 3 8
15
Saida1:
3
Entrada2:
0 2 9
14
Saida2:
3
	Slide 1
	Slide 2
	Slide 3
	Slide 4
	Slide 5
	Slide 6
	Slide 7
	Slide 8
	Slide 9
	Slide 10
	Slide 11
	Slide 12
	Slide 13
	Slide 14
	Slide 15
	Slide 16
	Slide 17
	Slide 18
	Slide 19
	Slide 20
	Slide 21
	Slide 22
	Slide 23
	Slide 24
	Slide 25
	Slide 26
	Slide 27
	Slide 28
	Slide 29
	Slide 30
	Slide 31
	Slide 32
	Slide 33
	Slide 34
	Slide 35

Outros materiais