Baixe o app para aproveitar ainda mais
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
Compartilhar