0% acharam este documento útil (0 voto)
20 visualizações68 páginas

Modularização e Registros em Algoritmos

O documento discute modularização de programas através do uso de funções e registros. Funções permitem dividir problemas complexos em partes menores e mais simples, enquanto registros organizam dados relacionados.

Enviado por

Gefté Alcantara
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
20 visualizações68 páginas

Modularização e Registros em Algoritmos

O documento discute modularização de programas através do uso de funções e registros. Funções permitem dividir problemas complexos em partes menores e mais simples, enquanto registros organizam dados relacionados.

Enviado por

Gefté Alcantara
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd

Revisao de Registros e Modularizacao de programas

Prof. Dr. Mauricio F. L. Pereira (mauricio@[Link])


Algoritmos II

IC/UFMT
Roteiro

Introducao a Modularizacao de Algoritmos

Conceito de subprograma

Parametros

2
Introducao - Dados de uma pessoa

Se imaginarmos que estas informacoes possam ser colocadas em uma ficha de


cadastro, por exemplo, poderamos ter a seguinte ficha a ser preenchida

Nome:
End:
CEP: Cidade: Estado:
Tel. Res : Tel. Cel:
E-mail:
RG: CPF:

3
Registros

Registros sao estruturas heterogeneas, ou seja, colecoes de dados de quaisquer


tipos.
A declaracao de um tipo registro e feita em C de acordo com a sintaxe:
t y p e d e f s t r u c t <n o m e D o R e g i s t r o > {
<TIPO DO CAMPO1> nome campo1 ;
<TIPO DO CAMPO2> nome campo2 ;
...
<TIPO DO CAMPON> nome campoN ;
} <nomeDoTipo> ;

4
Registros

O que agrupa os dados em um registro e seu relacionamento logico.


Por exemplo, os dados relativos a um aluno de uma escola - seu numero de
identificacao, seu nome, seu curso, seu turno e seu ano de ingresso, seu
coeficiente de desempenho podem ser armazenados em um mesmo registro.

t y p e d e f s t r u c t TAluno {
int id ;
c h a r nome [ 2 5 5 ] ;
char curso [ 1 0 0 ] ;
char turno [ 1 0 ] ;
float coeficiente ;
int anoIngresso ;
} TAluno ;

5
Registros - Exemplo de declaracao do tipo e uso de uma variavel

t y p e d e f s t r u c t TAluno {
int id ;
c h a r nome [ 2 5 5 ] ;
char curso [ 1 0 0 ] ;
char turno [ 1 0 ] ;
float coeficiente ;
int anoIngresso ;
} TAluno ;

i n t main ( )
{
TAluno meuAluno ;
s c a n f ( %d , &meuAluno . i d ) ;
meuAluno . a n o I n g r e s s o = 2 0 0 9 ;
}

6
Registros

nome do registro comum para todos os elementos

meuAluno

id nome curso turno anoIngresso coeficiente


campos do registro TAluno com
um nome diferente para cada campo

7
Vetores de registros

O tipo de dado registro pode ser utilizado na declaracao de qualquer variavel,


inclusive na definicao de elementos de um vetor. Nesse caso, cada elemento do
vetor compreendera diversos campos.
Assim, ao se declarar
TAluno a l u n o s [ 6 ] ;

8
Vetores de registros

alunos
0 1 2 3 4 5

id nome curso turno anoIngresso coeficiente


9
Registros com campos vetores

meuAluno

id nome curso turno anoIngresso coeficiente notas

0 1 2 3
7.3 9.1 4.0 6.9

10
Registro com campos que tambem sao registros

alunos
0 1 2 3 4 5

1 2 34

id nome curso turno anoIngresso coeficiente notas

Algoritmos I 9.1
disciplina conceito
11
Exerccio de fixacao 1

Escrever um programa que cadastre o nome, a altura, o peso, o cpf e sexo de 5


pessoas. Crie um registro para cadastrar essas informacoes. Com os dados
cadastrados, em seguida localizar uma pessoa atraves do seu CPF e imprimir o
seu IMC, o qual pode ser calculado por
peso
IM C =
altura altura

12
Introducao a Modularizacao de
Algoritmos
Introducao ao conceito de modulos

A medida que avancamos encontramos problemas cada vez mais complexos e


longos, que aumentam as dificuldades para se codificar, testar e corrigir o
algoritmo;
Dividir um problema grande e complexo, em partes menores e mais simples
Funcoes, subprogramas, subrotinas (sinonimos para modulo)

13
Introducao ao conceito de funcao

14
Introducao ao conceito de funcao

Um ponto chave na resolucao de um problema complexo e conseguir


quebra-loem subproblemas menores.
Ao criarmos um programa para resolver um problema, e crtico quebrar um codigo
grande em partes menores, faceis de serem entendidas e administradas.
Voltando a Atividade 1 para pensar na modularizacao

15
Exerccio de fixacao 1

Escrever um programa que cadastre o nome, a altura, o peso, o cpf e sexo de 5


pessoas. Crie um registro para cadastrar essas informacoes. Com os dados
cadastrados, em seguida localizar uma pessoa atraves do seu CPF e imprimir o
seu IMC, o qual pode ser calculado por
peso
IM C =
altura altura

16
Exemplos de funcoes que utilizamos

Funcoes
Sao estruturas que agrupam um conjunto de comandos, que sao executados quando a
funcao e chamada/invocada.

scanf("%d", &x);

Funcoes
As funcoes podem retornar um valor ao final de sua execucao.

//sqrt calcula a raiz quadrada de seu par^


ametro x = sqrt(4);

17
Funcoes - Um outro exemplo de aplicacao

Vejamos o seguinte exemplo de problema a ser resolvido atraves do computador


que e a solucao da formula que calcula as combinacoes de n elementos tomados p
a p: !
n n!
=
p (n p)!p!

18
Funcoes - Exemplo de aplicacao

...
// c a l c u l o do f a t o r i a de N
f a t o r i a l = 1;
f o r ( c o n t a d o r =2; c o n t a d o r <= n ; c o n t a d o r++ )
f a t o r i a l = f a t o r i a l contador ;
n fat = fatorial ;
...
// c a l c u l o do f a t o r i a de NP
f a t o r i a l = 1;
f o r ( c o n t a d o r =2; c o n t a d o r <= np ; c o n t a d o r++ )
f a t o r i a l = f a t o r i a l contador ;
n p fat = fatorial ;
...
// c a l c u l o do f a t o r i a de P
f a t o r i a l = 1;
f o r ( c o n t a d o r =2; c o n t a d o r <= p ; c o n t a d o r++ )
f a t o r i a l = f a t o r i a l contador ;
p fat = fatorial
...
19
Funcoes - Exemplo de aplicacao

Programa principal
Algoritmo Combinaes
DECLARE
INCIO
Sub-rotina
n_fat = Fatorial (n)
Fatorial (valor)
n_p_fat = Fatorial (n-p) Sub-rotina que calcula e
devolve o resultado do
p_fat = Fatorial (p) fatorial de valor

FimAlgoritmo

20
Conceito de subprograma
Conceito de modulo (funcoes)

Um modulo consiste em um trecho de codigo com estrutura semelhante a de um


programa, que e executado somente quando acionado por outro trecho de codigo
Denominado chamada da funcao

21
Introducao ao conceito de funcao

Porque utilizar funcoes?


Evitar que os blocos do programa fiquem grandes demais e, por consequencia, mais
difceis de entender, testar ou construir.
Separar o programa em partes que possam ser logicamente compreendidos de forma
isolada.
Permitir o reaproveitamento de codigo ja construdo (por voce ou por outros
programadores).
Evitar que um trecho de codigo seja repetido varias vezes dentro de um mesmo
programa, minimizando erros e facilitando alteracoes e reduzindo o tamanho do
programa.

22
Introducao ao conceito de funcao

Todo modulo tem um nome que deve representar claramente a tarefa a ser
executada por ele
Por exemplo, Fatorial
A chamada de um modulo e feito pelo seu nome, atraves de um comando
especfico ou utilizando diretamente seu resultado
Dentro de um modulo pode conter chamadas para outros modulos

23
Introducao ao conceito de funcao

Quando a chamada e realizada, ocorre um desvio o fluxo de execucao do


programa ou subprograma e se comeca a executar o modulo chamado. Assim que
ele e finalizado, se retorna ao ponto de desvio (comando apos a chamada).

24
Introducao ao conceito de funcao

Uma vez chamada, uma funcao pode chamar outra funcao


A ideia e sempre a mesma, quem chamou fica suspenso, aguardando o fim da
exeucao da funcao chamada.

25
Definindo uma funcao em C

Uma funcao e definida da seguinte forma:

tipo_retorno nome(tipo1 par^ ametro1, ..., tipoN par^


ametroN)
{
declaracao de variaveis locais
comandos;
return valor de retorno;
}

Toda funcao deve ter um tipo (int, char, float, etc).


Os parametros sao variaveis, que sao inicializadas com valores indicados durante
a chamada (ativacao) da funcao da funcao. Tambem pode ser uma lista vazia.
As variaveis locais sao variaveis que existem apenas enquanto a funcao e
executada e so podem ser acessadas nela;
O comando return devolve para quem chamou a funcao o resultado da execucao. 26
Introducao ao conceito de funcao

Existem 3 lugares ou escopos em um programa onde as variaveis podem ser


declaradas:
Global: fora de todas as funcoes, incluindo a funcao main().
Local: dentro de uma funcao e essas variaveis sao chamadas variaveis locais e
podem ser usadas somente pelos comandos que estiverem na mesma funcao
Parametro: na declaracao dos parametros formais de uma funcao. Embora as
variaveis declaradas nos parametros sejam utilizadas para receber os argumentos
quando a funcao e chamada, eles podem ser utilizados como outra variavel qualquer.

27
Variaveis locais e variaveis globais

Uma variavel e chamada local se ela foi declarada dentro de uma funcao. Nesse
caso, ela existe somente dentro daquela funcao e apos o termino da execucao da
mesma, a variavel deixa de existir. Parametros tambem sao variaveis locais
Uma variavel e chamada global se ela for declarada fora de qualquer funcao. Essa
variavel e visvel em todas as funcoes. Qualquer funcao pode altera-la e ela existe
durante toda a execucao do programa.

28
Em geral o programa e organizado da seguinte forma:
#i n c l u d e < s t d i o . h>
#i n c l u d e <o u t r a s b i b l i o t e c a s >
// > P r o t o t i p o s de f u n c o e s

// > D e c l a r a c a o de V a r i a v e i s G l o b a i s

i n t main ( ) {
D e c l a r a c a o de v a r i a v e i s locais
Comandos ;
}

i n t f u n 1 ( Par a m e t r o s ) { // Par a m e t r o s tamb em s a o l o c a i s


D e c l a r a c a o de v a r i a v e i s l o c a i s
Comandos ;
}

i n t f u n 2 ( Par a m e t r o s ) { // Par a m e t r o s tamb em s a o l o c a i s


D e c l a r a c a o de v a r i a v e i s l o c a i s
Comandos ;
}
... 29
Escopo de variaveis

O escopo de uma variavel determina de quais partes do codigo ela pode ser
acessada.
A regra de escopo em C e bem simples:
As variaveis globais sao visveis por todas as funcoes.
As variaveis locais sao visveis apenas na funcao onde foram declaradas.

30
Escopo de variaveis

#i n c l u d e <s t d i o . h>
void fun1 () ;
i n t fun2 ( i n t l o c a l b ) ;

int valor global ;

i n t main ( ) {
int local main ;
/ N e s t e p o n t o s a o v i s v e i s v a l o r g l o b a l e l o c a l m a i n /
}

void fun1 () {
int local a ;
/ N e s t e p o n t o s a o v i s v e i s v a l o r g l o b a l e l o c a l a /
}

i n t fun2 ( i n t l o c a l b ) {
int local c ;
/ N e s t e p o n t o s a o v i s v e i s v a l o r g l o b a l , l o c a l b e l o c a l c /
31
}
Escopo de variaveis - outro exemplo

#i n c l u d e < s t d i o . h>
// v e g l o b a l
int v ;
// f u n c a o que i m p r i m e s e e p a r ou i m p a r
v o i d ImprimeMsg ( ) {
int l ;
i f ( v % 2 == 0 )
p r i n t f ( v e Par \n ) ;
else
p r i n t f ( v e I m p a r \n ) ;
p r i n t f ( D i g i t e novo v a l o r : ) ;
s c a n f ( %d , & l ) ;
v = l 4;
}
// p r og r a m a s e m p r e come c a n e s s a f u n c a o main ( )
i n t main ( ) {
p r i n t f ( E n t r e com um v a l o r i n t e i r o : ) ;
s c a n f ( %d , &v ) ;
ImprimeMsg ( ) ;
32
p r i n t f ( %d\n , v ) ;
Introducao ao conceito de funcao

A cada interrupcao de codigo (chamada) o computador deve-se salvar as


seguintes informacoes de quem fez a chamada
Ponto em se fez a chamada
Valores das variaveis da funcao
etc . . .
Preservar essas informacoes para usa-las quando retornar da execucao da funcao
chamada
Em linguagem C, utiliza-se o conceito de pilha para armazenamento dessas
informacoes

33
Definicoes para uso de funcoes em C

1. Para que qualquer outro modulo que nao seja o main possa ser utilizado e
necessario que ele seja ativado dentro do principal ou por outro modulo que ja
tenha sido ativado. O modulo main, e onde se inicia a execucao;
2. Cada modulo chamado e executado do seu comeco ao seu fim. Apos o termino da
execucao do modulo, o algoritmo retorna ao comando seguinte em que foi
chamado o modulo;
3. As funcoes criadas pelos usuarios devem ser declaradas antes da funcao principal
para que o compilador possa encontra-la. (prototipos);
4. O fluxo de execucao de um algoritmo com funcoes e desviado para qualquer
funcao que seja ativado no modulo main e depois de executar, o fluxo de
execucao retorna para a instrucao seguinte ao que o ativou;

34
Exerccio de Fixacao 2 - Sem passagem de parametros

I. Faca um programa que tenha uma funcao denominada OlaMundo que escreva a
mensagem Ola mundo, primeira funcao!
II. Faca um programa que tenha uma funcao denominada SomaLocal que some o
valor de duas variaveis lidas dentro dela e retorne esse resultado para ser exibidos
pela funcao principal;

35
Exerccio de Fixacao 3 - Sem passagem de parametros

1. O numero 3025 possui a seguinte caracterstica

30 + 25 = 55
55 = 3025

Faca um programa que pesquise e imprima todos os numeros de quatro algarismos


(1000 a 9999) que apresentam tal caractersticas. Faca uma funcao denominada
VerificaValor para determinar se o numero se comporta como o 3025.

36
Parametros
Parametros

Parametros sao espacos de armazenamento que permitem a comunicacao entre


funcoes com o mundo externo
Modulos que nao utilizam parametros nao se comunicam com o mundo externo e
nao depende de dados dele. Fazem sempre a mesma acao.

37
Parametros

Todos os elementos utilizados em um modulo/funcao devem ser declarados


Declaracao de parametros, alem de dar nomes, definem seu tipo.
Na declaracao se define a forma de uso dos parametros, bem como a ordem em
que devem ser passados
Durante a chamada seu valores sao substitudos por variaveis ou valores do
mesmo tipo

38
Definindo uma funcao: Exemplo

A funcao soma recebe como parametro dois valores inteiros.


A funcao faz a soma destes valores, e devolve o resultado.

i n t soma ( i n t a , i n t b ) {
int c ;
c = a + b;
return c ;
}

Notem que o valor de retorno (variavel c) e do mesmo tipo de retorno da funcao.


Quando o comando return e executado, a funcao para de executar e retorna o
valor indicado para quem fez a invocacao (ou chamada) da funcao.

39
Funcoes - Exemplo de passagem de parametros

...
// c a l c u l o do f a t o r i a de N
f a t o r i a l = 1;
f o r ( c o n t a d o r =2; c o n t a d o r <= n ; c o n t a d o r++ )
f a t o r i a l = f a t o r i a l contador ;
...
// c a l c u l o do f a t o r i a de NP
f a t o r i a l = 1;
f o r ( c o n t a d o r =2; c o n t a d o r <= np ; c o n t a d o r++ )
f a t o r i a l = f a t o r i a l contador ;
...
// c a l c u l o do f a t o r i a de P
f a t o r i a l = 1;
f o r ( c o n t a d o r =2; c o n t a d o r <= p ; c o n t a d o r++ )
f a t o r i a l = f a t o r i a l contador ;
...

40
Exemplo de criacao de funcao - Fatorial

i n t F a t o r i a l ( i n t numero )
{
int fat = 1;
int contador ;
f o r ( c o n t a d o r =2; c o n t a d o r <= numero ; c o n t a d o r++ )
fat = fat contador ;
return fat ;
}

41
Exemplo de criacao de funcao - Fatorial

i n t F a t o r i a l ( i n t numero )
{
int fat = 1;
int contador ;
f o r ( c o n t a d o r =2; c o n t a d o r <= numero ; c o n t a d o r++ )
fat = fat contador ;
return fat ;
}

o nome da funcao e Fatorial e e por esse nome que ela sera invocada no programa.
Ela calcula fatorial do valor passado como parametro numero.
Foram declaradas duas variaveis locais (fat e contador ) que sao utilizadas pela
funcao e sao visveis apenas dentro dessa funcao.
O return finaliza a funcao, retornando o valor de fat para o ponto de chamada.
Vale destacar que a variavel fat e do mesmo tipo de retorno.
42
Funcoes - Exemplo de ativacao da funcao Fatorial

i n t F a t o r i a l ( i n t numero )
{
int fat = 1;
int contador ;
f o r ( c o n t a d o r =2; c o n t a d o r <= numero ; c o n t a d o r++ )
fat = fat contador ;
return fat ;
}

i n t main ( ) {
...
// c a l c u l o do f a t o r i a de N
fatN = f a t o r i a l ( n ) ;
// c a l c u l o do f a t o r i a de NP
fatNP = f a t o r i a l ( np ) ;
// c a l c u l o do f a t o r i a de P
fatP = f a t o r i a l (p) ;
...
}
43
Exerccio de Fixacao 4 - Sem passagem de parametros

1. Fazer um algoritmo que ative a funcao CalculaTermo que calcule e escreva a


soma dos 20 primeiros termos da serie. Implemente tambem a funcao Fatorial

100 99 98 97
+ + + + ...
0! 1! 2! 3!

44
Exerccio de fixacao 5- Media de 3 valores inteiros

Escrever uma funcao que receba 3 valores e retorne a media desses valores;
Faca o programa principal que ativa essa funcao e exibe o resultado da media de
tres valores

45
Exerccio de fixacao 6

Implemente o algoritmo abaixo:


Funcao: AreaCirculo
Entrada: raio
Descricao: Retorna a area do crculo de raio especificado

Funcao: CompCircunferencia
Entrada: raio
Descricao: Retorna o comprimento da circunferencia de raio especificado.

Escreva na funcao principal um programa que leia 5 valores que representam raios
de crculos. Para cada valor informado imprimir a area e seu comprimento, usando
as funcoes AreaCirculo e CompCircunferencia, respectivamente.

46
Exerccio de fixacao 7

Escreva uma funcao que computa a potencia ab para valores a e b passados por
parametro (nao use bibliotecas como math.h). Sua funcao deve ter o seguinte
prototipo:
int pot(int a, int b);
Use a funcao anterior e crie um programa que imprima todas as potencias:

20 , 21 , . . . , 210 , 30 , . . . , 310 , . . . , 1010 .

47
Exerccio de fixacao 8

Faca um programa que tenha uma funcao que receba dois numeros positivos por
parametro e retorne a soma dos N numeros inteiros existentes entre eles.
Faca um programa que tenha uma funcao que receba dois numeros positivos por
parametro e imprima todos os numeros primos existentes entre eles.

48
Prototipo de Funcoes

#i n c l u d e < s t d i o . h>
// p r o t o t i p o s
f l o a t soma ( f l o a t op1 , f l o a t op2 ) ;
f l o a t s u b t ( f l o a t op1 , f l o a t op2 ) ;

i n t main ( ) {
float a = 0 , b = 5;
p r i n t f ( %f \n %f \n , soma ( a , b ) , s u b t ( a , b ) ) ;
return 0;
}

f l o a t soma ( f l o a t op1 , f l o a t op2 ) {


r e t u r n ( op1 + op2 ) ;
}

f l o a t s u b t ( f l o a t op1 , f l o a t op2 ) {
r e t u r n ( op1 op2 ) ;
}

49
Passagem de parametros por referencia

Na passagem por referencia, o endereco fsico de uma variavel deve ser passado
na chamada da funcao;
Dessa forma, a funcao pode modificar a variavel diretamente, o que em geral nao
e recomendavel, mas ha situacoes onde esse recurso e necessario
Por exemplo, para a criacao de funcoes que devolvem mais de um valor.
Na criacao de funcoes, deve-se marcar os parametros que sao passados por
referencia. Caso contrario, o parametro sera passado por valor ;

50
Passagem de parametros por referencia

Em linguagem C, utiliza-se o operador * (ponteiro) para marcar os parametros


que serao passados por referencia;
Na chamada, caso a variavel nao seja uma char *(palavra), vetor, matriz ou
ponteiro, deve-se utilizar o operador & para passar o endereco fsico da variavel
// c r i a n c a o da f u n c a o
f l o a t f u n c a o E x e m p l o ( i n t A , f l o a t B , i n t C )
{
.....
}

\\ m o s t r a n d o chamada da f u n c a o
int x , y ;
float z ;
r = f u n c a o E x e m p l o ( x , z , &y )

51
Passagem de parametros por referencia - Exemplo

Suponha que se queira calcular a media de m meses dos salarios recebidos por
uma pessoa.
O desenvolvedor foi orientado a desenvolver uma funcao chamada
CalculaMediaSalario que :
1. Recebe como entrada a quantidade meses e o total de salarios
2. Da como sada, se a quantidade de meses e valida (nao pode ser negativa ou zero )
e a media salarial (quando a quantidade de meses e valida )

52
Passagem de parametros por referencia - Exemplo

#d e f i n e SUCESSO 0
#d e f i n e FALHA 1
i n t C a l c u l a M e d i a S a l a r i o ( i n t meses , f l o a t t o t a l S a l a r i o , f l o a t media )
{
i f ( meses <= 0 ) {
media = 0 . 0 ;
r e t u r n FALHA ;
}
else {
media = t o t a l S a l a r i o / meses ;
r e t u r n SUCESSO ;
}
}
// p r og r a m a s e m p r e come c a n e s s a f u n c a o main ( )
i n t main ( ) {
float salarioTotal , m ;
i n t meses , r e t ;
p r i n t f ( E n t r e a q u a n t i d a d e de meses \n ) ;
s c a n f ( %d , &meses ) ;
53
Passagem de parametros por referencia - Exemplo (cont.)

// p r og r a m a s e m p r e come c a n e s s a f u n c a o main ( )
i n t main ( ) {
float salarioTotal , m ;
i n t meses , r e t ;
p r i n t f ( E n t r e a q u a n t i d a d e de meses \n ) ;
s c a n f ( %d , &meses ) ;
p r i n t f ( E n t r e com o s a l a r i o t o t a l do %d meses , meses ) ;
s c a n f ( %f , & s a l a r i o T o t a l ) ;
// f u n c a o r e t o r n a 2 i n f o ( s t a t u s e me d i a d o s s a l a r i o s )
r e t = C a l c u l a M e d i a S a l a r i o ( meses , s a l a r i o T o t a l , &m) ;
i f ( r e t == SUCESSO )
p r i n t f ( A media f o i %.2 f \n , m ) ;
else
p r i n t f ( I n f o r m a c a o de meses e i n v a l i d a (%d ) \n , meses ) ;

return 0;
}

54
Exerccio de Fixacao 9

1. Desenvolva uma funcao que receba 3 numeros (supostamente diferentes) e retorne


o maior e o menor dos 3 valores recebidos. Crie a funcao main para testar essa
funcao que voce desenvolveu.

55
Passagem de parametros por vetores - matriz

Na linguagem C, a passagem de parametros de variaveis que representam vetores


ou matrizes sempre e uma passagem por referencia ;
Vejamos alguns exemplos de passagem destes tipos de variaveis

56
Passagem de parametros por referencia - Passagem de vetor

#i n c l u d e < s t d i o . h>
i n t M e n o r V a l o r ( i n t V , i n t tam ) {
int m = V[0];
int i ;
f o r ( i = 1 ; i < tam ; i++ )
i f ( V[ i ] < m )
m = V[ i ] ;
r e t u r n m;
}

i n t main ( )
{
i n t i , menor , idades [ 5 ] ;
f o r ( i = 0 ; i < 5 ; i++ ) {
p r i n t f ( E n t r e com a %d i d a d e > , i +1) ;
s c a n f ( %d , &i d a d e s [ i ] ) ;
}
menor = M e n o r V a l o r ( i d a d e s , 5 ) ;
p r i n t f ( Menor i d a d e e %d \n , menor ) ;
57
}
Passagem de parametros por referencia - Passagem de matriz

#d e f i n e TAM 5
v o i d s o m a M a t r i z ( i n t A [ ] [ TAM] , i n t B [ ] [ TAM] , i n t C [ ] [ TAM] ) {
int i , j ;
f o r ( i = 0 ; i < TAM; i++ )
f o r ( j = 0 ; j < TAM; j ++)
C[ i ] [ j ] = A[ i ] [ j ] + B[ i ] [ j ] ;
}
i n t main ( ) {
int i , j , A[5][5] , B[5][5] , C[ 5 ] [ 5 ] ;
f o r ( i = 0 ; i < TAM; i++ )
f o r ( j = 0 ; j < TAM; j ++) {
A[ i ] [ j ] = i ;
B[ i ] [ j ] = i ;}
s o m a M a t r i z (A , B , C) ;
}

58
Exerccio de fixacao 10

Faca um programa que tenha uma funcao chamada ClassificaTriangulo que


receba tres numeros positivos por parametro e retorne para a funcao principal se
os valores podem formar os lados de um triangulo e, caso positivo, o tipo de
triangulo .
Faca um programa que tenha uma funcao que receba um unico valor
representando um tempo em segundos. Essa funcao devera converte-los para
horas, minutos e segundos e retornar esses valores para ser exibidos na funcao
principal. Todas as variaveis devem ser passadas como parametro, nao havendo
variaveis globais.

59
Exerccio de fixacao 11

Faca um programa que tenha uma funcao que receba um vetor e retorne a media
dos valores desse vetor.

60
Exerccio de fixacao 12

Faca um funcao que receba como parametro um valor inteiro e positivo e retorne
a soma dos divisores desse valor.

61
Exerccio de fixacao 13

Faca um programa que leia 10 valores de resistencia e 10 valores de corrente e


para cada par (resistencia, corrente), calcule a tensa eletrica. Para calcular crie e
utilize a funcao CalculaTensao que usa dois parametros (resistencia e corrente).
Apresente os 10 valores de potencia calculados na funcao principal.

62
Exerccio de fixacao 14

Faca uma funcao que receba como parametro um valor inteiro e positivo N,
indicando a quantidade de parcelas de uma soma S, calculada pela formula:

2 5 10 17 26 (n2 + 1)
S= + + + + + ... +
4 5 6 7 8 (n + 3)

63
Exerccio de fixacao 15

Foi realizada uma pesquisa com 15 habitantes de uma regiao, na qual foram
coletados os seguintes dados: idade, sexo, salario e numero de filhos dessas
pessoas. Faca uma funcao que leia esses dados, armazenando-os em um vetor de
registros. Crie tambem uma funcao chamada Estatistica que receba esses vetor
como parametros as seguintes informatacoes:
A media Salarial dos habitantes;
A menor idade do grupo de habitantes;
A maior idade do grupo de habitantes;
A quantidade de homens que tem pelo menos 1 filho e recebem ate R$2.000,00
Procure criar uma rotina para cada informacao mostrada. Essas rotinas serao
ativadas dentro da funcao Estatistica

64
Exerccio de fixacao 16

Uma fabrica tem 10 representantes e cada um deles recebe uma comissao que
calculada a partir do numero de itens vendidos em um pedido. Os criterios
utilizados para se definir a comissao sao:
a) menos de 20 itens vendidos, a comissao e de 10% do valor total do pedido;
b) pedidos de 20 a 49 itens, a comissao e de 15% do valor total do pedido;
c) pedidos de 50 a 74 itens, a comissao e de 20% do valor total do pedido; e
d) pedidos iguais ou superiores a 75 itens, a comissao e de 25%.
Faca um programa que leia pedidos dos vendedores. Cada pedido tem como
informacoes o numero do vendedor (1 a 10), a quantidade de itens vendidos e o
valor total do pedido. Com base nessas informacoes voce deve calcular a comissao
desse vendedor nesse [Link] o usuario digita 0 no codigo do vendedor o
programa se encerra. Modularize o seu programa para que ele tenha uma funcao
responsavel para calcular essa comissao.
65

Você também pode gostar