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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

int NumItens, *Itens, *Quant;<br />

float *Valor;<br />

char S = 'n';<br />

do<br />

{<br />

clrscr();<br />

NumItens = Pedido(Itens, Quant, Valor);<br />

if (NumItens != 0)<br />

ExibePedido(Itens, Quant, Valor, NumItens);<br />

puts("Outro pedido (S/N)?");<br />

fflush(stdin);<br />

scanf("%c", &S);<br />

}<br />

while (toupper(S) != 'N');<br />

}<br />

7. Mostrar<strong>em</strong>os agora um ex<strong>em</strong>plo cujo objetivo é desenvolver o raciocínio recursivo utilizando<br />

vetores. Trata-se de uma função recursiva para a determinação da soma das componentes de um vetor, coisa<br />

já feita iterativamente no interior da função Media() desenvolvida no ex<strong>em</strong>plo 1. Ora, como uma função que<br />

trata vetores recebe s<strong>em</strong>pre o vetor e o seu tamanho, pod<strong>em</strong>os recursivamente “diminuir” o tamanho do vetor<br />

através do decr<strong>em</strong>ento do parâmetro respectivo até que o vetor “tenha apenas uma componente”, quando<br />

então a soma das componentes se reduzirá a esta “única” componente.<br />

/*Função recursiva que retorna a soma das componentes de um vetor*/<br />

int SomaCompRec(float *v, int t)<br />

{<br />

if (t == 1)<br />

return v[i – 1];<br />

else<br />

return v[t - 1] + SomaComRec(v, t – 1);<br />

}<br />

6.6 Vetores multidimensionais<br />

Na seção 6.1 foi dito que um vetor é um conjunto de variáveis de mesmo tipo, chamadas componentes<br />

do vetor. A linguag<strong>em</strong> C permite que as componentes de um vetor sejam também vetores, admitindo que se<br />

armazene uma matriz da mat<strong>em</strong>ática, uma tabela de dupla entrada que, por ex<strong>em</strong>plo, enumere as distâncias<br />

entre as capitais brasileiras ou um livro considerando a página, a linha e a coluna <strong>em</strong> que cada caractere se<br />

localiza.<br />

A declaração de um vetor multidimensional é uma extensão natural da declaração de um vetor<br />

unidimensional:<br />

Tipo de dado Identificador[n 1 ][n 2 ] ... [n k ];<br />

onde k indica a dimensão e n 1 , n 2 , ..., n k indicam o número de componentes <strong>em</strong> cada dimensão.<br />

Por ex<strong>em</strong>plo, a declaração<br />

int Mat[10][8];<br />

define um vetor de dez componentes, cada uma delas sendo um vetor de oito componentes. Ou seja, Mat é<br />

um conjunto de 10 x 8 = 80 variáveis do tipo int.<br />

Para um outro ex<strong>em</strong>plo, a declaração<br />

char Livro[72][30][30];<br />

define uma variável capaz de armazenar os caracteres de um livro com até setenta duas páginas, cada página<br />

possuindo trinta linhas e cada linha possuindo trinta colunas.<br />

A inicialização de um vetor multidimensional também segue o padrão da inicialização de um vetor<br />

unidimensional, com a ressalva de que as componentes, que agora são vetores, dev<strong>em</strong> estar entre chaves. Por<br />

ex<strong>em</strong>plo, se quiséss<strong>em</strong>os um vetor bidimensional para armazenar os números de dias dos meses do ano,<br />

fazendo a distinção entre anos bissextos e não bissextos poderíamos declarar e inicializar um vetor

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

Saved successfully!

Ooh no, something went wrong!