17 - funções e procedimentos em c programação · pdf...
TRANSCRIPT
Unesp – Campus de Guaratinguetá
17 17 -- FunFunçções e Procedimentos em Cões e Procedimentos em CProgramaProgramaçção Modularão Modular
Curso de Programação ComputadoresProf. Aníbal Tavares
Profa. Cassilda RibeiroMinistrado por: Prof. André Amarante
Funções e Procedimentos em C 2
Para a estruturação de programas, utiliza-se o conceito de MODULARIZAMODULARIZAÇÇÃO.ÃO.
ModularizarModularizar um programa consiste em dividi-lo em partes que serão desenvolvidas em separado. Essas partes executam tarefas menores que depois serão acopladas para formar o programa. A cada uma dessas partes chamamos de subprograma.subprograma.
Os subprogramasOs subprogramas permitem uma melhorlegibilidade e manutenibilidadelegibilidade e manutenibilidade do programa
17 17 -- FunFunçções e Procedimentos ões e Procedimentos -- Definições
Funções e Procedimentos em C 3
A forma de modularizar um programa em C é através de FunFunçções e Procedimentos.ões e Procedimentos.
Pode-se então dizer que :FunFunçções e Procedimentos são blocos de cões e Procedimentos são blocos de cóódigo digo
que podem ser nomeados e chamados de dentro de que podem ser nomeados e chamados de dentro de um programa.um programa.
Programas grandes e complexos devem ser construídos bloco a bloco.
17 17 -- FunFunçções e Procedimentos ões e Procedimentos -- DefiniDefiniççõesões
Funções e Procedimentos em C 4
17 17 -- FunFunçções e Procedimentos ões e Procedimentos -- DefiniDefiniççõesões
Utilidade de funUtilidade de funçções: ões: Um função pode ser empregada para evitar repetição de código e assim facilitar a manutenção do código contido no programa.
Na linguagem C, de modo geral, as Funções e Procedimentos são chamadas dentro da Função Principal (mainmain()() ) ou ainda por outras funções.
A declaradeclaraçção da funão da funççãoão deve vir antes de seu uso.
Funções e Procedimentos em C 5
17 - Funções e Procedimentos - Definições
A declaração de uma Função em C é constituída de um cabeçalho e de um corpo. O cabeçalho identifica a Função através de um nome, e o corpo contém as declarações dos objetos locais, além de comandos e estruturas do procedimento.
Uma função em C tem a seguinte forma geral:
tipo_de_retorno nome_função ( parâmetros ){declaraçõescomandos}
Corpo da FunCorpo da Funççãoão
Funções e Procedimentos em C 6
O tipo-de-retorno é o tipo de valor que a função vai retornar.
O default é o tipo int, ou seja, uma função para qual não declaramos o tipo de retorno é considerada como retornando um inteiro.
A declaração de parâmetros é uma lista de variáveis com a seguinte forma geral:
tipo nome1, tipo nome2, ... , tipo nomeNRepare que o tipo deve ser especificado para cada uma
das N variáveis de entrada. É na declaração de parâmetros que informamos ao compilador quais serão as entradas da função (assim como informamos a saída no tipo-de-retorno).
17 - Funções e Procedimentos - Definições
Funções e Procedimentos em C 7
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 )
Um ProcedimentoUm Procedimento é função que não retorna nada. Ela é definida colocando-se o tipo void como valor retornado.
Pode-se colocar void entre parênteses se a função não recebe nenhum parâmetro
O corpo da funcorpo da funççãoão é a sua alma. É nele que as entradas são processadas, saídas são geradas ou outras coisas são feitas.
17 - Funções e Procedimentos - Definições
Funções e Procedimentos em C 8
17 17 -- FunFunççõesões e Procedimentos -- DeclaraDeclaraçção de ão de FunFunççõesões
O cabeçalho de uma função NUNCA NUNCA deve ser seguido de ponto e vírgula.
Dentro do corpo de uma função pode-se escrever qualquer instrução ou conjunto de instruções da linguagem C. Em C não se pode definir funções dentro de funções.
A comunicação entre a função e o programa principal (main) se faz através dos argumentosque são enviados a ela e dos parâmetrospresentes na função.
Funções e Procedimentos em C 9
17 17 -- FunFunççõesões e Procedimentos -- DeclaraDeclaraçção de Funão de Funççõesões
É o programa principal que controla o fluxo de execução do programa como um todo.
Quando o programa principal chama a função; através do seu nome; o controle do fluxo de execução do programa passa para a função. No momento que termina a execução da função o controle do fluxo de execução retorna para o programa principal.
Funções e Procedimentos em C 10
17 17 -- FunFunççõesões e Procedimentos -- UtilizaUtilizaçção de Funão de Funççõesões
Exemplo 171: Fazer um programa que imprima a seguinte saída na tela:
++++++++=======++++++++
Para fazer este programa sem a utilização do conceito de modularidade, isto é, sem usar funções, é necessário fazer um laço para imprimir cada uma das linhas.
Os dois programas mostrados a seguir resolvem este problema sem função e com função.
Funções e Procedimentos em C 11
#include <stdio.h>main() {
int i; // Imprime linha com 3 +.for (i=0; i < 3; i++)
printf(“+”);printf(“\n”);// Imprime linha com 5 +.for (i=0; i < 5; i++)
printf(“+”);printf (“\n”);// Imprime linha com 7 =.for (i=0; i < 7; i++)
printf(“=”);printf (“\n”);
Exemplo 17.1 – Sem usar Função
17.1 17.1 -- FunFunçções e Procedimentos: ões e Procedimentos: UtilizaUtilizaçção de Funão de Funççõesões
// Imprime linha com 5 +.for (i=0; i < 5; i++)
printf(“+”);printf (“\n”);
// Imprime linha com 3 +.for (i=0; i < 3; i++)
printf(“+”);printf(“\n”);
}
Continuação...
Observe que foi necessário repetir duas vezes o for para imprimir 3+ e duas vezes o for para imprimir 5+
Funções e Procedimentos em C 12
17.1 17.1 -- FunFunçções e Procedimentos: ões e Procedimentos: UtilizaUtilizaçção de Funão de Funççõesões
#include <stdio.h>void imprime_Linha_3 (){ int i;
for(i=0;i < 3; i++) printf(“+”);printf (“\n”);}
void imprimeLinha_5(){ int i;
for(i=0; i < 5; i++) printf(“+”);printf (“\n”);}
void imprimeLinha_7(){ int i;
for(i=0; i < 7; i++) printf(“=”);printf (“\n”);}
main() {imprimeLinha_3();
imprimeLinha_5();imprimeLinha_7();imprimeLinha_5();imprimeLinha_3();
}
Exemplo 17.1 – com FunçãoObserve que:Observe que:1.1. com o uso de funções, não é
preciso repetir os comandos for.
2. O que se repete são aschamadas das funções.
3. As funções são chamadas dentro do main.
4. As funções utilizadas não têm parâmetros de entrada nem de saída (procedimentos).
5. O void serve para indicar que a função não tem parâmetro de saída.
chamadas
das funções
no main.
Funções e Procedimentos em C 13
17.1 17.1 -- FunFunçções e Procedimentos: ões e Procedimentos: UtilizaUtilizaçção de parâmetros. ão de parâmetros.
O programa doExemplo 17.1 pode seraperfeiçoado se forem utilizados parâmetrosde entrada. Pode-se então fazeruma função maisgenérica, por exemplo, a função imprimeCh.
Exemplo 17.2 – Com parâmetros#include <stdio.h>void imprimeCh(char ch, int n){
int i;for(i=0;i < n; i++)
printf(“%c”,ch);printf(“\n”);
}main() {
imprimeCh(‘+’,3);imprimeCh(‘+’,5);imprimeCh(‘=’,7);imprimeCh(‘+’,5);imprimeCh(‘+’,3);
}
chamada das
funções com
argumentos
Nos parâmetros são passados: o caractere que será utilizado na função e o numero de linhas n, que serão impressas.
Funções e Procedimentos em C 14
Relembrando: a comunicação entre a função e o programa principal (main) é feita através dos
argumentosargumentos e dos parâmetrosparâmetros.
Na declaração da função é necessário definir o tipo de cada parâmetroparâmetro.
Os argumentosargumentos da função têm que ser compatíveis com os tipos declarados nos parâmetros.
17.1 17.1 -- FunFunçções e Procedimentos: ões e Procedimentos: UtilizaUtilizaçção de parâmetros. ão de parâmetros.
Funções e Procedimentos em C 15
No exemplo 17.2, os parâmetrosparâmetros passados no cabeçalho da função são:
void imprimeCh(char ch, int n).
Os argumentos são colocados na chamada da função imprimeCh(‘+’,3);
O primeiro parâmetro é a variável ch do tipo char, e ele é compatível com o primeiro argumento ‘+’ segundo parâmetro é a variável n do tipo int e ele é compatível com o número 3.
Relembrando: Uma função que não retorna nada (void ) é um procedimentoprocedimento. Logo o, exemplo 17.1 é um procedimentoprocedimento
17.1 17.1 -- FunFunçções e Procedimentos: ões e Procedimentos: UtilizaUtilizaçção de parâmetros. ão de parâmetros.
Funções e Procedimentos em C 16
ExemploExemplo 17.3: 17.3: Fazer um programa para verificar se um dado número é par ou não. Para isso, utilize uma função com passagens de parâmetros.
17.1 17.1 -- FunFunçções e Procedimentos: ões e Procedimentos: UtilizaUtilizaçção de parâmetros. ão de parâmetros.
#include <stdlib.h>#include <stdio.h>int verifPar(int k){ if (k%2 == 0) return 1;
else return 0;}main(){ int num, resultado;
printf("Digite um numero ");scanf("%d",&num);resultado = verifPar(num);if(resultado == 1)
printf("\nO numero que voce digitou eh par\n");else
printf("\nO numero que voce digitou nao eh par\n");system("PAUSE");
}
A função verifPar retorna um número inteiro. É por esta razão que foi colocado o int antes do nome da função.
O número é retornado através do comando return.
O número retornado éarmazenado na variável resultado
Funções e Procedimentos em C 17
É passado para a função int verifPar(int k) uma variável (k) do tipo inteiro.
A função recebe esta variável, verifica se ela é par ou não e devolve ao programa principal o número 1 se k for par e o número zero se k for ímpar.
A função utiliza o comando return para devolver o valor. O tipo do valor devolvido é que define o tipo da função.
A função int verifPar(int k) é então uma função do tipo inteiro, porque o valor devolvido é inteiro.
O programa principal armazena o valor recebido na variável resultado.
ObservaObservaçções sobre o exemplo 17.3ões sobre o exemplo 17.3
17.1 17.1 -- FunFunçções e Procedimentos: ões e Procedimentos: UtilizaUtilizaçção de parâmetros. ão de parâmetros.
Funções e Procedimentos em C 18
VariVariááveis Locais :veis Locais : são variáveis declaradas dentro de um subprograma.
Elas só podem ser manipuladas dentro do subprograma que as declarou. Logo, elas não são visíveis em nenhuma outra parte do programa.
17.1 17.1 -- FunFunçções e Procedimentos: ões e Procedimentos: Conceitos ImportantesConceitos Importantes
No Exemplo 17.4 mostrado a seguir, a variável a é uma variável local e qualquer alteração que se faça nela, dentro da função mudaA, não será visível dentro do programa principal, main( ).
Funções e Procedimentos em C 19
17.2 17.2 -- FunFunçções e Procedimentos: ões e Procedimentos: VariVariáável Localvel Local
#include <stdio.h> Função mudaA().
void mudaA(){
int a;a = 4;printf(“MudaA, a = %d \n”,a);
} Função Principal.main() { int a;
a = 2;printf(“main, a = %d \n”,a);mudaA();printf(“main, a = %d \n”,a);
}
Exemplo 17.4 – Variável Local
main, a = 2
Na tela
mudaA, a = 4
Na tela
Observe que o valor da variável a foi alterado em mudaA(), mas esta alteração não foirepassada para o main.
main, a = 2
Na tela
Funções e Procedimentos em C 20
17.2 17.2 -- FunFunçções e Procedimentos: ões e Procedimentos: VariVariáável Localvel Local
Na realidade a variável a da função mudaA() NÃO éigual a variável a do main. O programa trabalha com as duas variáveis independentemente.
Com a variável local, duas funções diferentes, por exemplo f1 e f2 podem ter o mesmo nome de variável, para armazenar dados diferentes, pois neste caso quando a função f1 está sendo executada o valor da variável fica “oculto” em f2 e vice-versa.
Funções e Procedimentos em C 21
Variáveis globais: são variáveis declaradas no início do programa principal (no corpo do main).
AsAs varivariááveis globaisveis globais podem ser manipuladas durante toda podem ser manipuladas durante toda a execua execuçção do programa, Assim qualquer alteraão do programa, Assim qualquer alteraçção que se ão que se fafaçça numa varia numa variáável global irvel global iráá refletir em todas as funrefletir em todas as funçções ões do do programa.programa.
17.1 17.1 -- FunFunçções e Procedimentos: ões e Procedimentos: VariVariáável Globalvel Global
A seguir A seguir éé mostrado um exemplo utilizando mostrado um exemplo utilizando varivariáável global vel global
Cuidado, pois ao se definir uma variável global, ela não poderá ser redeclarada em outra função do programa, porque isto acarreta um erro de compilação
Funções e Procedimentos em C 22
17.2 17.2 -- FunFunçções e Procedimentos: ões e Procedimentos: VariVariáável Globalvel Global
#include <stdio.h>int a; Função mudaA().
void mudaA(){
a = 4;printf(“MudaA, a = %d \n”,a);
}
Função Principal.main() { a = 2;
printf(“main, a = %d \n”,a);mudaA();printf(“main, a = %d \n”,a);
}
Exemplo 17.5 – Variável Global
Observe que a variável a foi declarada no corpo doprograma principal e não dentro da função mudaA, como no exemplo anterior
Quando uma variável édeclarada no corpo domain, ela não pode ser declarada dentro da função.
Funções e Procedimentos em C 23
17.2 17.2 -- FunFunçções e Procedimentos: ões e Procedimentos: VariVariáável Globalvel Global
#include <stdio.h>int a; Função mudaA().
void mudaA(){
a = 4;printf(“MudaA, a = %d \n”,a);
}
Função Principal.main() { a = 2;
printf(“main, a = %d \n”,a);mudaA();printf(“main, a = %d \n”,a);
}
Exemplo 17.5 – Escopo Global
main, a = 2Na tela
mudaA, a = 4Na tela
main, a = 4Na tela
O valor da variável a foi alterado em mudaA() e esta alteração foi passada para a variável a do main(). Mas,deve-se evitar o uso de variáveis globais
Funções e Procedimentos em C 24
Os conceitos de variáveis globais e locais determinam um termo denominado ESCOPO.
VariVariááveis que possuemveis que possuem Escopo GlobalEscopo Global são acessadas por são acessadas por todos as subprogramas que estão contidos em um programatodos as subprogramas que estão contidos em um programa..
Variáveis que possuem Escopo Local são acessadas somente por subprogramas que estão contidos no subprograma.
Depois de terminada a execuDepois de terminada a execuçção de uma funão de uma funçção ão (procedimento), todas as suas vari(procedimento), todas as suas variááveis locais são destruveis locais são destruíídas.das.
17.2 17.2 -- FunFunçções e Procedimentos: ões e Procedimentos: Escopo Local e GlobalEscopo Local e Global
Funções e Procedimentos em C 25
17.2 17.2 -- FunFunçções e Procedimentos: ões e Procedimentos: InstruInstruççãoão ReturnReturn
FunFunçções que retornam um valorões que retornam um valor
Na linguagem C existem várias funções que já estão programadas, como por exemplo a função sqrt(x ) que calcula a raiz quadrada de x, a função sin(x) que calcula o seno(x), etc.
Uma função pode ser responsável por fazer uma determi-nada tarefa e uma vez terminada esta tarefa, ela devolve, como resultado, apenas um valor.
A devolução do resultado é feita através do comando returnreturn, seguido do valor a ser devolvido.
Após o comando return return pode ser colocado qualquer expressão válida em C.
Funções e Procedimentos em C 26
17.2 17.2 -- FunFunçções e Procedimentos: ões e Procedimentos: InstruInstruçção Returnão Return
#include <stdio.h> Função mudaA().
int mudaA(int b){ b = b*b;
printf(“MudaA, a = %d \n”,b);return b;
} Função Principal.main() { int a;a = 2;printf(“main, a = %d \n”,a);a = mudaA(a);printf(“main, a = %d \n” ,a);
}
Exemplo 17.6 – ReturnTipo de retornoTipo de retorno
Tipo de ParâmetroTipo de Parâmetro
Valor a retornarValor a retornar
A variA variáável vel aa recebe o resultado darecebe o resultado dafunfunçção ão mudaAmudaA(a)(a)..
Funções e Procedimentos em C 27
17.2 17.2 -- FunFunçções e Procedimentos: ões e Procedimentos: InstruInstruçção Returnão Return
#include <stdio.h> Função mudaA().
int mudaA(int b){ b = b*b;
printf(“MudaA, a = %d \n”,b);return b;
} Função Principal.main() { int a;a = 2;printf(“main, a = %d \n” ,a);a = mudaA(a);printf(“main, a = %d \n” ,a);
}
Exemplo 17.6 – Return Observe que aqui estamos utilizando variáveis locais, O valorde a foi alterado em mudaA(), e o novo valor de a foi repassado para main() através do return.
MudaA, a = 4
Na tela
main, a = 2Na tela
main, a = 4
Na tela
Funções e Procedimentos em C 28
17.2 17.2 -- FunFunçções e Procedimentos: ões e Procedimentos: InstruInstruççãoão ReturnReturn
Uma função pode conter várias instruções return, return, mas mas apenas uma instruapenas uma instruççãoão return return éé executada.executada.
A devolução do resultado é feita através do comando returnreturn, seguido do valor a ser devolvido.
Após o comando return return pode ser colocado qualquer expressão válida em C.
A instrução returnreturn termina a execução da função (procedimento), e o controle do programa é devolvido ao local onde a função (procedimento) foi invocada.
Funções e Procedimentos em C 29
17.2 17.2 -- FunFunçções e Procedimentos: ões e Procedimentos: InstruInstruççãoão ReturnReturn
Exemplo 17.7 – Fazer um programa que solicite ao usuário dois números e apresente na tela o resultado da sua soma e do dobro de cada um deles. Utilize uma função para calcular a soma e outra para o dobro.
#include <stdlib.h>// Função que devolve a soma
de dois inteirosint soma (int a, int b){
return a+b ; }// Função que devolve o dobro
de qualquer inteiroint dobro (int x){
return 2*x ; }
// Função principal chama as demais.main(){int n, i, total;printf(“Introd. dois numeros”);scanf(“%d%d”,&n,&i);total=soma(n,i);printf(“%d+%d=%d\n”,n,i,total);printf(“2*%d=%d e
2*%d=%d\n”,n,dobro(n), i, dobro(i));
}
Funções e Procedimentos em C 30
17.2 17.2 -- FunFunçções e Procedimentos: ões e Procedimentos: InstruInstruççãoão ReturnReturn
OBS: Uma vez que a função dobro devolve um inteiro o seu resultado pode ser usado dentro de um printf, sendo escrito com o formato de inteiro (%d)
Ao executar este programa teremos na tela o seguinte:
Introd dois numeros: 4 74+7=112*4=8 e 2*7=14
Uma função pode ser invocada dentro de uma outra função. O resultado é o mesmo que se obteria se, em vez da chamada a função aí estivesse o resultado devolvido a esta.
Funções e Procedimentos em C 31
17.2 17.2 -- FunFunçções e Procedimentos: ões e Procedimentos: InstruInstruççãoão ReturnReturn
Exemplo 17.8 Qual seria a saída se acrescentássemos ao programa anterior a seguinte linha:
printf(“%d”,dobro(soma(dobro(2), 3)));
solução:dobro(2) 4soma(dobro(2), 3)) soma(4, 3)) 7dobro(soma(dobro(2), 3))) dobro(soma(4,3)) dobro(7) 14
Então o valor impresso na tela seria 14.
Isto é equivalente a colocar no programa anterior as seguintes linhas:a= dobro(2);b= soma(a, 3));c= dobro(b);printf(“%d”,c);
Funções e Procedimentos em C 32
17.2 17.2 -- FunFunçções e Procedimentos: ões e Procedimentos: Escopo/VetoresEscopo/Vetores
Exemplo 17.9 – Vetores. Fazer um programa, com duas funções sendo que a primeira deve gerar um vetor V com elementos aleatórios num dado intervalo [a,b] e a segunda deve imprimir os elementos do vetor.
#include <stdlib.h>#include <stdio.h>#include <time.h>// Função que atribui elementos // aleatórios para v em [a,b].void geraV(int v[], int n, int
a, int b){ int i;
srand(time(0)); for (i=0; i < n; i++)
v[i] = (rand()%(b-a+1))+a; }
// Função que imprime um vetor.void imprimeV(int v[], int n){int i;
for(i=0; i < n; i++)printf(" [%2d] ",v[i]);
printf("\n"); }// Função principal chama as demais.main(){ int v[10];// Gera vetor com valores em [a,b].geraV(v,10,1,6);imprimeV(v,10);
}
Funções e Procedimentos em C 33
17.2 17.2 -- FunFunçções e Procedimentos: Escopo/Vetoresões e Procedimentos: Escopo/Vetores
OBSERVAOBSERVAÇÇÕES sobre o Exemplo 17.9 ÕES sobre o Exemplo 17.9 –– VetoresVetores1) Quando a função main chama o procedimento geraV, através
da linha:geraV(v,10,1,6);
é passado para o procedimento o valor de n=10 e o intervalo a= 1 e b= 6.
2) O procedimento geraV gera os elementos do vetor v e o devolve para o main. Isto é feito sem usar o comando return. O novo valor de v é utilizado em main().
3) O valor de v retorna para a função main, pois no caso de vetores é passada a referência e não os valores (isto serámelhor entendido com o estudo de ponteiros.)
4) Se a variável v não fosse um vetor ela não retornaria para a função main. Para que ela retornasse seria necessário usar o return e não teríamos um procedimento e sim uma função.
Funções e Procedimentos em C 34
// Função Principal.main(){
float Vetor[60];int n, i, j;printf(“No. elementos de v: ");scanf("%d",&n);printf("Digite elementos de v:");for (i=0; i < n; i++)
scanf("%f",&Vetor[i]);ordenaVetor(Vetor, n);printf("Vetor Ordenado\n");for (i=0; i < n; i++)
printf("%.1f\n",Vetor[i]);system("pause");
}
17.2 17.2 -- FunFunçções e Procedimentos: ões e Procedimentos: Escopo/VetoresEscopo/Vetores
Exemplo 17.10 – Bubble Sort#include <stdio.h>#include <stdlib.h>// Usa o Bubble Sort Aperfeiçoado.void ordenaVetor(float v[], int n ){
int i,j;float tmp;
for (i=0; i < n-1; i++) for (j=0; j < n-i-1;j++)
if (v[j] > v[j+1]){ tmp = v[j];
v[j] = v[j+1];v[j+1] = tmp;
}}
Funções e Procedimentos em C 35
17.2 17.2 -- FunFunçções e Procedimentos: ões e Procedimentos: Escopo/VetoresEscopo/Vetores
OBSERVAOBSERVAÇÇÕESÕES sobre Exemplosobre Exemplo 17.10 17.10 –– BubbleBubble SortSort
1) Neste exemplo o vetor v é lido na função main e a seguir épassado para o procedimento ordenaVetor através da linha:
ordenaVetor(Vetor, n);
2) O procedimento ordenaVetor , ordena os elementos do vetor e o devolve para o main. Isto é feito sem usar o comando return, pois trata-se de um vetor.
3) A seguir o main, imprime o vetor ordenado.
4) Observe também que dentro do procedimento o vetor tem o nome de v e dentro do main o nome é vetor.
Funções e Procedimentos em C 36
// Imprime matriz.void printM(int A[][n]){ int i, j;
for (i=0; i < m; i++){ for (j=0; j < n; j++)
printf("[%2d]",A[i][j]);printf("\n"); }
}// Função Principal.main(){ int i, j;
int A[m][n];geraM(A,1,6);printM(A);
}
17.2 17.2 -- FunFunçções e Procedimentos: ões e Procedimentos: Escopo/MatrizesEscopo/Matrizes
#include <stdio.h>#include <stdlib.h>#include <time.h>const int m = 5;const int n = 4;// Gera matriz com elementos em [a,b].void geraM(int A[][n], int a, int b){ int i, j;
srand(time(0));for (i=0; i < m; i++)
for (j=0; j < n; j++)A[i][j] = (rand()%(b-a+1))+a;
}
Exemplo 17.11 – Matrizes
Funções e Procedimentos em C 37
17.2 17.2 -- FunFunçções e Procedimentos: ões e Procedimentos: Escopo/MatrizesEscopo/Matrizes
OBSERVAOBSERVAÇÇÕES ÕES sobre osobre o Exemplo 17.11Exemplo 17.11-- Matrizes Matrizes
1) Neste exemplo a matriz A é gerada aleatoriamente no procedimento geraM.
2) O procedimento geraM, devolve os elementos de A para o main. Isto é feito através das linhas:
a) void geraM(int A[][n], int a, int b) b) geraM(A,1,6);
Observe que: a linha (a) é o cabeçalho do procedimento geraM e nele estão declaradas: a matriz A (int A[][n]), a variável inteira a (int a) e a variável inteira b (int b). No caso da declaração da matriz énecessário estipular somente o número de colunas, que neste caso én.A linha (b) é a chamada do procedimento dentro do main e as variáveis que estão dentro do parêntese tem uma correspondência direta com as variáveis do cabeçalho.
Funções e Procedimentos em C 38
17.2 17.2 -- FunFunçções e Procedimentos: ões e Procedimentos: Escopo/MatrizesEscopo/Matrizes
3) A seguir o main, envia os elementos de A para o procedimento printM que o imprime. Isto é feito através das linhas:
void printM(int A[][n]), printM(A);
que são respectivamente, cabeçalho do procedimento e chamada do procedimento dentro do main.
4) Observe também que tudo isto é feito sem usar o comando return.
5) O return só pode ser usado quando se quer devolver um único valor.
Funções e Procedimentos em C 39
Unesp-Campus de Guaratinguetá
FIM
Aula 17Referências dos slides
Curso de Programação de ComputadoresProf. Aníbal Tavares
Profa. Cassilda RibeiroProf. Décio MourãoProf. Galeno Sena
17 17 -- FunFunçções e Procedimentosões e Procedimentos