Linguagem C
-
Upload
lionel-glass -
Category
Documents
-
view
42 -
download
3
description
Transcript of Linguagem C
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 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.
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
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();
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
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
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
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
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
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();
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);
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
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", ¬as[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;}
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", ¬as[i]);
} media_turma = media ( notas, NUM_ALUNOS );
printf ("A media da turma eh %.2f \n", media_turma); system ("Pause"); return 0;}
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!
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;
}
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", ¬as[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;}
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.
Matrizes e Funções
• Será que é possível “passar matrizes” por parâmetro?
• Se sim, como?
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", ¬as[i][0]);
printf ("Digite a 2a. nota do %d o. aluno \n: ", i+1);
scanf ("%f", ¬as[i][1]);
}
media_turma = media_geral ( notas, NUM_ALUNOS );
printf ( "A media da turma eh %.2f \n", media_turma);
system ("Pause");
return 0;
}
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;
}
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.