Linguagem C Vetores, Matrizes e Funções. Revisão de Funções O que são Funções? (ou...

22
Linguagem C Vetores, Matrizes e Funções

Transcript of Linguagem C Vetores, Matrizes e Funções. Revisão de Funções O que são Funções? (ou...

Page 1: Linguagem C Vetores, Matrizes e Funções. Revisão de Funções O que são Funções? (ou subprogramas ou subrotinas) –São trechos de código fonte agrupados.

Linguagem C

Vetores, Matrizes e Funções

Page 2: Linguagem C Vetores, Matrizes e Funções. Revisão de Funções O que são Funções? (ou subprogramas ou subrotinas) –São trechos de código fonte agrupados.

Revisão de Funções

• O que são “Funções”? (ou subprogramas ou subrotinas)

– São trechos de código fonte agrupados sob um nome, que podem ser chamados sempre que for necessário executar uma determinada ação programada neste trecho; 

• Como usar funções?

– Atribui-se um nome à uma seqüência de comandos, e faz-se referência a este nome nos vários lugares do programa onde a seqüência em questão deveria ser repetida.

Page 3: Linguagem C Vetores, Matrizes e Funções. Revisão de Funções O que são Funções? (ou subprogramas ou subrotinas) –São trechos de código fonte agrupados.

Revisão de Funções• Por que usar funções?

– Evita escrita repetida de código (uma certa seqüência de comandos deve ser repetida em vários lugares de um programa).

• Economiza o tempo gasto com o trabalho de copiar estas seqüências;

• Evitar a necessidade de mudar em múltiplos lugares caso deseje alterar o seu funcionamento;

– Dividir grandes tarefas de computação em tarefas menores:• Facilita o gerenciamento de grandes sistemas e

• Aumenta a confiabilidade dos mesmos.

• Resumo: Principais motivações para uso das funções!

– Evitar repetição de código

– Modularização

Page 4: Linguagem C Vetores, Matrizes e Funções. Revisão de Funções O que são Funções? (ou subprogramas ou subrotinas) –São trechos de código fonte agrupados.

Revisão de Funções• Função simples:

void sai_do_programa()

{

printf(“Digite qualquer tecla para sair do programa.\n”);

system(“pause”);

exit(0);

}

Chamada: sai_do_programa();

Page 5: Linguagem C Vetores, Matrizes e Funções. Revisão de Funções O que são Funções? (ou subprogramas ou subrotinas) –São trechos de código fonte agrupados.

Revisão de Funções• Função com parâmetro:

void imprime_quadrado(int n)

{

printf(“O quadrado de %d eh %d.\n”,n, n*n);

}

Chamada: imprime_quadrado(5);

Saída: O quadrado de 5 eh 25

Page 6: Linguagem C Vetores, Matrizes e Funções. Revisão de Funções O que são Funções? (ou subprogramas ou subrotinas) –São trechos de código fonte agrupados.

Revisão de Funções• Função com parâmetro e retorno:

int quadrado(int n)

{

int q;

q = n * n;

return(q);

}

Chamada: printf(“O quadrado de %d eh %d.\n”, 5, quadrado(5) );

Saída: O quadrado de 5 eh 25

Page 7: Linguagem C Vetores, Matrizes e Funções. Revisão de Funções O que são Funções? (ou subprogramas ou subrotinas) –São trechos de código fonte agrupados.

Revisão de Funções• Função com parâmetro e retorno:

int quadrado(int n)

{

int q;

q = n * n;

return(q);

}

Chamada:

int i;

for(i=1;i<5;i++)

printf(“O quadrado de %d eh %d.\n”, 5, quadrado(5) );

Saída: O quadrado de 1 eh 1

O quadrado de 2 eh 4

O quadrado de 3 eh 9

O quadrado de 4 eh 16

Page 8: Linguagem C Vetores, Matrizes e Funções. Revisão de Funções O que são Funções? (ou subprogramas ou subrotinas) –São trechos de código fonte agrupados.

Revisão de Funções• Função com diversos parâmetros e retorno:

int potencia(int n, int p)

{

int i,resultado=1;

for(i=1;i<=p;i++)

resultado = resultado * n;

return(resultado);

}

Chamada: printf(“%d elevado a %d vale %d.\n”,2,4,potencia(2,4));

Saída: 2 elevado a 4 vale 16

Page 9: Linguagem C Vetores, Matrizes e Funções. Revisão de Funções O que são Funções? (ou subprogramas ou subrotinas) –São trechos de código fonte agrupados.

Revisão de Funções• Função com diversos parâmetros e retorno:

int potencia(int n, int p)

{

int i,resultado=1;

for(i=1;i<=p;i++)

resultado = resultado * n;

return(resultado);

}

Chamada:

int i;

for(i=1;i<5;i++)

printf(“%d elevado a %d vale %d.\n”,2,i,potencia(2,i));

Saída: 2 elevado a 1 vale 1

2 elevado a 2 vale 4

2 elevado a 3 vale 8

2 elevado a 4 vale 16

Page 10: Linguagem C Vetores, Matrizes e Funções. Revisão de Funções O que são Funções? (ou subprogramas ou subrotinas) –São trechos de código fonte agrupados.

Revisão de Funções• Posicionamento das funções no programa C:

– Sempre antes da função main()

– Caso queira colocar as funções após a função main(), é preciso colocar um “protótipo” da função antes da função main()!!!!

– (Mas o que é um protótipo de função?.....)

– …é a descrição da função!

– Ex: função “sai_do_programa”

void sai_do_programa()

{

printf(“Digite qualquer tecla para sair do programa.\n”);

system(“pause”);

exit(0);

}

– Protótipo da função “sai_do_programa”: void sai_do_programa();

Page 11: Linguagem C Vetores, Matrizes e Funções. Revisão de Funções O que são Funções? (ou subprogramas ou subrotinas) –São trechos de código fonte agrupados.

Revisão de Funções• Posicionamento das funções no programa C:

Ex2: função “quadrado”

int quadrado(int n)

{

int q;

q = n * n;

return(q);

}

– Protótipo da função “quadrado”:

int quadrado(int n);

Page 12: Linguagem C Vetores, Matrizes e Funções. Revisão de Funções O que são Funções? (ou subprogramas ou subrotinas) –São trechos de código fonte agrupados.

Revisão de Vetores

• Vetores são Estruturas de Dados Homegêneas, isto é, capazes de armazenar uma quantidade pré-definida de valores do mesmo tipo

• Necessitam de apenas um índice de acesso.

• Declaração:

tipo nomedovetor[DimMax];

Onde:– tipo:um dos tipos primitivos de dados em C (char, int, float, double)

– nomedovetor: segue as mesmas regras das variáveis básicas

– DimMax: define o número máximo de elementos do vetor

pode ser uma expressão constante inteira

Page 13: Linguagem C Vetores, Matrizes e Funções. Revisão de Funções O que são Funções? (ou subprogramas ou subrotinas) –São trechos de código fonte agrupados.

Revisão de Vetores#include <stdio.h>#include <stdlib.h>#define NUM_ALUNOS 3

int main( ){float notas [NUM_ALUNOS];float media_turma = 0.0;int i;

for ( i = 0; i < NUM_ALUNOS; i++ ) {

printf ("Digite a nota do %d o. aluno: ", i+1); scanf ("%f", &notas[i]); } for ( i = 0; i < NUM_ALUNOS; i++ ) {

media_turma += notas[i]; } media_turma = media_turma / NUM_ALUNOS ; printf ("A media da turma eh %.2f \n", media_turma); system ("Pause"); return 0;}

Page 14: Linguagem C Vetores, Matrizes e Funções. Revisão de Funções O que são Funções? (ou subprogramas ou subrotinas) –São trechos de código fonte agrupados.

Vetores e Funções

#include <stdio.h>#include <stdlib.h>

#define NUM_ALUNOS 3

float media ( float notas[], int n ){

int i = 0;float m = 0.0;

for ( i = 0; i < n; i++ ){

m = m + notas[i] ;}m = m / n;return m;

}

int main( ){float notas [NUM_ALUNOS];float media_turma;int i;

for ( i = 0; i < NUM_ALUNOS; i++ ) {

printf ("Digite a nota do %d o. aluno: ", i+1); scanf ("%f", &notas[i]);

} media_turma = media ( notas, NUM_ALUNOS );

printf ("A media da turma eh %.2f \n", media_turma); system ("Pause"); return 0;}

Page 15: Linguagem C Vetores, Matrizes e Funções. Revisão de Funções O que são Funções? (ou subprogramas ou subrotinas) –São trechos de código fonte agrupados.

Vetores e Funções

#include <stdio.h>#include <stdlib.h>

#define NUM_ALUNOS 3

float media ( float notas[], int n ){

int i = 0;float m = 0.0;

for ( i = 0; i < n; i++ ){

m = m + notas[i] ;}m = m / n;return m;

}

• E para calcular o número de alunos com notas acima da média?

• A função de cálculo de média pode ser a mesma já utilizada.....

• E agora criamos a função de cálculo da quantidade de alunos acima da média!

Page 16: Linguagem C Vetores, Matrizes e Funções. Revisão de Funções O que são Funções? (ou subprogramas ou subrotinas) –São trechos de código fonte agrupados.

Vetores e Funções

int conta_alunos_acima_da_media ( float notas[], int n, float media){

int i, conta = 0;

for ( i = 0; i < n; i++ ){

if (notas[i] > media){

conta += 1;}

}return conta;

}

Page 17: Linguagem C Vetores, Matrizes e Funções. Revisão de Funções O que são Funções? (ou subprogramas ou subrotinas) –São trechos de código fonte agrupados.

Vetores e Funçõesint main( ){float notas [NUM_ALUNOS];float media_turma;int i, melhores_alunos;

for ( i = 0; i < NUM_ALUNOS; i++ ) {

printf ("Digite a nota do %d o. aluno: ", i+1); scanf ("%f", &notas[i]);

} media_turma = media ( notas, NUM_ALUNOS );

printf ("A media da turma eh %.2f \n", media_turma); melhores_alunos=conta_alunos_acima_da_ media(notas, NUM_ALUNOS, media_turma); printf (“E o numero de alunos com nota acima da media foi: %d .\n”, melhores_alunos); system ("Pause"); return 0;}

Page 18: Linguagem C Vetores, Matrizes e Funções. Revisão de Funções O que são Funções? (ou subprogramas ou subrotinas) –São trechos de código fonte agrupados.

Vetores e Funções

• Desafio 1: Alterar o programa anterior para:– Receber duas notas bimestrais de cada aluno;

– Verificar se cada nota está entre 0.0 e 10.0;

– Calcular a média de cada aluno (e armazenar o valor em um vetor);

– Modificar o programa para apresentar os seguintes resultados:

• média geral da turma;

• número de alunos com média individual acima da média da turma.

Page 19: Linguagem C Vetores, Matrizes e Funções. Revisão de Funções O que são Funções? (ou subprogramas ou subrotinas) –São trechos de código fonte agrupados.

Matrizes e Funções

• Será que é possível “passar matrizes” por parâmetro?

• Se sim, como?

Page 20: Linguagem C Vetores, Matrizes e Funções. Revisão de Funções O que são Funções? (ou subprogramas ou subrotinas) –São trechos de código fonte agrupados.

Matrizes e Funções#include <stdio.h>

#include <stdlib.h>

#define NUM_ALUNOS 3

int main()

{

float notas [NUM_ALUNOS][2], media_turma;

int i;

for ( i = 0; i < NUM_ALUNOS; i++ )

{

printf ("Digite a 1a. nota do %d o. aluno \n: ", i+1);

scanf ("%f", &notas[i][0]);

printf ("Digite a 2a. nota do %d o. aluno \n: ", i+1);

scanf ("%f", &notas[i][1]);

}

media_turma = media_geral ( notas, NUM_ALUNOS );

printf ( "A media da turma eh %.2f \n", media_turma);

system ("Pause");

return 0;

}

Page 21: Linguagem C Vetores, Matrizes e Funções. Revisão de Funções O que são Funções? (ou subprogramas ou subrotinas) –São trechos de código fonte agrupados.

Matrizes e Funções

float media_geral ( float notas[][2], int n )

{

int i = 0;

float m = 0.0;

float notaaluno = 0.0;

for ( i = 0; i < n; i++ )

{

notaaluno = ( notas[i][0] + notas[i][1] )/2;

m = m + notaaluno;

}

m = m / n;

return m;

}

Page 22: Linguagem C Vetores, Matrizes e Funções. Revisão de Funções O que são Funções? (ou subprogramas ou subrotinas) –São trechos de código fonte agrupados.

Exercício Complementar:• Elabore um programa que manipule os dados para uma sala de 40 alunos.

• O programa deve receber como entrada (via leitura de teclado):

- Os nomes dos alunos (máximo 50 caracteres).

- As duas notas parciais.

– O programa deve calcular e imprimir, numa mesma linha, para cada aluno:

- O nome e a média final.

– E também deve apresentar:

- A maior média da turma, e a menor média da turma.

- A quantidade de alunos aprovados, reprovados e em exame.

- Uma listagem com o nome dos alunos que irão para a final.