22.10.2014 Views

Aprendendo a Programar Programando em Linguagem C - FSM

Aprendendo a Programar Programando em Linguagem C - FSM

Aprendendo a Programar Programando em Linguagem C - FSM

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

valor da posição onde foi encontrada uma componente maior do que Maior.<br />

float MaiorEl<strong>em</strong>ento(float *v, int t, int *p)<br />

{<br />

int i;<br />

float Maior;<br />

Maior = v[0];<br />

*p = 0;<br />

for (i = 1; i < t; i = i + 1)<br />

if (v[i] > Maior)<br />

{<br />

Maior = v[i];<br />

*p = i;<br />

}<br />

return(Maior);<br />

}<br />

Uma chamada desta função vai requerer, além do vetor p onde está armazenada a relação, duas<br />

variáveis, digamos Maior e Pos; nestas condições a ativação da função será feita através do comando<br />

Maior = MaiorEl<strong>em</strong>ento(p, Quant, &Pos);<br />

onde p é o vetor onde está armazenada a relação, Quant é a quantidade de el<strong>em</strong>entos da relação e &Pos é o<br />

endereço da variável que irá armazenar a posição da ocorrência do maior el<strong>em</strong>ento procurado.<br />

Vale ressaltar que, na função acima, adotamos a passag<strong>em</strong> por referência "formato Turbo C 2.01" que<br />

também funciona no Turbo C++ 3.0.<br />

4. O ex<strong>em</strong>plo a seguir t<strong>em</strong> o objetivo de mostrar que o índice de acesso às componentes de um vetor<br />

pode ser dado através de expressões, como já foi dito anteriormente. O ex<strong>em</strong>plo mostra uma função que,<br />

recebendo dois vetores com a mesma quantidade de el<strong>em</strong>entos, gera um vetor intercalando as componentes<br />

dos vetores dados. Assim se v 1 = {4, 8, 1, 9} e v 2 = {2, 5, 7, 3} a função deve gerar o vetor v = {4, 2, 8, 5, 1,<br />

7, 9, 3}. Observe que as componentes ímpares de v são os el<strong>em</strong>entos de v 1 e as componentes pares são os<br />

el<strong>em</strong>entos de v 2 .<br />

void IntercalaVetor(float *v1, float *v2, float *v, int t)<br />

{<br />

int i;<br />

for (i = 0; i < 2 * t; i = i + 1)<br />

if (i % 2 == 1)<br />

v[i] = v2[(i - 1)/2];<br />

else<br />

v[i] = v1[i/2];<br />

}<br />

5. Agora apresentar<strong>em</strong>os um ex<strong>em</strong>plo que mostra um vetor cujas componentes são cadeias de<br />

caracteres, além de mostrar como um vetor de caracteres pode ser inicializado. Trata-se de uma função que<br />

retorna o nome do mês correspondente a um número dado, que poderia ser usada num programa que<br />

escrevesse por extenso uma data da no formato dd/mm/aaaa.<br />

char *NomeMes(int n)<br />

{<br />

char *Nome[13] = {"Mes ilegal", "Janeiro", "Fevereiro", "Marco", "Abril", "Maio", "Junho", "Julho",<br />

"Agosto", "Set<strong>em</strong>bro", "Outubro", "Nov<strong>em</strong>bro", "Dez<strong>em</strong>bro"};<br />

if ((n > 0) && (n < 13))<br />

return(Nome[n]);<br />

else<br />

return(Nome[0]);<br />

}<br />

Observe que a inicialização do vetor se faz quando da sua declaração, com a enumeração dos valores<br />

das componentes entre chaves, como a mat<strong>em</strong>ática faz com conjuntos. Observe também que a função<br />

NomeMes() retorna um ponteiro para uma variável do tipo char, o que significa que retornará uma cadeia de<br />

caracteres (uma string), pois, como ver<strong>em</strong>os no próximo capítulo, uma string é um vetor de caracteres. Este

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!