|
![]() |
||
Aprendendo C: Algumas duvidas
|
||
. Nós temos 754.121 usuários, convidamos você fazer parte de nossa comunidade também! Se ainda não encontrou o que procura use nossa pesquisa. Esperamos que aprecie nosso trabalho.
![]() |
|
|
Opções do Tópico |
|
|
#1 (permalink) |
|
Super Participante
|
Oi pessoal. Beleza? Creio que eu cheguei ao "ápice" do Pascal e agora resolvi aprender algo que tenha um melhor suporte. Apesar do Free Pascal ser um compilador excelente ( e eu recomendo o uso deste ), o suporte ofericido a ela de forma geral ( OpenGL, DirectX, GTK, .Net e outras coisas mais legais de se aprender ) é quase que completamente renegado, sem contar que a base de dados mais atual que o Free Pascal suporta é o MySQL 4.0 ( percebam que o suporte está em fase de testes! Ele suporta com qualidade apenas o MySQL 3.28 o que me revolta... ).
Por isso ( e por outros motivos também ), resolvi aprender o C, espero poder contar com vocês pessoal. A minha primeira dúvida vem a ser esta: 1) No livro que estou lendo o autor passa esse código: Código:
... Vinicius Menezes ...
__________________
Monitor: TV Samsumg 32'' Processador: AMD Semprom 3000+ Memória: DDR2 2GB 667mhz ![]() Video: GeForce 8400 ![]() Som: OnBoard HD: Samsung 250GB |
|
|
|
|
|
#2 (permalink) | |
|
Zumbi
Registrado em: Jan 2004
Mensagens: 5.276
Reputação: 189
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Citação:
__________________
------------------------------------------------ Muito bom. Mas tijolo não revida! ------------------------------------------------ |
|
|
|
|
|
|
#3 (permalink) |
|
Super Participante
|
Beleza... alguém para responder a pergunta? Sei muito bem que o livro é orientado à Turbo C e Windows, mas como o meu outro livro de Pascal acredito que o GCC seja robusto o suficiente para entender meus códicos ( assimo como foi o Free Pascal ).
... Vinicius Menezes ...
__________________
Monitor: TV Samsumg 32'' Processador: AMD Semprom 3000+ Memória: DDR2 2GB 667mhz ![]() Video: GeForce 8400 ![]() Som: OnBoard HD: Samsung 250GB |
|
|
|
|
|
#4 (permalink) | |
|
Zumbi
Registrado em: Jan 2004
Mensagens: 5.276
Reputação: 189
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Citação:
__________________
------------------------------------------------ Muito bom. Mas tijolo não revida! ------------------------------------------------ |
|
|
|
|
|
|
#5 (permalink) |
|
Super Participante
|
Era isso que eu queria ouvir! Valeu pflynn, e obrigado pela correção, achei que tudo que era .h era uma biblioteca mesmo sabendo que a tradução de header é cabeçalho. Enfim. Valeu mesmo
. Obrigado pela sugestão também .... Vinicius Menezes ...
__________________
Monitor: TV Samsumg 32'' Processador: AMD Semprom 3000+ Memória: DDR2 2GB 667mhz ![]() Video: GeForce 8400 ![]() Som: OnBoard HD: Samsung 250GB |
|
|
|
|
|
#6 (permalink) | |
|
Zumbi
Registrado em: Jan 2004
Mensagens: 5.276
Reputação: 189
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Citação:
. E espero que a referência que passei possa ser útil .
__________________
------------------------------------------------ Muito bom. Mas tijolo não revida! ------------------------------------------------ |
|
|
|
|
|
|
#7 (permalink) |
|
Super Participante
|
Oi pflynn. Beleza? Surgiu uma duvida ao chegar ao segundo capitulo. Deixa eu exemplificar e depois perguntar:
Em pascal a declaração de uma variável com casas decimais se dá da seguinte maneira: Código:
Código:
- Short - Long O que viria a ser, então, uma variável declarada assim: Código:
... Vinicius Menezes ...
__________________
Monitor: TV Samsumg 32'' Processador: AMD Semprom 3000+ Memória: DDR2 2GB 667mhz ![]() Video: GeForce 8400 ![]() Som: OnBoard HD: Samsung 250GB |
|
|
|
|
|
#8 (permalink) |
|
Highlander
Registrado em: May 2002
Localização: Tijuca/RJ
Idade: 9
Mensagens: 87.724
Reputação: 778
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
vini, acho que vc pulou algumas aulas de pascal... se vc voltar lá, vai ver que existem dois tipos que lidam com valores de ponto flutuante (o nome certo pro que você chamou de "variável com casas decimais): o tipo real, que você citou, e o tipo double.
A diferença entre eles é exatamente o que você pensou: a precisão. O tipo real lida com valores de precisão simples, e equivale ao tipo float de C. O tipo double lida com valores de precisão dupla, e equivale ao tipo de mesmo nome (double) em C. Eu sei que existe, no entanto, mais um tipo de ponto flutuante em C: o tipo long double, que lida com valores de precisão quádrupla, e nas máquinas de arquitetura x86 é implementado em variáveis de 128 bits (contra 32 bits do real/float e 64 bits do double). PS: http://www.hardware.com.br/comunidade/viewtopic.php?p=1858686&highlight=#1858686
__________________
Visite Quepolis (link de indicação) | "chmod 777 nunca ajudou ninguém" (c) 2002-2010 JQueiroz/FGdH
CCNP: √ ² CCSI: □ | Conheça o Novo Bebuns ![]() |
|
|
|
|
|
#9 (permalink) | ||
|
Zumbi
Registrado em: Jan 2004
Mensagens: 5.276
Reputação: 189
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Citação:
Citação:
[unsigned] short int - pelo menos 16 bits [unsigned] long int - pelo menos 32 bits [unsigned] long long int - pelo menos 64 bits (C99) e float <= double <= long double (mas sem especificacão de tamanho) É mais ou menos isso ![]()
__________________
------------------------------------------------ Muito bom. Mas tijolo não revida! ------------------------------------------------ |
||
|
|
|
|
|
#10 (permalink) |
|
Super Participante
|
Hmm.... Entendi Jqueiroz e Pflynn. Quanto as aulas de Pascal que eu perdi Jqueiroz... acabei de procurar no livro ( de pascal ) e num achei nada a respeito :/. Que triste hein ( o livro )? Enfim... bom saber! Duvido que a minha professora de programação também saiba :P. Quanto a explicação, MUITO obrigado aos dois
, mas como bicho ruim num pára quieto :mrgreen: lá vou eu de novo ( haahahahahha :lol . Vejam o seguinte trecho:Código:
Valeu. ... Vinicius Menezes ...
__________________
Monitor: TV Samsumg 32'' Processador: AMD Semprom 3000+ Memória: DDR2 2GB 667mhz ![]() Video: GeForce 8400 ![]() Som: OnBoard HD: Samsung 250GB |
|
|
|
|
|
#11 (permalink) | ||
|
Highlander
Registrado em: May 2002
Localização: Tijuca/RJ
Idade: 9
Mensagens: 87.724
Reputação: 778
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Citação:
Citação:
Depois, vc fez n2 apontar para o endereço de n1. Então, tanto faz você usar n1 ou (*n2). Por último, vc fez (*n2) += n1. O que é o "+=" ??? Quando você faz "x += y", é como se você escrevesse "x = x + y". Idem para "-=", "*=", "/=", "&=", etc. Parece bobeira, não? Mas se você juntar isso com os operadores de auto-incremento e ponteiros, vai ver que a coisa muda: *(x++) += 5; equivale a *x = *x + 5; x = x + 1; Voltando ao nosso assunto, nós temos: *n2 += n1 Como a gente já viu, tanto faz usar "*n2" como "n1", pois n2 aponta para o endereço de n1. Então, é como se fizéssemos n1 += n1 O que equivale a n1 = n1 + n1 Como n1 valia 5, então depois dessa expressão, n1 (e por consequência *n2) vai valer 10. Agora, importante notar: não importa quanto você mexa em n1 ou em *n2, enquanto n2 estiver apontando para o endereço de n1, então o valor de n1 e *n2 vai ser sempre igual, pois é exatamente a mesma variável.
__________________
Visite Quepolis (link de indicação) | "chmod 777 nunca ajudou ninguém" (c) 2002-2010 JQueiroz/FGdH
CCNP: √ ² CCSI: □ | Conheça o Novo Bebuns ![]() |
||
|
|
|
|
|
#12 (permalink) |
|
Super Participante
|
Importante observação Jqueiroz! Obrigadão mesmo! é que vendo n2, n1... parecem diferentes.... mas realmente, sua dica valeu mesmo
.Abraços. Prometo voltar com mais dúvidas :P. ... Vinicius Menezes ...
__________________
Monitor: TV Samsumg 32'' Processador: AMD Semprom 3000+ Memória: DDR2 2GB 667mhz ![]() Video: GeForce 8400 ![]() Som: OnBoard HD: Samsung 250GB |
|
|
|
|
|
#13 (permalink) |
|
Super Participante
|
Promessa é divida e agora eu vou pagar a minha
.Estou eu aqui programando em C e aparece o loop for. O autor explica a sintaxe como sendo assim: Código:
Código:
Código:
Valeu. ![]() ... Vinicius Menezes ...
__________________
Monitor: TV Samsumg 32'' Processador: AMD Semprom 3000+ Memória: DDR2 2GB 667mhz ![]() Video: GeForce 8400 ![]() Som: OnBoard HD: Samsung 250GB |
|
|
|
|
|
#14 (permalink) | ||
|
Zumbi
Registrado em: Jan 2004
Mensagens: 5.276
Reputação: 189
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Citação:
Código:
Código:
Citação:
Código:
Em relação ao livro, o livro que lhe indiquei não é sobre a linguagem C em si, mas do uso dela no Linux. Se você quer um livro sobre a linguagem C pura e simplesmente, eu recomendo o "The C Programming Language", de Brian W. Kernighan e Dennis M. Ritchie.
__________________
------------------------------------------------ Muito bom. Mas tijolo não revida! ------------------------------------------------ |
||
|
|
|
|
|
#15 (permalink) |
|
Super Participante
|
Opa! Beleza. O downto era isso mesmo, só saquei depois ( dê uma olhada.. eu editei o Post e coloquei uma pergunta mais "macabra" :P ).
Quanto ao livro já tô com ele aqui, vou terminar de ler o que eu tô lendo agora ( Aprendendo a programar em linguagem C do Alfredo Boente - aliás... livro muito bom ) para ler esse ai e depois me afundar no livro que o Linus leu sobre sistemas operacionais: Operating System Design and Implementation .Mais dúvidas virão! Me aguardem .... Vinicius Menezes ...
__________________
Monitor: TV Samsumg 32'' Processador: AMD Semprom 3000+ Memória: DDR2 2GB 667mhz ![]() Video: GeForce 8400 ![]() Som: OnBoard HD: Samsung 250GB |
|
|
|
|
|
#16 (permalink) | |
|
Highlander
Registrado em: May 2002
Localização: Tijuca/RJ
Idade: 9
Mensagens: 87.724
Reputação: 778
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Citação:
Exemplo 1: Código:
Exemplo 2: Código:
Exemplo 3: Código:
Esses exemplos são pra te dar a idéia central: a gente incrementa/decrementa pq é o mais comum a se fazer num loop. Mas não quer dizer que só sirva pra isso. Serve apenas pra alterar o valor da expressão de controle a cada alteração. Da mesma forma, a condição de parada não precisa ser em cima da mesma variável. Ex: Código:
__________________
Visite Quepolis (link de indicação) | "chmod 777 nunca ajudou ninguém" (c) 2002-2010 JQueiroz/FGdH
CCNP: √ ² CCSI: □ | Conheça o Novo Bebuns ![]() |
|
|
|
|
|
|
#17 (permalink) |
|
Super Participante
|
Boa Jqueiroz! Excelente dica!
Mantenho a promessa mesmo assim .... Vinicius Menezes ...
__________________
Monitor: TV Samsumg 32'' Processador: AMD Semprom 3000+ Memória: DDR2 2GB 667mhz ![]() Video: GeForce 8400 ![]() Som: OnBoard HD: Samsung 250GB |
|
|
|
|
|
#18 (permalink) |
|
Super Participante
|
Opa! Voltei de novo :P.
Eu compilei esse programa(*) no DevC++ do windows e depois disso o programa não compila mais do jeito certo ( calma ai.. compila certinho mas não funciona igual a antes... ), por favor vejam o código: Código:
1) Por que isso acontece? 2) Como corrigir isso? Valeu pessoal. ... Vinicius Menezes ... (*) Nota do autor: Esse programa eu fiz depois de uma longa história entre eu e um amigo meu, algumas palavras foram retiradas para se adequar às regras do fórum :P... se quiser eu explico em MP, mas não vem ao caso no fórum técnico.
__________________
Monitor: TV Samsumg 32'' Processador: AMD Semprom 3000+ Memória: DDR2 2GB 667mhz ![]() Video: GeForce 8400 ![]() Som: OnBoard HD: Samsung 250GB |
|
|
|
|
|
#19 (permalink) | |
|
Super Participante
|
Mais umas dúvidas!
Fiz esse programa aqui ( é que eu fiquei traumatizado com a fórmula de bhaskara dai eu sempre faço programas pra resolver a fórmula de bhaskara quando eu estou apredendo uma linguagem nova :P ). Vejam: Código:
1) O livro diz que eu só posso efetuar a divisão com '/' se o resultado for inteiro ( ou seja... o double que eu tô usando ai no programa não serve... ), como que eu posso fazer uma divisão com dois números double? 2)Eu queria que toda vez que alguma resposta fosse dada pelo programa a mensagem: Citação:
3)Como que eu posso tirar raiz quadrada e elevar um número a outro número? em VB era X^y ( x elevado a y ) e no pacal era sqrt(número) ( raiz qudrada de (número)). Abraços. ... Vinicius Menezes ...
__________________
Monitor: TV Samsumg 32'' Processador: AMD Semprom 3000+ Memória: DDR2 2GB 667mhz ![]() Video: GeForce 8400 ![]() Som: OnBoard HD: Samsung 250GB |
|
|
|
|
|
|
#20 (permalink) |
|
Newbie
Registrado em: Apr 2005
Mensagens: 7
Reputação: 0
![]() |
Eu so sei responder a questão 3
Código:
|
|
|
|
![]() |
| Opções do Tópico | |
|
|