Anda di halaman 1dari 4

Universidade Federal de Uberlndia

AED1 Algoritmos e Estruturas de Dados 1


Profa. Christiane Regina Soares Brasil

Aula do dia 24-03-15 Reviso da linguagem de programao C

1) Objetivo: Relembrar os conceitos de procedimentos e funes, suas vantagens e


sua notao em C.
2) Vantagens:
Reaproveitamento de cdigo j implementado (por voc ou por outros
programadores);
Modularizao do cdigo, evitando que um trecho de cdigo seja repetido
vrias vezes dentro de um mesmo programa;
Edio de um trecho de cdigo de modo simples.
Facilidade na leitura do programa-fonte;
Diviso do programa em partes (blocos) que possam ser mais facilmente
entendidos de forma isolada.
3) Procedimentos e funes:
Procedimentos so blocos de cdigo que contm um conjunto de comandos, que
so executados quando o procedimento chamado. No momento que o
programa chama o procedimento, o fluxo de execuo desviado para o incio
do procedimento, e todos os comandos do procedimento so executados, e ao
finalizar o procedimento, o fluxo de execuo retorna ao comando seguinte a
chamada do procedimento no programa (conforme Figura 1).
Funes so tambm blocos de instrues, que assim como os procedimentos,
so executados quando a funo chamada. A grande diferena entre funes e
procedimentos que a funo retorna um valor onde foi chamada, e no
procedimento no h retorno algum. Um exemplo de funo seria o conjunto de

instrues para calcular a raiz quadrada de um nmero e aps a funo ser


executada, ela deve retornar o valor desejada.

Figura 1: Fluxo de execuo com chamada de procedimento.

Neste exemplo de cdigo, pode-se ver a chamada de uma funo existente na


biblioteca math.h, na linguagem C.
#include <stdio.h>
#include <math.h>
int main()
{
float x, y;
printf(Entre com um valor no negativo:\n);
scanf(%f,&x);
y = sqrt(x);//funo que calcula a raiz quadrada e retorna o valor
printf(Raiz: %.2f, y);
return 0;
}

Na Figura 2, a chamada da funo ilustrada, mostrando o desvio da execuo.


Como sqrt uma funo preexistente em math.h, no so mostradas as
instrues.

Figura 2: Fluxo de execuo com chamada de funo.

4) Implementao:
Resumidamente, para se implementar um procedimento temos que usar o termo
void, e em seguida, colocar o nome do mesmo, conforme o exemplo:
void entradaDados(int* x);
Essa uma declarao de procedimento para entrada de um valor em x. Note
que h um parmetro que foi passado por referncia, onde h mudana do valor
de x dentro do procedimento e poder ser reconhecida tal mudana no
programa principal onde foi chamado. Vejamos a implementao deste cdigo,
com a chamada do procedimento.

#include <stdio.h>
void entradaDados(int* x);
int main()
{
int x, y, z;
entradaDados(&x);
entradaDados(&y);
entradaDados(&z);

printf("%d %d %d",x,y,z);
return 0;
}
void entradaDados(int* x)
{
printf("Entre com um valor:");
scanf("%d",x);
//scanf("%d",*(&x));
}
Para a implementao de uma funo, basta substituir o termo void pelo tipo
que ser retornado. Um exemplo de funo que determina o menor valor de um
vetor de inteiros com N elementos mostrada a seguir.
int buscaMenor(int vet[], int N)
{
int m, i;
m = vet[0];
for(i=1; i<N; i++)
if(m > vet[i])
m = vet[i];
return m;
}

5) Exerccios
1) Faa uma funo que recebe por parmetro o raio de uma circunferncia e
calcula a sua rea.
2) Escreva um procedimento que recebe as 3 notas de um aluno por parmetro
e uma letra. Se a letra for A o procedimento calcula a mdia aritmtica das
notas do aluno e se for P, a sua mdia ponderada (pesos: 5, 3 e 2). O
procedimento deve imprimir a resposta.
3) Escreva uma funo que calcula o soma de Gauss em n, onde a soma
mostrada na equao a seguir:
4) Implemente um prottipo de calculadora, onde na main o usurio deve entrar
com os operadores e a operao que deseja. Por exemplo, 2, 1.5 e +, sendo
2 e 1.5 valores reais e + um caracter. Dependendo da operao escolhida, o
programa deve chamar uma funo especfica para calcular o resultado
(sero vlidas somente operaes binrias). Deve-se implementar um
procedimento em que faa o controle de qual operao ser chamada
(sugesto: use switch-case neste procedimento). O programa deve parar de
executar somente quando o usurio digitar um operador invlido.

Anda mungkin juga menyukai