Академический Документы
Профессиональный Документы
Культура Документы
Rafael
rafaelbba@gmail.com
Programas simples:
sequência de instruções para resolver um problema, formadas por
estruturas de controle (sequencial, seleção e repetição).
Programas complexos:
- Variedade de situações a serem resolvidas
Exemplo:
Sintaxe da Definição:
tipo nome_da_função (lista_de_parâmetros){
declaração de variáveis;
comandos;
return (expressão); /*opcional*/
}
- o return serve para indicar o valor a ser retornado, se
for o caso.
Exemplo:
int soma (int a, int b){
int resultado;
resultado = a + b;
return (resultado);
}
Funções
- declaradas localmente:
variáveis locais da unidade
- declaradas globalmente:
variáveis globais do programa
-Parâmetros:
- -> Existem dois tipos de passagem de parâmetros:
a) Passagem por valor
b) Passagem por referência
Tipos de Passagem
1) Por Valor
o valor do parâmetro original é atribuído ao parâmetro
na função
Esquema da memória
- representação simplificada
- nomes à esquerda representam os nomes das variáveis
números à direita representam as posições da memória
(endereços) Pilha
b 85.3 206
a 4 202
Fatorial (Passagem por Valor) O valor de n de main não é
#include <stdio.h> alterado pelas operações
int fat (int n); realizadas em n local dentro da
main( ) { função
int n, r;
scanf("%d", &n);
r=fat(n);
printf("Fatorial de %d = %d\n", n, r);
}
int fat (int n) { A variável n, que representa o
int f=1;
while (n) { parâmetro da função fat, é local
f*=n; a este módulo e não representa
n--; a variável n da função main
}
return f;
}
#include <stdio.h>
int fat (int n);
main( ) {
int n, r;
scanf("%d", &n);
Passagem por Valor r=fat(n);
printf("Fatorial de %d = %d\n", n, r);
}
Passo a passo no Exemplo do Fatorialint fat (int n) {
int f=1;
while (n) {
f*=n;
n--;
}
return f;
}
n 5
fat >
r - r -
n 5 n 5
main > main > main >
f 1 f 120
fat >
n 5 fat >
n 0
r - r - r 120
main >
n 5 main >
n 5 main >
n 5
Potência (Passagem por Valor)
#include <stdio.h>
int potencia (int b, int e);
main( ) {
int p, x, y;
printf("Informe base e expoente\n");
scanf("%d", &x);
scanf(“%d", &y);
p=potencia(x, y);
printf("Resultado = %d\n", p);
}
int potencia(int b, int e){
int i, pot=1;
for (i=1; i<=e; i++)
pot=pot * b;
return pot;
}
Exercícios (NÃO USE VARIÁVEL GLOBAL)
1. Faça um programa que leia dois valores inteiros e crie uma função
para imprimir a diferença entre o primeiro valor e o segundo valor lido.
3. Elabore um programa que leia três números inteiros e crie uma função
que retorne o maior entre eles para ser impresso pelo programa
principal.
2) Por Referência:
o endereço (localização) na memória do parâmetro
de origem é transferido para parâmetro da função e
a função usa o elemento original em suas operações
(mesmo que com um identificador diferente)
permite alterar os valores das variáveis acessando-as
indiretamente
aux - 218
206
py 214 py 206 214
210 px 202 210 px 202 210
troca > troca >
b 8 206 b 8 206 b 8 206
main >
a 5 202
main >
a 5 202
main >
a 5 202
main >
a 5 202
main >
a 8 202
main >
a 8 202
Exemplo
aux -
5 218
py 206 214
px 202 210
troca >
b 5
8 206
a 8
5 202
main >
Vetores e Funções
Vetores e Funções
Relembrando:
- a passagem de vetor como parâmetro é feita sempre por Referência.
- os elementos do vetor nunca são copiados para a função.
Exemplo:
Preencher dois vetores de números reais,
um com 8 posições e um com 6 posições.
Criar uma única função que retorna a média
dos elementos de cada vetor.
Isso é possível?
Exercício
1) Faça um programa que leia um número inteiro do teclado, e implemente
uma função para verificar se esse número é par ou impar.
2) Faça um programa que crie uma matriz 3x3, e crie uma função para o
usuário preencher essa matriz e outra função que devolva a soma da diagonal
principal.