Você está na página 1de 9

Estruturas de dados homogneas

Exerccio 42: Com o objetivo de melhor fixar alguns aspectos abordados, trabalharemos neste exerccio a diferena existente entre o tipo primitivo caractere disponvel para construo de algoritmos e o tipo primitivo char disponvel na linguagem C. Na linguagem C uma string um vetor de caracteres. Porm, obrigatoriamente um dos caracteres do vetor deve ser o caractere nulo, ou seja, o '\0'. O caractere nulo sucede o ltimo caractere vlido da string em questo. Com base no que foi exposto, construa um algoritmo que manipule um vetor de strings com 10 elementos onde o comprimento mximo das string de 30 caracteres. As manipulaes que devem ser efetuadas so: inicializar vetor, com strings fornecidas pelo usurio; e imprimir o contedo do vetor, aps a inicializao. 306

funcao caractere_valido (aux: caractere): logico inicio retorne (aux=" " ou aux="!" ou aux="#" ou aux="$" ou aux="%" ou aux="&" ou aux="'" ou aux="(" ou aux=")" ou aux="*" ou aux="+" ou aux="," ou aux="-" ou aux="." ou aux="/" ou aux="0" ou aux="1" ou aux="2" ou aux="3" ou aux="4" ou aux="5" ou aux="6" ou aux="7" ou aux="8" ou aux="9" ou aux=":" ou aux=";" ou aux="<" ou aux="=" ou aux=">" ou aux="?" ou aux="@" ou aux="A" ou aux="B" ou aux="C" ou aux="D" ou aux="E" ou aux="F" ou aux="G" ou aux="H" ou aux="I" ou aux="J" ou aux="K" ou aux="L" ou aux="M" ou aux="N" ou aux="O" ou aux="P" ou aux="Q" ou aux="R" ou aux="S" ou aux="T" ou aux="U" ou aux="V" ou aux="W" ou aux="X" ou aux="Y" ou aux="Z" ou aux="[" ou aux="\" ou aux="]" ou aux="^" ou aux="_" ou aux="`" ou aux="{" ou aux="|" ou aux="}" ou aux="~") fimfuncao

307

algoritmo "vet_strings" var vet_strings: vetor [1..10, 1..31] de caractere i, j: inteiro aux: caractere funcao caractere_valido (aux: caractere): logico inicio retorne (...) fimfuncao inicio para i de 1 ate 10 faca escreva ("Obs.: Digite um a um os caracteres que compem a" ) escreval (" string, pressionando aps") escreval ("cada caractere a tecla enter.") escreva ("A leitura de uma string finalizada pelo fornecimento") escreval ( de 30 caracteres ou") escreval ("pelo fornecimento do caractere espao ' '.") escreval ("Entre com os caracteres da ",i," string:") para j de 1 ate 30 faca repita leia (aux) ate (caractere_valido(aux)) se (aux=" ") entao interrompa senao vet_strings[i,j]<-aux fimse 308 fimpara

vet_strings[i,j]<-"\0" se (j=31) entao escreval ("Ateno! Tamanho mximo da ",i," string atingido.") se (i<>10) entao escreval ("Os prximos caracteres a serem digitados pertencero a ",i+1," string") fimse fimse fimpara escreval ("Contedo do vetor.") para i de 1 ate 10 faca escreva (i," string: ") para j de 1 ate 30 faca se (vet_strings[i,j]<>"\0") entao escreva(vet_strings[i,j]) senao interrompa fimse fimpara escreval("") fimpara fimalgoritmo //nesta resposta no explorei adequadamente o conceito de //modularizao, pois minha inteno foi deixar o algoritmo compatvel //com o VisuAlg. Possibilitando que os alunos o utilizem para interpretar //a soluo. 309

Estruturas de dados heterogneas


Registros Vimos inmeras aplicaes onde so necessrios conjuntos de elementos do mesmo tipo, e para tal utilizamos os vetores. No entanto em alguns problemas h necessidade de definirmos conjuntos onde os elementos no sejam do mesmo tipo. Um tpico exemplo de nosso cotidiano utilizao do conjunto de informaes que caracterizam um aluno: Nome(caractere), CPF(inteiro), RG(inteiro), data de nascimento(caractere), coeficiente de rendimento(real), etc..
310

Estruturas de dados heterogneas


Em uma anlise superficial um estudante poderia pensar que uma soluo para a questo apresentada poderia ser obtida declarando-se cinco variveis: algoritmo exemplo var Nome: caractere CPF: inteiro RG: inteiro data_de_nascimento: caractere coeficiente_de_rendimento: real Para uma melhor visualizao da utilidade dos registros basta imaginarmos que ao invs de manipular as informaes de um aluno exista a necessidade de gerenciamento de uma turma com cinqenta alunos. 311

Estruturas de dados heterogneas


Um estudante desatento imaginaria ser necessrio a declarao de 250 variveis. Porm um estudante com uma viso adequada sugeriria a utilizao de cinco vetores:
algoritmo exemplo var Nomes: vetor [1..50] de caractere CPFs: vetor [1..50] de inteiro RGs: vetor [1..50] de inteiro datas_de_nascimento: vetor [1..50] de caractere coeficientes_de_rendimento: vetor [1..50] de real

Porm, manipular de forma adequada os vetores, mantendo seus dados consistentes, se torna trabalhoso. Com a utilizao de um registro podemos resolver este problema apenas com um vetor de cinqenta registros. 312

Estruturas de dados heterogneas


Exemplo: algoritmo exemplo var alunos: vetor [1..50] de registro inicio nome: caractere CPF: inteiro RG: inteiro datas_de_nascimento: caractere coeficientes_de_rendimento: real fimregistro A cada um dos elementos que constituem um registro dado o nome de campo. No exemplo acima, temos os campos: nome, CPF, RG, datas_de_nascimento e coeficientes_de_ 313 rendimento.

Estruturas de dados heterogneas


Com base no exemplo anterior podemos extrair a estrutura geral para a declarao de um registro: <nome_da_variavel>: registro inicio <nome_campo_1>: <tipo_campo_1> <nome_campo_2>: <tipo_campo_2> <nome_campo_n>: <tipo_campo_n> fimregistro

314

Você também pode gostar