[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: freq_ABB



Daniel Cukier writes:
 > >>  > 2. Não entendi bem o processo que cria um nó novo:
 > >>  >
 > >>  > s_aux = (char *) malloc(strlen (s) + 1);
 > >>  > strcpy(s_aux, s);
 > >>  > t->palavra = s_aux;
 > >>  >
 > >>  > Não poderia usar t->palavra direto no lugar de s_aux, ja que os dois
 > >>  > são do mesmo tipo e vão acabar apontando para a mesma cadeia?
 > >>
 > >> Eles nao apontam para a "mesma" cadeia.  Fazemos uma copia de s em s_aux.
 > >> Isto é importante, como acredito que mencionei em sala.  Caso não
 > >> fizéssemos uma copia de s, quando fizéssemos a leitura da proxima
 > >> palavra (em s!) perderiamos a palavra lida anteriormente.
 > >
 > >Tudo bem, desde que ela esteja armazenada em t->palavra, não?
 > 
 > O que acontece é que t->palavra é apenas um APONTADOR, ou seja, não se
 > armazena um STRING nele e sim UM ENDEREÇO onde essa string se encontra.
 > O processo ocorre da seguinte maneira:
 > 
 > s é lido. Digamos que s seja "YOSHI" (não que eu esteja puxando o saco)
 > Quando fazemos t->palavra = s, t->palavra conterá um apontador o "Y", no
 > caso, o primeiro caractere da string. Ao lermos uma próxima palavra, t->
 > palavra continuará apontando para s, ou seja, a nova palavra. Não é o que
 > queremos. Queremos ARMAZENAR todas as palavras.
 > 
 > Para isso, usa-se o malloc, que aloca um pedaço da memória onde ele colocará
 > a palavra. Esse "pedaço" da memória está associado ao apontador  s_aux, que
 > aponta novamente para o 1o. caractere do espaço de memória alocado. Ao se
 > definir t->palavra = s_aux, estamos dizendo que a palavra que queremos ter
 > para t está no endereço de memória alocado anteriormente.
 > 
 > Será que as coisas estão mais claras agora. Eu, pra dizer a verdade, estou
 > começando só AGORA a entender essa filosofia de apontadores e alocações de
 > memória. Isso é realmente novo para que estava acostumado com Pascal ou
 > qualquer outra linguagem de mais alto nível. 

A discussao sobre linguagens é certamente muito ampla.  Aqui estao algumas
paginas de interesse:

Pagina do Kernighan 

  http://cm.bell-labs.com/who/bwk/

que contem os seguintes links: 

(1) sobre o livro de C (K&R):

  http://cm.bell-labs.com/cm/cs/cbook/index.html

(2) um artigo de Kernighan sobre Pascal:

  Why Pascal is Not My Favorite Programming Language (April, 1981); dois
  formatos:  

    http://www.cs.bell-labs.com/cm/cs/cstr/100.ps.gz
    http://www.ime.usp.br/~anr/misc/pascal.txt

Tem também a pagina do Ritchie: 

  http://www.cs.bell-labs.com/who/dmr/

com o link 

  `The Development of the C Language', 1993: 
   http://cm.bell-labs.com/cm/cs/who/dmr/chist.html

Yoshi

 > A linguagem C tem muitas
 > peculiaridades. Com certeza, todo mundo do BCC vai achar ridículo de fácil
 > essas peculiaridades. Mas isso no futuro (pelo menos para aqueles que estão
 > começando agora). Eu mesmo, pra dizer a verdade tenho muitas dificuldades em
 > C. Eu consigo ler um programa inteirinho e entendo ele, depois de algumas
 > repetições de leitura. Mas ainda tenho muita dificuldade em escrever. Nunca
 > sei se o que estou fazendo é a melhor coisa, se existe alguma maneira mais
 > fácil de escrever algum comando, enfim, estou apanhando feio do C.
 > As vezes acho que posso fazer uma analogia com a língua falada. Por exemplo,
 > muita gente entende bastante Inglês, mas na hora de falar é um gago de
 > primeira. Isso é só insegurança e falta de prática. Com o tempo e com a
 > prática adquiri-se segurança. É só isso que a gente precisa: um pouco mais
 > de tempo pra poder se acostumar com o maravilhoso mundo de C.
 > 
 > Falou!
 > 
 > Daniel Cukier
 > danicuki@linux.ime.usp.br
 > dcukier@colband.com.br
 > danicuki@base.com.br
 > >
 > >--
 > >~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 > >Tiago Minchillo da Silveira
 > >Kiron Multimídia - http://www.kiron.com.br
 > >Homepage pessoal em construção!!! Em breve divulgo o endreço.
 > >Nick no IRC/ICQ: Duke Jeffrie - UIN: 9350490
 > >~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~