Buscar

Aula14_Funcao_Parte1

Prévia do material em texto

IF62A – Técnicas de ProgramaçãoIF62A – Técnicas de Programação
RELEMBRANDO: Aula 13: Função
Prof.: Alexandre Rossi Paschoal
Turmas: ENCOM-C21/22
 
Aula 13
Função
 
Até agora, nossos programas
Função main (int main)
Instruções
 
Exemplo
#include <stdio.h>
main()
{
 int k, n;
 float h = 0;
 scanf("%d", &n);
 for (k = n; k >= 1; k = k - 
1) h = h + 1.0 / k;
 printf("%8.4f\n", h);
}
Função main (int main)
Instruções
 
Função
• OBS 1: TODA função tem um nome
– Exemplo: função main ;-)
• OBS 2: Toda função tem um tipo (void é um tipo).
• OBS 3: Apenas a função void não retorna valor, por 
quê ? (difícil hein ;-)
 
Função - Sintaxe
tipo_dado nome_funcao (argumentos)
{
         intruções
}
Exemplo:
 int soma (int x, int y) return (x+y);
 
Exemplo - Execução
Função main
Função soma
Comandos
Call soma
Comandos
Call soma
Comandos
 
Exemplo - Execução
Função main
Função soma
Comandos
Call soma
Comandos
Call soma
Comandos
 
Exemplo - Execução
Função main
Função soma
Comandos
Call soma
Comandos
Call soma
Comandos
 
Exemplo - Execução
Função main
Função soma
Comandos
Call soma
Comandos
Call soma
Comandos
Executa 
Instruções
 
Exemplo - Execução
Função main
Função soma
Comandos
Call soma
Comandos
Call soma
ComandosRetorna
(void não
Retorna 
nada)
 
OBS
• Perceba que:
– Função pode:
• Receber (Passagem de parâmetros - 
Argumentos)
• e retornar valores.
• Conforme comentado:
– Todos os tipos, tirando o void, retorna um valor.
 
Função - Argumentos
• Quando é feito a chamada de uma função
• Podemos passar argumentos para a função
– Argumentos = lista de “valores”
• Lista pode ser vazia
• Lista aparece entre parênteses após o nome da função
• Ex. 
 
 int Soma (int x, int y) {
 
Função - 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
 15
Passagem de Parâmetros
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
}
int main( ) {
 int i = 2;
 loop_count( i );
 printf( "\nEm main, i = %d.\n", i ); ==> i = 2.
 return 0;
}
 16
Passagem de Parâmetro
• E se eu quiser alterar ele diretamente o 
parâmetro original fornecido?
• Passagem de parâmetro por referência!!
• Mas como??
 17
Passagem de Parâmetro - 
Referência
• É a 2a forma de passar parâmetro para uma 
sub-rotina (função)
• Neste, o endereço de um argumento é 
fornecido no parâmetro e não uma cópia de 
seu valor.
• Significa que qualquer alteração, muda o 
parâmetro inicialmente fornecido
 18
Exemplo
void swap(int *x, int *y) {
 int temp;
 temp = *x;
 *x = *y;
 *y = temp;
}
void swap(int *x, int *y);
void main(void)
{
 int i, j;
 i = 10; j = 20;
printf(“%d, %d\n”, i, j);
 swap(&i, &j);
printf(“%d, %d\n”, i, j);
}
 19
Exemplo – Passagem por Referência
void swap(int *x, int *y) {
 int temp;
 temp = *x;
 *x = *y;
 *y = temp;
}
void swap(int *x, int *y);
Void main(void)
{
 int i, j;
 i = 10; j = 20;
 swap(&i, &j);
}
 20
Protótipo
void swap(int *x, int *y) {
 int temp;
 temp = *x;
 *x = *y;
 *y = temp;
}
void swap(int *x, int *y);
Void main(void)
{
 int i, j;
 i = 10; j = 20;
 swap(&i, &j);
}
Protótipo da função
 21
Escopo das variáveis: local
void swap(int *x, int *y) {
 int temp;
 temp = *x;
 *x = *y;
 *y = temp;
}
void swap(int *x, int *y);
Void main(void)
{
 int i, j;
 i = 10; j = 20;
 swap(&i, &j);
}
 22
Função swap não retorna valor 
algum
void swap(int *x, int *y) {
 int temp;
 temp = *x;
 *x = *y;
 *y = temp;
}
void swap(int *x, int *y);
Void main(void)
{
 int i, j;
 i = 10; j = 20;
 swap(&i, &j);
}
 
Função – Retorna Valor
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
 24
Exercício
• 1-) Faça as 4 operações básicas, com 
inteiros, usando agora função.
• 2-) Faça uma função que dado um número, 
calcule o cubo dele e retorne o valor
• 3-) Dado um número inteiro, faça um 
programa com uma função que retorna 1 se 
for par e 0 caso contrário.
 25
Exercícios
• 4-)(a) Construa uma função encaixa que dados dois inteiros positivos a e 
b verifica se b corresponde aos últimos dígitos de a.
• Ex.: 
• a b 
• 567890 890 => encaixa
• 1243 1243 => encaixa
• 2457 245 => não encaixa
• 457 2457 => não encaixa
• (b) Usando a função do item anterior, faça um programa que lê dois 
inteiros positivos a e b e verifica se o menor deles é segmento do outro.
• Exemplo:
• a b 
• 567890 678 => b é segmento de a
• 1243 2212435 => a é segmento de b
• 235 236 => um não é segmento do outro
 26
Exercício
• 5-) Um conjunto pode ser representado por 
um vetor da seguinte forma: V[0] é o tamanho 
do conjunto; V[1], V[2], etc. são os elementos 
do conjunto (sem repetições).
• Faça uma função chamada intersecção que 
dados dois conjuntos de números inteiros A e 
B, constrói um terceiro conjunto C que é a 
intersecção de A e B. Lembre-se de que em 
C[0] a sua função deve colocar o tamanho da 
intersecção. 
 27
Exercício
• Faça uma função União do exercício 5
• Idem ao anterior, Fazer União e mostrar de 
forma ordenada os números
 28
Exercícios
• 6. Faça um programa que contenha um menu contendo 
as seguintes opções
• (a) Escreva uma função que recebe uma matriz real 
Amxn e determina a sua transposta (Se B é a matriz 
transposta de A então aij = bji).
• (b) Multiplicação de número real por matriz
• (c) Dado duas matrizes, a função retorna se elas são 
iguais ou não
 
 29
Exercício
• 7-) Faça um programa que tenha as seguintes funções:
• LerMatriz – Tamanho Nx2 (usuário informa o N).
• OrdenaMatriz – Ordernar pela coluna 0 (zero).
• MostraMatriz – Em formato Nx2
• Agrupamento – Mostra qtde, quais grupos, elementos e 
tamanho máximo coordenada.
• ExcluirElem – Exclui elemento de qq posição da matriz
• InserirElem – Insere elemento em qq posição da Matriz
• Os dados de entradas serão coordenadas, exemplo: 
• 1 1000
• 99 55600
 
Créditos - Aula
• Prof. Alexandre Rossi Paschoal
• Profa. Silvana Maria Affonso de Lara
• Prof. João Carlos Giacomin
	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

Continue navegando