Este texto está desatualizado e em processo de ser atualizado

Epa, primeira mini-aula de C e programação para vocês amigos… tentarei manter um ritmo mais acelerado e orgânico  dos posts à partir de agora (necessita de fontes, como diria a wikipedia).

Para tentar fazer as coisas fluirem melhor, vou apresentar alguns programas simples e à partir deles explicar conceitos sobre a linguagem.

Código no pastebin

Para brincar você pode copiar este texto e colar no editor que você está usando ou, para ganhar mais pontos de experiência, digitar ele todo (vamos lá, vai ser divertido). Vide a aula 0 ou pergunte nos comentários do post para ajuda na instalação de um editor.

Os comentários

Como você pode ver existem alguns textos explicativos salpicados no meio do código, estes se chamam comentários e servem para, exatamente, explicar partes do código. Um comentário pode ser denotado de duas maneiras diferentes.

// este é um comentário até o fim da linha
isto aqui não é mais um comentário e irá dar pau

/* este comentário não acaba
  na mesma linha

  como vocês podem ver */ aqui já acabou, escrever isso
está dando um baita pau no programa

É um daqueles conceitos que no início parecem desinteressantes mas que com o tempo irão fazer sentido. Comentários devem ser usados para facilitar a leitura do seu código por outras pessoas e por você mesmo, outra coisa que com o tempo ficará bem clara.

Importante notar que os comentários são invisíveis do ponto de vista do computador, eles não são embutidos no seu programa, de fato linhas que estão comentadas serão totalmente ignoradas pelo compilador (o camarada que traduz o que você diz para um formato executável pelo computador, mais sobre ele em um tempo futuro).

/*

Como você pode ver, este é um bloco de comentário dentro do meu texto. Pretendo denotar desta meta-maneira trechos do texto os quais terão informações mais técnicas, difíceis e possivelmente chatas e que você pode ignorar se quiser.

Para nos aquecermos falarei mais sobre os comentários. Como eu citei anteriormente linhas comentadas serão ignoradas no código, então no exemplo acima poderíamos fazer:

//printf("Senhor, quantos X-Burguers gostaria?n");

Pronto, se você compilar e rodar o programa novamente este trecho não estará mais presente. Este truque pode ser usado para seletivamente remover partes de código que não funcionam ou são indejadas no momento, mas sem apagá-las.

O uso de comentários geralmente é recomendado para explicar suas intenções e não literalmente o que você está fazendo.

int a = 0; //variável a recebe o valor 0
//nossa eu nunca ia reparar!

É claro que para os iniciantes um código cheio de suculentos comentários didáticos é um pote de ouro no fim de um arco-íris de sintaxe colorida e por esse motivo a maioria dos meus códigos aqui virá cheia de deles.

*/

main, uma nota rápida

Seria muita indiscrição minha não falar nada sobre esta “coisa” chamada main, mas por motivos de força maior terei que ser muito breve. O que vocês precisam saber é que o seu programa deve ser escrito dentro dela, ou seja, entre as { }. Não me venha chorar se você escrever fora e o seu código não funcionar!

Entrada e Saída

Continuando, vamos analisar esse código dividindo-o em pequenos pedaços. A primeira linha abaixo do primeiro comentário significa, impressionantemente, que estamos incluindo no nosso código o arquivo stdio.h . Este garotão é uma das bibliotecas que eu falei na aula passada. Vem a ser o caso que entrada e saída (E/S ou I/O como também é chamada) é provida para nós por esta biblioteca, como também vem a ser o caso que imprimir um texto na tela seja uma operação de E/S.

Operações de Entrada e Saída (E/S) ou Input/Output são, no contexto de uma linguagem de programação, o conjunto de comandos que tratam da comunicação sistema-humano ou sistema-sistema. Um exemplo do primeiro é apresentar uma informação na tela para o usuário (output) e/ou receber informações pelo teclado (input). O segundo caso pode ser ilustrado como uma operação de escrita/leitura em um dispositivo de memória permanente (criação e leitura de arquivos no disco) ou até uma comunicação via rede.

Portanto o comando printf é que merece os agradecimentos. O print você já deve saber que quer dizer “imprimir”, aquele ‘f’ extra significa formatar ,mas você não deveria se preocupar com isso agora. Um template para você escrever coisas na tela é:

printf("frasen");

/*

Como você pode ver aquele texto que foi impresso na tela estava entre aspas. Em C um texto denotado dessa maneira se chama uma string e na realidade representa uma cadeia de valores, um para cada letra.

'f','r','a','s','e','n','\0'

Você também deve estar se perguntando o que é aquele n que eu coloco no final das strings. Bem isso indica uma quebra de linha, ou seja, sem ele todo o texto impresso ficaria colado verticalmente.

Outro sujeito estranho é esse tal de \0 , por que ele apareceu do nada? Bom este cara fica implícito nas strings. Ele é um caracter com o valor 0 que serve para indicar que aquele ponto é o fim da string. Precisamos dele porque o C não guarda, por padrão, o tamanho das strings e os diversos comandos que as manipulam tem que levar em conta este terminador para saber quando chegou o fim.

*/

Outro comando que dá as caras é o scanf. Como você deve desconfiar ele faz o oposto do printf, recebe um valor do usuário pelo teclado:

scanf("%d",&burguer_number);

O que acontece aqui é que o valor numérico digitado pelo usuário será guardado na variável (este conceito será introduzido na próxima aula, mas você já deve estar começando a desconfiar o que ele significa) chamada burguer_number.

A string que aparece como primeiro parâmetro (vamos começar a chamar os valores que passamos para os comandos assim) é bem estranha certo? Aquele % denota que o próximo caracter deve ser interpretado de forma “especial”. O que “%d” quer dizer é: um número decimal. Isto informa para o comando que estamos esperando este tipo de entrada.

/*

Garotos mais observadores notarão que que existe um caracter & na frente do nome da variável. Este &, chamado carinhosamente de ‘e comercial’, quando colocado nesta posição denota que queremos extrair o endereço daquela varíavel.

Não, isso não precisa fazer sentido agora. Pretendo explicar esse assunto em detalhes posteriormente. Porém se você quiser uma analogia, imagine que queremos “entregar” o valor lido para a variável e não podemos fazer uma entrega sem saber o endereço.

Pontos extras para quem quiser brincar um pouco e experimentar o programa sem aquele &. Ele vai rodar mas provavelmente vai acusar um erro, xingar a sua mãe e fechar.

Outro detalhe importante é que só podemos esperar que seja digitado o que pedimos na string do nosso scanf. Quando isto não acontece infelizmente sua progenitôra não será poupada e seu programa provavelmente irá fechar. Métodos para fazer o seu programa invulnerável à este tipo de coisas não serão discutidos agora.

*/

Por fim: respostas

Ao final do programa a linha

printf("Seu pedido de %d X-Burguers ficará pronto em %d minutos.n",burguer_number, burguer_number * 10);

Imprimirá algo parecido com isto:

Seu pedido de 2 X-Burguers ficará pronto em 20 minutos.

Como você pode ver o nosso amigo %d apareceu mais uma vez numa string, o significado dele é sempre o mesmo, mas note que isto agora é uma impressão. Pelo resultado final você deve ter percebido que os valores especificados logo após a string foram embutidos na ordem que aparecem no resultado final. Incidentalmente você pode notar que fizemos um cálculo sobre o segundo valor, mais especificamente, o multiplicamos por 10.

Conclusão

Esta aula acabou saindo bem mais devagar do que eu planejava, gostaria de feedback. O formato do texto está bom? Confuso? Muito informal?

O que deve estar semi-claro na mente de um leitor deste texto:

  • Comentários
  • Comandos de entrada e saída

Só isso? Sim, os textos opcionais são obviamente bônus para os mais interessados.

Referências

Deixem observações, dúvidas, sugestões, correções e pedidos de ajuda nos comentários.

Você provavelmente curtirá: