My life in English

Aiming to be a Canadian citizen.

Muitas desculpas e satisfações a dar

Posted by fabianovasconcelos on 15 de November de 2009

Fala aê, galerinha!

Bom, sei que muita gente que lê o meu blog deve estar decepcionada comigo, porque pensam que eu os abandonei. Dexei de responder muitas mensagens e de postar as continuações do curso de C. Não vou culpar ninguém por isso e nem tirar a razão de vocês, mas eu vim aqui pra me explicar e tentar reabilitar minha imagem perante vós, tão desocupados pacientes leitores.

Vamos começar a série de desculpas esfarrapadas:

1. Como muita aqui gente sabe, o meu notebook HP deu pau (pela segunda vez) e eu mandei-o pra assistência técnica. Diga-se de passagem, computador da HP, nunca mais! No mundo inteiro eles estão dando pau. Aqui, nos EUA, na Europa, etc. Mandei-o pra autorizada e eles demoraram mais de 30 dias pra devolver o meu dinheiro. No trigésimo primeiro dia eu fui no DECON, pedir o meu dinheiro de volta. Mais de um mês depois eu consegui que esse dinheiro fosse devolvido.

2. Resolvi comprar um notebook da DELL. Depois de escolher a configuração, comprei-o. Mas comprar um notebook da DELL não significa usá-lo de imediato. Passei quase outro mês esperando o bicho chegar. Sim, porque ele só é vendido pela internet ou por telefone. Tem que esperar fabricarem, remeterem, chegar, agendar a entrega em casa e selarem a nota fiscal. Não queiram saber a tortura psicológica que passa um cliente da DELL que espera um produto. Fora isso, o notebook parece espetacular!

3. Tem 8 dias que eu recebi o notebook. Ainda estou organizando o bicho, instalando programas, conhecendo os recursos (não sei usar o leitor de cartão e nem o bluetooth, por exemplo, coisa de pobre), sem falar que as provas da facul tão me apertando. Se eu não cuidar vou reprovar num monte de coisa.

4. Alguém deve estar se perguntando: e porque você não arrumou outro computador pra postar dele? Oras, já é difícil postar no meu próprio, imagina no dos outros. Todo dia eu perturbava o juízo do meu vizinho só pra rastrear o meu pedido de notebook. Ele já tava em tempo de me mandar pra aquele lugar.

Bom, galera! Espero que tudo volte ao normal. Vou voltar a postar e queria contar com a falta de vergonha na cara compreensão de vocês. Eu tô com uma idéia aí de fazer video-posts ou audio-posts. Se pegar, a maioria será assim. Melhor pra mim, que escrevo menos e pra vocês preguiçosos atarefados, que não precisarão ler.

Então, vocês me perdoam?

“Siiiiiiiiiiiiiiiiiiiiiimmmmmmmmmmmmmmmmmm!!!”

Obrigado, eu sabia que poderia contar com a benevolência de vossos corações!

Eu tô de volta, com força total!!! 😀

Um abraço a todos, cambada!

Té mais!

Advertisements

Posted in Genéricos, mas de confiança! | Tagged: , , , , , , , , | 2 Comments »

Vamos aprender a programar em C/C++? Lição 05: compilação, linkedição e chamadas a bibliotecas

Posted by fabianovasconcelos on 12 de September de 2009

Salve, galerinha do país com a maior densidade de canalhas do mundo!

Aos que acreditam piamente que José Sarney é inocente, notem que alguns termos são um link para páginas externas. Clique neles, se necessitar de alguma informação complementar a respeito.

Tá mais perdido que eleitor do Governador do Distrito Federal? Pois você veio parar num curso on line de C/C++! Clica aqui pra ver o índice!

A bola da vez agora são os aspectos de compilação. Tanto atendendo a pedidos, quanto porque já estava no cronograma. De agora em diante, nós vamos entender, cada vez mais, como funciona aquele programinha do “HELLO WORLD!” que a gente escreveu no post passado.

Recaptulando o que foi estudado anteriormente, eu vou citar um parágrafo do post anteior:

Na linha 2 você vê o texto #include <stdio.h>. A diretiva #include fala pro compilador (na realidade o pré-processador) incluir no seu código, MAIS CÓDIGO! pois é. É que se você tivesse mesmo que programar, digitar, escrever tudo que é necessário pro seu programa funcionar, você iria apanhar mais que cão pra ir pra missa. Só pra você ter uma idéia, #include <stdio.h> é traduzido como: “além do que eu escrever aqui, eu quero que se junte ao meu código um outro pedaço de código do arquivo stdio.h, que está num diretório, do meu compilador,  lá na casa do caramba”. O arquivo em questão são instruções de entrada e saída padrões para o programa. Ainda bem que alguém já escreveu isso por nós.

Baseado nisso daí, a gente vai começar a entender o processo de linkedição.

Imagine que você já é um programador profissional. Um cara que faz grandes programas, ou seja, um garoto de programa. Se for menina, uma garota de programa. (Garotas de programa, comentem aqui! Vocês estão em falta).

Então você é contratado pra fazer um programa bem grande, um programa que levará mais de um mês pra ficar pronto, trabalhando todos os dias, 8 horas por dia. Você começa o seu código devagarinho, com a função main, que é a primeira função de um programa em C. Inicialmente o programa tem só 10 linhas. De repente, no final do dia, ele já tem 800 linhas. No final da semana ele já tem 6000 linhas. Aí você fica espantadérrimo com aquilo tudo. “Nossa! Fui eu sozinho quem fez isso?”  Foi, sim! É porque leu o blog do NewWave, oras!

Acontece que, toda vez que você escrevia uma função nova, tinha que compilar o programa inteiro pra testar aquela função, saber se ela estava bem escrita, sem bugs (erros), se precisava ajustar algo, acrescentar algo, etc. Mas o processo de compilação de um programa é tão demorado quanto o seu tamanho, ou seja, quanto mais o programa cresce em linhas de código, mais demorado é pra transformá-lo em binário. Tem programas que demoram horas pra compilar. Pensando nisso, a galera do C resolveu permitir a divisão dos programas em arquivos, onde você pode muito bem criar seus códigos em módulos. Assim, quando você terminar de criar um módulo (em forma de um arquivo relativamente pequeno) é só compilá-lo e juntar ao restante do código que já foi compilado anteriormente. Isso se chama LINKEDIÇÃO! Agora vamos detalhar tudo isso pra uma melhor compreensão.

Ah! Como é boa e pacata a vida de programador!

Ah! Como é boa e pacata a vida de programador!

  • Bibliotecas

Provavelmente você já deve ter ouvido falar, no mundo da informática, das “bibliotecas”. Não, não se trata de um lugar grande, cheio de prateleiras e livros. Eu estou falando de subprogramas de computador, arquivos binários, geralmente não executáveis que ficam armazenados em diretórios específicos de sistema.
Como você já deve ter entendido, as bibliotecas podem ser anexadas ao programa em tempo de compilação ou em tempo de execução. Para isso existem dois tipos de biblioteca: a biblioteca dinâmica (dynamic library) e a biblioteca estática (static library). A diferença de uma pra outra é o momento de atuação. Não se apavore! Eu falei atuação e não autuação.

Falando de bibliotecas dinâmicas, quando um programa é compilado, ele fica igual a um queijo suiço, ou seja, cheio de buracos. No momento em que ele é executado e todas as vezes que ele é executado, as bibliotecas dinâmicas são chamadas pelo linker pra tapar esses “buracos” e o programa rodar certinho. Aí sim ele ficará completo. Bibliotecas dinamicas mas são, praticamente, programas como qualquer outro, a diferença é que não são chamadas diretamente pelo usuário, mas carregadas apenas por outros programas. Exemplos de bibliotecas dinâmicas: as dll’s do windows e os .so do linux.
Já no caso das bibliotecas estáticas, as coisas acontecem um pouco diferente. No processo de compilação, o linker une o programa que você escreveu (compilado) com as bibliotecas estáticas necessárias ao funcionamento do programa. Após esta operação, acontece a fusão, tornando-se tudo um só arquivo, programa e biblioteca(s). Essa fusão não acontece com a linkedição dinâmica e esse processo só acontece uma única vez. Exemplos de bibliotecas estáticas: as .a e as .lib.

Bibliotecas geralmente são de uso genérico, ou seja, uma mesma biblioteca pode ser o complemento de muitos programas. Por exemplo, a biblioteca vbrun.dll, do Micro$oft Rwindows, é requerida em muitos programas que tem como base o VB (visual basic) pra que estes consigam rodar. Isso livra o programa de ter um tamanho monstruoso. Pensa aí: se eu tenho cem programas, no mesmo HD, que necessitam de uma mesma biblioteca, e esta biblioteca é relativamente grande em bytes, pra que é que eu vou incorporar a mesma biblioteca cem vezes em cada programa, se eu posso ter apenas uma cópia compartilhada para todos os programas? Seria idéia de eleitor do Collor, não é mesmo? Mas aí já sabe: se a biblioteca requerida pelo programa não estiver presente no seu PC ou se estiver na pasta errada que não a pasta padrão das bibliotecas, o programa não vai rodar e vai emitir um erro.

Em alguns casos as bibliotecas são escritas em Assembly (linguagem dos deuses), porque existem coisas que C/C++ não consegue manipular nativamente. Os dispositivos e instruções de entrada e saída, por exemplo. Como lidar com o teclado, mouse, monitor, etc? Pra isso não tem jeito: é coisa de baixissímo nível e deve ser escrito em baixíssímo nível. ASM neles! Por isso se optou por usar o sistema de bibliotecas. Tem coisas que, mesmo o C/C++, poderosíssimos como são, não dão de conta. Agradeçam aos caras que implementaram a linguagem. Se não fosse por eles, você é quem teria essa dor de cabeça.

O nome do processo de linkar um programa com suas respectivas bibliotecas, sejam elas dinâmicas ou estáticas, chama-se linkedição.

  • Arquivos de cabeçalho

Voltemos ao programinha “Hello, World!”. Lembram daquela primeira linha? A #include <stdio.h>? Pois é. Aquela linha, como já foi dito antes, é a responsável pela inclusão (linkedição) do seu programa com as bibliotecas necessárias a execução do programa. Como já foi dito anteriormente, o linker é que é o responsável em linkar bibliotecas a programas e os arquivos de cabeçalho dão as instruções para que o linker faça tudo direitinho. Todas as vezes que você vir num código em C/C++ uma cerquilha # acompanhada de mais alguma coisa, pode ter certeza de que aquilo é uma diretiva do pré-processador. As diretivas do pré-processador servem pra colocar o pré-processador em ação. Umas das diretivas do pré-processador é a diretiva #include (não esquente a moringa, você vai ver o resto das diretivas depois, aos poucos). A diretiva #include diz ao pré-processador para incluir um determinado arquivo ao código. No caso do nosso programa, o arquivo a ser incluso é o <stdio.h> (o nome do arquivo deve ficar entre os sinais menor que e maior que). O arquivo stdio.h é um arquivo de cabeçalho, ou header, por isso .h. Não confunda: o pré-processador não é responsável por linkar bibliotecas e programas, quem faz isso é o linker. A unica coisa que o pré-processador faz é substituir macros e resolver os includes. Arquivos .h não são bibliotecas, são apenas arquivos de definições.

Ainda está obscuro? Calma que eu ainda não terminei. Isso é mais fácil do que entender a cabeça das meninas.

Vejamos o nome do arquivo em questão: stdio.h. std, vem de standard, ou padrão. io, vem de input e output, ou seja, entrada e saída. Não é preciso ser Stephen Hawking pra concluir que esse arquivo trata exatamente de como manipular a entrada e saída padrão nos programas feitos em C/C++, né? Pois é! Na real, os arquivos de cabeçalhos são intermediários. Eles não contém exatamente o código que se deseja usar. Eles contém informações de onde pode ser achado o código desejado. Ao invés de conter a função toda escrita, eles contém simplesmente os protótipos das funções e, falando a grosso-modo, aponta qual(ais) a(s) biblioteca(s) deve(m) ser usada(s) na ocasião.
Se, ainda assim, estiver obscuro, se acalme! No decorrer do curso nós veremos mais coisas relativas ao assunto deste capítulo.

  • Padrão ISO/ANSI

Vocês já ouviram falar em ISO? E ANSI?

Sim! ISO (International Organization for Standardization) é aquela daquela conversa de ISO9002, ISO9001, etc. que estamos acostumados a ver as empresas se gloriando de ter recebido. É um comitê internacional de padronização. Eles arrumam tudo que está bagunçado (nem pense, eles não arrumam o seu quarto e nem o seu casamento). Quer ver um exemplo do trabalho deles? O CD que você escuta (ou escutava, antes de aprender a baixar músicas via P2P) tem aquele formato redondo, naquela espessura, com aquele tamanho de raio, diâmetro do buraco no meio, com todas aquelas características por conta de uma padronização. Esta padronização é reconhecida pelo ISO e publicada em um documento.

Paralelamente, como sempre, os estadunidenses, com as suas manias de não quererem se misturar com o resto do mundo e quererem enfiar goela abaixo o seu estilo de vida, criaram o ANSI (American Nacional Standartd Institute), que é o orgão de padronização estadunidense. Como todo mundo sabe, eles não usam, pro exemplo, o metro como medida padrão, nem quilos, nem qualquer outra medida do Sistema Internacional. O basquete da NBA tem regras diferentes das regras oficiais olímpicas. A mesma empresa que vende o sistema operacional mais usado no mundo quer impor um HTML diferente, que só eles usam. Por que não também não inventar uma linguagem C e C++ diferentes, só pra dizer que “não se misturam”? Pois foi. Senhoras e senhores, existe também, além do C ISO e C++ ISO, o C ANSI e C++ ANSI. Mas não esquentem com isso. Programem em C/C++ ISO.

Da mesma forma acontece com as linguagens C e C++. A galera que as criou, deixou-as soltas, e aos poucos cada um vinha e metia o bedelho nelas, fazendo uma bagunça sem tamanho. Mas, rapidamente, notou-se que a coisa tava virando cabaré e resolveram padronizar a linguagem. Hoje, as palavras-chave, as bibliotecas padrão (aquelas oficiais, escritas pelos implementadores do C e C++), o estilo de programação, tudo está documentado e padronizado.

Apesar das bibliotecas padrão, tanto em C, quanto em C++, serem relativamente ricas em conteúdo, contendo, por exemplo, funções matemáticas* que você não precisará escrever, ou funções de manipulação de strings (calma, você saberá o que é isso no seu tempo certo, não se afobe), existem certos códigos que não foram implementados na biblioteca padrão, então, se você precisar de um código em particular, você tem duas opções: (1) crie a sua pŕopria biblioteca (o que não é nada difícil e até mesmo eu encorajo a você a criar); (2) adiquira de alguém ou alguma empresa a biblioteca pronta. O princípio do C e C++ é: reutilizar, reutilizar, reutilizar. Pra quê ficar feito pateta reescrevendo código que já existe? Se já existe e você tem como pegar, linke com o seu código e pronto! Cuidado: existem códigos proprietários que você só pode ter mediante pagamento. Não vão sair dizendo por aí que eu tô incentivando a pirataria.

Existem duas coisas que eu preciso dizer a respeito de criar as suas própias bibliotecas: (1) outras pessoas podem usar o código que você escreveu, e poupar o trabalho de monte de gente; (2) não tente reescrever os códigos da biblioteca padrão pensando que você vai fazer melhor que do que já está lá. Esses códigos foram testados e retestados um milhão de vezes,e dificilmente você fará melhor que os caras. Mesmo assim, se quiser tentar, fique a vontade. Se você conseguir algo de significativo, parabéns, você ganha uma bolsa de estudos no MIT bem rapidinho.

Existe uma parte significativa e notável da biblioteca oficial C++ que se chama STL (Standard Template Library) e foi criada por Alexander Stepanov e Meng Lee, na Hewlett-Packard.

  • DLL, LIB, .a e .so

Não é possível que um usuário do rwindows, que goste de tecnologia e tenha interesse em aprender, não tenha ouvido falar, mesmo que seja de longe, na sigla dll. Pois é. Dll significa Dynamic-link library (Biblioteca de ligação dinâmica). Esta é a principal implementação de biblioteca da Microsoft. A implementação padrão deles. Outro formato bastante usado por quem programa pra windows é o .lib. Apesar de existirem mais formatos, vamos ficar com esses dois na memória, pra não complicar.

No caso do Linux, os formatos mais conhecidos e usados são: .a e .so. Também vamos ficar só com esses dois. Pro nosso estudo, tá de bom tamanho. Querem saber mais sobre esses formatos? Google!

Well, eu espero que esse post tenha sido esclarecedor. Mais uma vez, me desculpem a demora em postar, mas é que apareceram aí uma ruma de pepinos que eu tive de desembargar. Na realidade, esse foi o post mais complicado que eu tive que escrever. Eu sou réu confesso que tive que estudar bastante pra escrevê-lo. E já sabem: se acharem erros ou algo que não concordam, postem! Não paga nada.

Por fim, cliquem AQUI, para ler um artigo filé mignon sobre pré-processadores, by UNICAMP. Eu recomendo deixar essa preguiça nojenta de lado e ler de verdade. Pra sair e beber cachaça ou transar não tem preguiça não, né? Se não entenderem agora, não se preocupe: não se trata de burrice e nem em linguagem difícil de aprender. É que eu ainda preciso explicar muita coisa que tem escrito lá. Mas a simples leitura, mesmo sem entender, já abre a mente, desperta a curiosidade e você se familiariza com a linguagem.

Um grande abraço aos cuecas e um selinho nas calcinhas. Fiquem com DEUS!

Fui!

*O arquivo de cabeçalho usado aqui é <math.h>.


NA CLÍNICA PARA DEFICIENTES

Na hora do almoço, um interno ia passando pelo refeitório, quando o cozinheiro lhe pergunta:
– Quer uma torta, amigo?
– Agora não, obrigado! Acabei de comer uma ceguinha!


Copyright 2009 (C) Fabiano Bezerra de Vasconcelos – Todos os direitos reservados.

Posted in C/C++ | Tagged: , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , | 8 Comments »

Sandra, Sandrinha… Os anos 80 nunca acabam!

Posted by fabianovasconcelos on 26 de July de 2009

Quem tem os seus 30 aninhos, com certeza se lembra duma morenaça (que por sinal na época ninguém nem conhecia o rosto dela, a galera veio conhecer em tempos de internet) que tocou nas rádios do Brasil inteiro.

Pois é. Era no tempo que escutar rádio valia a pena, não existia essa invasão de rítimos toscos e depreciados, como forró, pagode, swingueira ou outras bostas. Eram os anos 80, com sua magia, inocência, extravagância e excentricidade. A morena a qual me refiro é nada mais, nada menos que Sandra Ann Lauer, mais conhecida como Sandra. De nome, provavelmente você não a conheça, mas as músicas dela, só não conhece quem tem menos de 28 ou viveu em marte nos últimos 25 anos. Apesar de que muita gente mais nova a conhece e admira e que quem não conhece acaba gostando, como o meu vizinho de 18 anos.

Sandra, provavelmente em 1985. Quando ela cantava Maria Magdalena, todo mundo achava que essa música era da Madonna, afinal as vozes eram realmente idênticas. Ela era muito gatinha nessa época.

Sandra, provavelmente em 1985. Quando ela cantava Maria Magdalena, todo mundo achava que essa música era da Madonna, afinal as vozes eram realmente idênticas. Ela era muito gatinha nessa época.

O hit dela que mais fez sucesso no Brasil foi Maria Magdalena e ainda toca em tudo quanto é de festa de flash back e de vez em quando nas rádios. Mas não só Maria Magdalena fez sucesso no Brasil. Teve também Little girl, In the heat of the night e Innocent love.

Após uma pausa na carreira solo, ela inventou de casar com um carinha chamado Michael Cretu, com quem fez parte da conhecidíssima banda Enigma (aquela da música Sadness, de 1991, que parecia com um canto gregoriano). Por um tempo ela ficou conhecida como Sandra Cretu. Depois disso, o casamento não deu certo, o projeto Enigma também não e cada um foi pro seu canto. Ela hoje faz shows pela Europa, cantando sucessos novos e antigos. Abaixo vai a ficha dela e em seguida uma mp3 pra vocês curtirem. É claro que é Maria Magdalena, the best of her songs, viagem total em versão extendida!!!

Nome: Sandra Ann Lauer

Nome Artístico: Sandra

Natural de: Saarbrücken, Alemanha

Nascida em: 18 de maio de 1962

Local onde vive atualmente: Ibiza, Espanha

Discografia:

* 1985: The Long Play
* 1986: Mirrors
* 1988: Into a Secret Land
* 1990: Paintings in Yellow
* 1992: Close to Seven
* 1995: Fading Shades
* 2002: The Wheel of Time
* 2007: The Art of Love
* 2009: Back to Life

Sandra – Maria Magdalena (Extend Version – 7:15).mp3

Quer saber mais sobre a Sandinha? Visite: Link 1 | Link 2 | Link 3

T+V, cambada! 😀

Posted in Anos 80 | Tagged: , , , , , , , , , , , , , , , , , , , , , , , | 6 Comments »

Vamos aprender a programar em C/C++? Lição 04: as palavras-chave de C e C++

Posted by fabianovasconcelos on 13 de July de 2009

Salve, galerinha do país do povo que adora uma mamata!

Aos que acreditam piamente que o Michael Jackson era branco porque tinha vitiligo, notem que alguns termos são um link para páginas externas. Clique neles, se necessitar de alguma informação complementar a respeito.

Tá mais perdido que fã do Micheal Jackson procurando o corpo do astro? Pois você veio parar num curso on line de C/C++! Clica aqui pra ver o índice!

Pois bem, cambada! Fazia tempo que eu não postava nada aqui sobre C e C++, mas é que o tempo “ruge” como diz um conhecido meu (o certo é URGE).

Bom, eu gosto muito de cumprir com a minha palavra, sendo assim eu vou falar hoje sobre as palavras-chave!

Palavras-chave? Que diabos seria isso? Pois muito bem. Vou explicar.

Lembram de quando a gente falou de algorítimo? Não tinha ficado combinado que algorítimo é uma série de passos que devem ser seguidos para se realizar uma tarefa, e que isso se aplica a programação, escrevendo uma rotina de código, em forma de algorítimo? Pois bem!

Mas você não espera mesmo, nessa tua mente infantil, que o compilador vai entender tudo que você digita, né? Assim, de qualquer jeito, cheio de erros de português, avacalhado. Não vai mesmo, colega! Tem que escrever o programa com um certo padrão. Usar as palavras que o compilador entende. Aí você me diz: “Já sei, Fabiano! As palavras que eu devo usar para escrever o meu programa são as palavras-chave, né?” É isso aí, sensitivo! Bem pensado. Abaixo eu vou listar as palavras-chave de C. As palavras-chave de C++ são as mesmas de C e outras mais, que estarão na lista seguinte:

Palavras-chave da linguagem C:

auto * double * int * struct * break * else * long * switch * case * enum * register * typedef * char * extern * return * union * const * float * short * unsigned * continue * for * signed * void * default * goto * sizeof * volatile * do * if * static * while

Palavras-chave (exclusivas) de C++:

asm * bool * catch * const_cast * delete * class * friend * inline * new * private * protected * public * template * this * virtual * dynamic_cast * explicit * false * mutable * namespace * operator * reinterpret_cast * static_cast * throw * true * try * typeid * typename * using * wchar_t * export

Só avisando a galerinha que anda pesquisando palavras-chave por aí: tem muita lista, na internet, incompleta ou com palavras-chave que não fazem parte do escopo oficial do C++. A lista acima está de acordo com o documento oficial da ISO (ISO/IEC 14882:1998). Se estiverem duvidando, vão lá na página do ISO, comprem o PDF (ou baixem do emule), e confiram por vocês mesmos.

Outra coisa importantíssima: tem gente que tem a mania horrenda de escrever assim: “oI AmiGUinhOS! ComO EsTaUm??? :/”! Esta aberração tendenciosamente fru-fru não cola em C/C++. A palavra chave é int, tudo MINÚSCULO, e não INT ou Int ou InT. O certo é auto, não AUTO, Auto ou AuTo. Palavras-chave só existem totalmente em minúscula. Se existir uma letra maiúscula no meio já não é palavra-chave, ou seja, elas são case sensitive.

Pois muito bem. Pelo menos memorizem estas palavras-chave, porque eu duvido que algum programador do mundo use pelo menos a metade do que está aí, esta é que é a verdade. A palavra-chave goto, por exemplo, foi praticamente banida da programação, não só em C/C++, mas também de outras linguagens que a tinham no seu cerne. Veremos a inutilidade utilidade dela mais adiante. Eu não vou nem mentir pra vocês: tem muita palavrinha aí que eu juro que não faço idéia pra que serve. Mas nem se iludam, vocês não vão usar isso tudo nem por capricho! Mas, se mesmo assim chegar alguém aqui exigindo a explicação de algumas palavras que ficarão de fora, eu vou atrás de saber pra que serve e posto aqui.

Levando-se em consideração que não tem muito o que se badalar na apresentação das palavras-chave e que eu ainda tenho que encher linguiça antes de finalmente fechar este post e publicar, eu acabo de ter uma idéia pra salvar a minha reputação:

Sou Jornalista formado pela USTF. Reitor: Gilmar Mendes!

Sou Jornalista formado pela USTF. Reitor: Gilmar Mendes! Em breve, novas profissões liberadas de diplomação! Aguardem!!!

conteúdo extra pra vocês, ainda neste post! 🙂 Então, pelos poderes que me foram investidos pelo Supremo Tribunal Federal, eu, Fabiano Vasconcelos, jornalista (quáquáquáquáquáquá…), vos apresento o nosso primeiro programa em C!

1      //Este programa é mais conhecido que a perseguida da Britney, mas ainda é o melhor programa pra iniciar o aprendizado de C

2      #include <stdio.h>

3      int main (void)

4      {

5      printf(“Hello, world!”);

6      return 0;

7      }

Antes de eu começar a explicar (superficialmente) como funciona o programa, entenda que eu começarei a ensinar C e depois, muito depois, C++. Isso porque grande parte de C++ é composta de C. Então quando eu terminar com C, já terei explicado muuuuiiito de C++. Aí é só correr pro abraço. Notem também que os números nas linhas não fazem parte do código, são só pra efeito de referência mesmo. Se você pensou que fazia, procure um analista.

Entretanto, nem tudo de C pertence obrigatoriamente a C++. Tem coisa de C que não tem nada a ver com C++, mas não se trata de muito conteúdo, não. É coisa pouca. Normalmente você pode misturar código C com C++ sem problemas, mas não é recomendável. Pode virar cabaré. Programe em C puro ou em C++ puro.

Muito bem. Vamos começar!

Se você pretende escrever alguma besteira no editor de textos do compilador mas quer que ele ignore o que você escreveu, você pode fazer que nem eu fiz na linha 1, usar duas barras seguidas para fazer um comentário. Este é o modo C++ de fazer comentários. O modo C seria o texto que você quer digitar entre estes símbolos: /**/

Exemplos de comentários no estilo C:

/*Este programa se auto-destruirá em 5 segundos*/

/*Se você consegue entender isso, agradeça ao Fabiano Vasconcelos*/

/*Garotas, ficar com o Fabiano é uma experiência descomunal!*/

Exemplos de comentários no estilo C++:

//Os engenheiros são os reis! Ao cruzar com um na rua, curve-se diante dele.

//Gilmar Mendes é um cara legal (Este comentário é pura ficção. Eu realmente não estou falando sério.)

//Este programa serve para engordar a minha conta bancária (Comentário posto no código-fonte do primeiro cavalo-de-tróia do Brasil)

Geralmente (e sensatamente) se escreve coisas úteis em um comentário de código. Coisas que irão orientar as pessoas que posteriormente estudarão o seu código, ajudando-os a entender como funcionam certas partes do mesmo. Também servirá pra você se lembrar de como implementou aquela função quando o Alzheimer chegar. Só avisando que, ao comentar ao estilo C++, após as // não dê enter (retorno de carro) de jeito nenhum, nem que a vaca tussa, porque esse comentário só serve pra linha em que estiverem as barras. O que pular pra outra linha será considerado como CÓDIGO mesmo e fatalmente gerará um erro de compilação, já que o compilador não entenderá as suas besteiras.

Um compilador C++ aceita, sem problemas, um comentário ao estilo de C. Mas um compilador C não aceitará um comentário ao estilo C++.

Esqueça completamente o último parágrafo. Foi só a título de informação. Não existem mais compiladores exclusivamente de C pra baixar. É peça de museu. Hoje em dia, todo compilador C é também C++. Resumindo: você é livre pra usar os dois estilos de comentário. Essa foi a linha 1 do nosso código.

Na linha 2 você vê o texto #include <stdio.h>. A diretiva #include fala pro compilador (na realidade o pré-processador) incluir no seu código, MAIS CÓDIGO! pois é. É que se você tivesse mesmo que programar, digitar, escrever tudo que é necessário pro seu programa funcionar, você iria apanhar mais que cão pra ir pra missa. Só pra você ter uma idéia, #include <stdio.h> é traduzido como: “além do que eu escrever aqui, eu quero que se junte ao meu código um outro pedaço de código do arquivo stdio.h, que está num diretório, do meu compilador,  lá na casa do caramba”. O arquivo em questão são instruções de entrada e saída padrões para o programa. Ainda bem que alguém já escreveu isso por nós.

Na linha 3 você vislumbra (que palavra poética!) o seguinte conteúdo: int main (void). Int é o tipo de retorno da função main e void é o argumento passado para a função. Não entendeu? Não se desespere. Tudo ficará claro com o passar do tempo. Não ouse desistir. Não seja covarde. Acontece que eu só vou tratar de funções mais adiante. Mas essa linha é um cabeçalho de função e não pode ser explicada assim, de supetão, num post só.

Na linha 4 nós temos uma abertura de chave {. Isto significa que está havendo uma abertura de bloco de programação. Uma função, por exemplo, é uma maneira de organizar um código em um bloco legível. Por isso C é chamada de linguagem estruturada. Porque é feita de estruturas, blocos, repartições. As funções são um tipo de estrutura, mas não a única. Depois da chave aberta, escreve-se o que se deve escrever pra rechear aquela estrutura e fecha-se a estrutura com uma }, como mostra a linha 7.

Na linha 5 você vê uma chamada a uma função em específico, a função que imprime na tela a frase Hello, world! (Olá, mundo!). Intuitivamente dá pra sacar que printf tem a ver com imprimir, né? Pois é.

E finalmente, na linha 6, nós vemos return 0; Isso diz à função chamadora, no caso o sistema operacional: “Ok, brother! Eu imprimi a minha besteira na tela, cumpri o meu papel e estou te devolvendo o zero”. Zero significa que o programa terminou normalmente, sem anomalias, sem travamento. Um valor diferente de zero significa que deu merda o programa executou uma operação ilegal e teve que fechar (estranho ! eu me lembro de ter lido isso em algum lugar…).

Caso eu demore pra postar, procure o seu neurologista.

Caso eu demore pra postar, procure o seu neurologista.

Pessoal, como eu já havia dito anteriormente, tudo que eu falei aqui é superficial. Eu vou explicar tudinho, tim-tim por tim-tim, aos poucos. Esse programa foi só pra vocês se familiarizarem com a linguagem. Até lá, peçam aos seus médicos novas receitas de Lexotan® e tomem de acordo com a indicação dele.

AVISO DELICADO: VOCÊ SE DROGA? NÃO SEJA IDIOTA! AS DROGAS MATAM E ACABAM COM FAMÍLIAS INTEIRAS. AS DROGAS ILÍCITAS FINANCIAM A VIOLÊNCIA E AS LÍCITAS SÓ DEVEM SER USADAS COM ESTRITA PRESCRIÇÃO MÉDICA. QUEM SE DROGA É COVARDE, BURRO E TERÁ UM FIM TRISTE: OU NA MASMORRA OU NO IML. PROGRAMADORES BEM SUCEDIDOS NÃO USAM DROGAS! AS DROGAS COMEM OS NEURÔRIOS DO SUJEITO!

.

.

Obrigado pela atenção.

Próximo post: como funciona a compilação em C/C++ e outras coisas mais.

Fui-me com Deus!


NO PLANTÃO MÉDICO

O sujeito vai ao hospital, caindo de bêbado. Durante a consulta, vêm as perguntas de praxe:
– Nome?
– Juvenal dos Santos!
– Idade?
– 32 anos.
– O senhor bebe?
– Vou aceitar um gole, mas só pra te acompanhar!


Copyright 2009 (C) Fabiano Bezerra de Vasconcelos – Todos os direitos reservados.

Posted in C/C++ | Tagged: , , , , , , , , , , , , , | 13 Comments »

O Pop de luto…

Posted by fabianovasconcelos on 26 de June de 2009

Caros leitores fieis (uns três) e outros que eventualmente passam por aqui,

Michael Jackson, dançando...Não havia nenhuma programação na minha agenda pra eu postar hoje, mas eu tinha que me sentar na frente do PC pra postar um tributo ao maior astro pop que a humanidade já viu. Quem me conhece sabe que eu abomino forró, pagode, samba, axé e outros rítmos macabros, porque eu sou do pop! E a morte do Michael Jackson me veio como uma bomba. Afinal, além de Pop Liker eu sou oitentista. E falou em anos 80, tem que se falar em Michael Jackson, obrigatoriamente. Não que eu seja fã de carteirinha dele, mas quem, que hoje tem seus 30 anos ou adjacências, nunca se rendeu pelo menos uma vez na vida as suas músicas, dança, o passinho pra trás (moonwalk)? O cara desceu aqui, arrasou e foi embora. Só gostaria de agradecer a ele pela contribuição que ele deu a minha vida. Aliás, agora eu sinto que uma parte da minha vida também se foi. Não é por nada não, mas o cara cantou pra minha geração. Ele cantou pra nós, que hoje ainda somos jovens. São muitas lembranças dos meus amigos cantando, dançando, imitando o astro. Como disseram nos noticiários, ele era a estrela das estrelas. Quando ele entreva em cena, as estrelas levantavam e batiam palmas pra ele.

Sim, não nego. Deixei de gostar dele quando ele se envolveu em escândalos, mas depois me convenci de que ele não passava de um rico coitado. Uma pessoa cheia de traumas, de solidão e até, quem sabe, de problemas psicológicos. Mas, como disseram alguns, aqui nessa terra ele nunca foi feliz mesmo! Desde cedo sofria com o pai dele, treinando-o pra que ele fosse um astro. Ai dele se, nos ensaios, não dançasse divinamente bem. Era sola e muita. Nunca teve mulher, seus filhos foram encomendados, se envolveu em processos, escândalos, fez inúmeras plásticas das quais se arrependeu profundamente, não tinha liberdade e há quem diga veementemente que a desgraça da sua saúde foi ter caído na besteira de ficar branco. Ainda morreu endividado até o talo.MJ

Pois é. Essa é a minha velha aula de ciências, da época que eu era pivete, na prática: “Os seres vivos nascem, crescem, se reproduzem e morrem”. Eu ainda tinha a esperança de vê-lo morrer bem velhinho e feliz. Mas, eu acho que era só uma ilusão. O cara tava doente demais e só esperando chegar o dia.

Mais uma vez, obrigado, Michael. Vai em paz. Nós rezaremos pra que você esteja num bom lugar e numa vida melhor que essa. O mundo nunca te esquecerá.

.

.

.

.

.


Thriller

It’s close to midnight
something evil’s lurkin’ in the dark
Under the moonlight
You see a sight that almost stops your heart
You try to scream
But terror takes the sound before you make it
You start to freeze
As horror looks you right between the eyes
You’re paralyzed

‘Cause this is thriller
Thriller night
And no one’s gonna save you
From the beast about to strike
You know it’s thriller
Thriller night
You’re fighting for your life
Inside a killer
Thriller tonight, yeah

You hear the door slam
And realize there’s nowhere left to run
You feel the cold hand
And wonder if you’ll ever see the sun
You close your eyes
And hope that this is just imagination
Girl, but all the while
You hear a creature creepin’ up behind
You’re outta time

‘Cause this is thriller
Thriller night
There ain’t no second chance
Against the thing with the forty eyes, girl
(Thriller)
(Thriller night)
You’re fighting for your life
Inside a killer
Thriller tonight

Night creatures call
And the dead start to walk in their masquerade
There’s no escaping the jaws of the alien this time
(They’re open wide)
This is the end of your life

They’re out to get you
There’s demons closing in on every side
They will possess you
Unless you change that number on your dial
Now is the time
For you and I to cuddle close together, yeah
All through the night
I’ll save you from the terror on the screen
I’ll make you see

That this is thriller
Thriller night
‘Cause I can thrill you more
Than any ghost would ever dare try
(Thriller)
(Thriller night)
So let me hold you tight
And share a
(killer, diller, chiller)
(Thriller here tonight)

‘Cause this is thriller
Thriller night
Girl, I can thrill you more
Than any ghost would ever dare try
(Thriller)
(Thriller night)
So let me hold you tight
And share a
(killer, thriller)

I’m gonna thrill you tonight

[Rap]
Darkness falls across the land
The midnight hour is close at hand
Creatures crawl in search of blood
To terrorize y’all’s neighborhood
And whosoever shall be found
Without the soul for getting down
Must stand and face the hounds of hell
And rot inside a corpse’s shell

I’m gonna thrill you tonight
(Thriller, thriller)
I’m gonna thrill you tonight
(Thriller night, thriller))
I’m gonna thrill you tonight
Ooh, babe, I’m gonna thrill you tonight
Thriller night, babe

Michael Jackson

Michael Joseph Jackson * Gary, Indiana, EUA - 29 de agosto de 1958 + Eterno

Posted in Anos 80 | Leave a Comment »