Buscar

Aula 11

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

ECT1203 Linguagem de Programação
2012.1
Prof. Diego Rodrigues de Carvalho
Profa. Idalmis Milián Sardina
Prof. Luiz Eduardo Cunha Leite
Prof. Marconi Câmara Rodrigues
Prof. Marcelo Henrique Ramalho Nobre
Aula 11 – Funções e Matrizes
Universidade Federal do Rio Grande do Norte
Escola de Ciências e Tecnologia
Hora de silenciar o celular
Manter o celular sempre desligado/silencioso quando estiver em sala de aula
Nunca atender o celular em sala de aula
Objetivo da Aula
Mostrar passagem de vetores e matrizes como parâmetros de funções
Resolver exercícios
Esses são os objetivos da aula
Matrizes como argumento de funções
O nome de uma matriz (sem os colchetes) representa o endereço onde a matriz está armazenada.
Ao passar o nome de uma matriz para uma função não se cria uma cópia da matriz, a passagem é feita por referência.
Na lista de parâmetros, pode-se declarar uma matriz unidimensional da seguinte forma:
tipo nome [ ]
Matrizes como argumento de funções
A função strlen() calcula e retorna o comprimento de uma string passada como parâmetro.
exemplo:
int strlen(char S[]){
 int N;
 for (N=0; S[N] != '\0'; N++);
 return N;
}
int main(){
 char ch[50] = "Bom dia!”;
 cout << strlen(ch) << endl;
 return 0;
}
Note que não se usa o operador & na declaração da matriz na lista de parâmetros
5
Matrizes como argumento de funções
Observação: Deve-se fornecer também o tamanho da matriz (quando o tipo for diferente de char) para que a função trabalhe corretamente.
#include <iostream>
using namespace std;
void imprimir(int v[], int tam) {
 for (int n=0; n<tam; n++)
 cout << v[n] << " ";
 cout << "\n";
}
int main (){
 int vetor1[3] = {5, 10, 15};
 int vetor2[5] = {2, 4, 6, 8, 10};
 imprimir(vetor1, 3);
 imprimir(vetor2, 5);
 return 0;
}
exemplo:
6
#include <iostream>
using namespace std;
float calcula_media(float [], int);
int main (){
 int tam;
 float media, notas[200];
 
 cout << "Qual o tamanho da turma? "; cin >> tam;
 
 cout << "Entre com as notas dos alunos: ";
 for(int i = 0; i < tam; i++)
 cin >> notas[i];
 
 media = calcula_media(notas, tam);
 cout << "A media eh: " << media << endl;
 
 return 0;
}
float calcula_media(float notas[], int tamanho){
 float media = 0;
 for(int i = 0; i < tamanho; i++)
 media += notas[i];
 media = media/tamanho;
 return media;
}
exemplo:
7
Vetores locais a funções
Como fazer uma função que recebe dois vetores de tamanho 10 como parâmetros e calcula o vetor soma?
O espaço para guardar o resultado é alocado pela função chamadora. Assim, a função soma() recebe três vetores: dois com dados de entrada (A e B) e um para armazenar o resultado (C)
void soma(int A[], int B[], int C[]){
 for(int i=0; i<10; i++)
 C[i] = A[i]+B[i];
}
Passando matrizes de duas dimensões
Não importa quantas dimensões tem uma matriz, a passagem do endereço é feita de forma idêntica ao caso unidimensional
Entretanto, a declaração da matriz na definição da função e no protótipo é feita da seguinte forma:
tipo nome [ ][número de colunas]
void funcao (int m[][4])
exemplo:
Passando matrizes de duas dimensões
O tamanho da segunda dimensão deve sempre ser informado para que a função possa determinar o endereço dos elementos da matriz.
Ao tentarmos acessar o elemento A[2][3], a função determinante() sabe que o seu endereço é A+2*4+3
int determinante(int A[][4]);
exemplo:
Observação: Como não há verificação de limites, é importante fornecer a primeira dimensão da matriz para que a função não acesse posições inválidas.
Exercício 1
Escreva uma função de protótipo:
void mid(char origem[], char dest[], int inicio, int n);
que copie os n caracteres a partir da posição início da string origem na string dest.
Esses são os objetivos da aula
Exercício 2
(a) Faça uma função MAX que recebe como entrada um inteiro n, uma matriz inteira Anxn e devolve três inteiros: k, Lin e Col. O inteiro k é o maior elemento de A e é igual a A[Lin,Col].
Exemplo:
Se o elemento máximo ocorrer mais de uma vez, indique em Lin e Col qualquer uma das possíveis posições.
(b) Faça um programa que, dado um inteiro n e uma matriz quadrada de ordem n, cujos elementos são todos inteiros positivos, imprime uma tabela onde os elementos são listados em ordem decrescente, acompanhados da indicação de linha e coluna a que pertencem. Havendo repetições de elementos na matriz, a ordem é irrelevante. Utilize obrigatoriamente a função da parte (a).
Esses são os objetivos da aula

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Continue navegando