Computação 2.0

A arte de programar

Fim da Década de 2000 – Parte 01

leave a comment »

Pois é pessoal… acabou. Com certeza levarei essa década com uma das mais importantes da minha vida. Nasci em 1992, então tinha 8 anos em 2000 e tenho agora 17 anos em 2009. Foi-se minha adolescência toda nessa década. É incrível como o tempo passa rápido, foi tudo quase que num instante. Eu era muito criança ainda até o ano 2000, então me lembro de pouca coisa antes disso. Mas se analisarmos cuidadosamente, veremos que o mundo de hoje nem se compara ao mundo de 10 anos atrás: eu pessoalmente não consigo imaginar direito o mundo de 10 anos atrás, mesmo tendo estado lá presente.

Capítulo 01 – Meu primeiro contato com o mundo digital

Foi no final da década de 90 que eu tive o meu primeiro contato com o mundo digital. Se comparado ao histórico da informática, eu peguei a coisa já bastante evoluída: imagine como foi a infância de Alan Turing, ou até mesmo a de Bill Gates ou Steve Jobs!

O mês era Janeiro. O ano, 1996. Eu tinha 3 anos naquela época (só ia fazer 4 anos em Fevereiro). Meu pai comprou o primeiro PC que eu tive contato, um 486 DX2 66 MHz. Não, eu não lembro de nada dele, o nome está aqui no recibo de compra.

Recibo do meu PC #1

Recibo do meu PC #1, um 486 DX2

Preço um tanto salgado, não? Lembre-se que a inflação corroeu bastante o Real. Naquela época, R$ 1.340,00 era uma soma considerável. Detalhe: era um PC usado. Olhando hoje você morre de rir dessa configuração. E note um detalhe: tinha Placa de Multimídia. Além, é claro, da memória RAM quase infinita: 16 MB. Comparando com o meu notebook, um Intel Core 2 Duo com 4 GB de RAM DDR2, esses 16 MB parecem mais com a quantidade de memória consumida por um programa BEM SIMPLES. Ora, aqui no meu PC só o Google Chrome está a consumir 237 MB, quase 16 vezes mais memória que meu primeiro PC tinha.

Capítulo 02 – Upgrades e mais upgrades nos açougueiros da vida

Meu pai não tinha nenhum conhecimento de informática. Eu era quase um bebê ainda. Quem mexia mesmo no PC era meu meio-irmão. “Roda mundo, roda gigante, roda moinho, roda pião… o tempo rodou num instante, nas voltas do meu coração.” O tempo, como era de se esperar, continua seu curso. Vem então os defeitos naturais de um computador usado. E, com isso, os açougueiros da vida…

– Não, tá tudo queimado, tem de trocar todas as peças do “CPU”.

– Até mesmo o mouse? Tá bem novinho!

– Claro! É uma das peças mais importantes do computador. Sem ele não funciona de jeito nenhum.

E lá se vai mais algumas “somas consideráveis” nos upgrades do PC. A maioria era desnecessário.

Recibo do meu Upgrade #1

Recibo do meu Upgrade #1, para um Cyrix 5x86 (na verdade um 486DX4 "turbinado" - ver Hardware Curso Completo, de Gabriel Torres, 4ª Edição).

Verso do Recibo do Upgrade #1

Verso do Recibo do Upgrade #1, note a incrível falta de acentuação, o neologismo "mause" e, pra matar de vez, um HD de 850 GB em 1996.

Você então pergunta a mim o porquê de “açougueiro”… bem, olhe acima e tire suas próprias conclusões. Não que sejam desonestos, mas era muito escassa ainda a mão-de-obra especializada nesse assunto no Brasil, principalmente aqui em Fortaleza. Lembro-me até de que dois dos técnicos que realizaram manutenção no PC do meu pai eram paulistas.

A internet não era tão difundida como era hoje, conexão discada era luxo e, ainda assim, era para acessar sites muito simples ainda. O Google só iria dar seus primeiros passos nos dois anos seguintes. A Wikipedia, só em 2001. Vivemos num mundo onde uma considerável parte do conhecimento acumulado pela humanidade está disponível a qualquer um pela internet. E tudo isso foi erguido durante essa década. Levamos 5200 anos pra sair da invenção da escrita (por volta de 3200 a.C) e chegar no ano 2000 e apenas 10 anos para criar a magnífica internet que temos hoje, com todos os seus gadgets, add-ons, plugins… imagine então como estaremos em 2019!

Capítulo 03 – Quase lá

1999. Último ano antes de começar a década que terminará em 72 horas. Fiz o penúltimo upgrade do meu PC. Agora adquiri um K6-II 300 MHz (incrível, não?). E lá se vai mais uma “soma considerável”. Mas até que não foi tanto dessa vez, só R$ 400,00.

Detalhes do upgrade para o K6-II

Detalhes do upgrade para o K6-II, bons tempos de Windows 98.

Eu tinha o que? 7 anos? Era. Eu comecei a mexer num PC já com 5, 6 anos. Cheguei a usar o Windows 95. Eu tive aulas no meu colégio de Windows 95, tenho até o livrinho guardado ainda aqui. Aprendi o que era ícone, disquete…. Naquele PC antigo, o 486, o drive de disquete era aquele grande ainda, de 5″ 1/4. Nesse novo aí meu pai conseguiu até um ZIP Drive emprestado.

Acho que muitos não conheceram o ZIP Drive. É, ele não fez muito sucesso não. Eu ainda tenho uma mídia ZIP guardada aqui na minha gaveta. Basicamente o ZIP era um disquete comum, de 3″ 1/2, só que bem mais espesso. A vantagem era que ele armazenava de 100 MB (os primeiros ZIPs) até 750 MB (os últimos produzidos). Houve, no entanto, alguns pequenos problemas com o ZIP.

  1. Não era barato. Lembro que essa mídia aqui que eu tenho não saiu por menos de R$ 30,00.
  2. Era delicado. O ZIP drive tinha um defeito famoso e todo mundo temia ele. Era algo mais ou menos assim: caso você tirasse o ZIP com a unidade ainda ligada, ele era danificado permanentemente. Pelo menos era isso que diziam. Depois processaram a Iomega por causa desse defeito.
  3. Era incompatível. Os primeiros ZIPs não pegavam na unidade produzida para os últimos.
  4. Logo depois chegou o CD-R e o CD-RW. Muito mais baratos e seguros do que os ZIP drives.

Capítulo 04 – Mudanças

Quanto ao PC, bem, depois foi feito mais um upgrade. Dessa vez para um AMD Duron 900 MHz. Eu fiquei com esse por um bom tempo, até não aguentar mais. Eu me lembro que eu rodava o Windows 98 nesse Duron e só troquei ele para poder rodar o Vista, agora em 2007. É claro, ele sofreu várias mudanças desde que foi comprado até o momento que virou sucata. Ganhou uma gravadora de CD (custou R$ 300,00 na época), uma de DVD (também foi R$ 300,00), mudou de gabinete, ganhou um pente de memória novo… mas nada tão radical que o tornasse totalmente diferente.

Eu também sofri mudanças. Fiz um curso de informática básica e, pouco depois, de manutenção de computadores. Começou então o meu interesse por programação. Comecei a procurar material sobre tudo que tivesse a ver com computação. Virei gamer também! Comprei esse meu computador novo, um Intel Core 2 Duo com 2 GB de RAM DDR2 e uma placa de vídeo 8600 GT 1 GB GDDR2 (orignalmente era uma 7300 GT 256 MB). Migrei da discada para os 300 Kbps, depois para o 1 Mbps. Comprei um iPod Touch 16 GB. Adquiri agora um notebook, Intel Core 2 Duo e 4 GB RAM DDR2.

Capítulo 05 – No próximo post eu começo

Bem, nessa primeira parte eu falei mais de mim e de como comecei a ter interesse por computadores. Mas também criei uma imagem de como eram as coisas antes dá Década de 2000. No próximo post eu vou falar um pouco das mudanças que ocorreram nesses últimos 10 anos.

Auf Wiedersehen.

Written by Petrus Yuri

28/12/2009 at 17:29

Publicado em Coffee Break

Voltando à Ativa

leave a comment »

Depois de algum tempo com o blog parado, estou voltando. Bem, estava de férias, digamos assim 😉 No momento estou tentando tornar meu notebook uma plataforma totalmente livre: desinstalei o Windows e coloquei o Ubuntu.

Peguei o software do DVD de restauração do meu notebook, o Ubuntu 8.04. Logo após a instalação, o sistema avisou que já havia a versão 9.04 disponível. Baixei todos os pacotes, pra lá de 800 MB (pelo menos a internet da minha casa é 1 Mbps, imagina se fosse discada…).

Depois de instalar tudo, novo aviso: versão 9.10 disponível. “Lá e de volta novamente”, mais 800 MB e outro cafezinho pra esperar tudo isso. Ótimo, tudo finalizado, vamos reiniciar. “File not found”. Que maravilha… Estava prestes a instalar o DVD de restauração novamente quando resolvi mexer um pouco no menu.lst do Grub.

Percebi que tinham dois arquivos básicos, ambos relacionados com cada versão do kernel: o vmlinuz e o initrd. Não entendia o porquê de o sistema não carregar. Rodei os comandos manualmente e… consegui! Depois mexi no menu.lst dentro do sistema e apaguei algumas linhas com o comando uuid. Pesquisei agora e vi alguns artigos sobre o uuid. Bem, o sistema está dando boot e funcionando normalmente sem essas linhas do uuid no boot. Depois eu verei se isso trará alguma consequência.

Pois bem, estou cá instalando as ferrametas que são condições sine quibus non para a utilização de um PC por mim: uma IDE para programar em C/C++ (o Linux já vem com os compiladore gcc e g++ instalados por padrão), um compilador e uma IDE de \LaTeX (uma das coisas que eu mais gosto no WordPress é a possibilidade de usá-lo nos meus posts) e mais algumas coisas.

O chato é que eu tô sem Wi-Fi: a fabricante da minha placa Wi-Fi não tem drivers (ainda, segundo ela) para a minha versão do kernel (2.6.31-16-generic). Vamos ver como eu ajeito aqui o meu notebook.

Dia 4 de Janeiro inicia o Curso de Verão aqui na UFC, vai até meados de Fevereiro. Dependendo do ritmo lá (vou fazer só Cálculo I, mas também vou tentar assistir algumas aulas de Análise e EDO), eu vou colocar alguns posts aqui.

E… a OBI está chegando. Não vou poder fazer mais nesse ano, mas tentarei postar alguns artigos e provas resolvidas aqui. Se eu notar interesse do pessoal, eu aumento o ritmo de postagem.

Só para completar… em breve eu e alguns amigos estaremos iniciando um projeto. Logo darei mais detalhes aqui. Mas deixarei aqui os links dos blogs pessoais de alguns dos integrantes desse projeto:

Written by Petrus Yuri

28/12/2009 at 14:16

Publicado em Coffee Break

OBI 2009 – Programação Nível 1 Fase 1

leave a comment »

A prova da OBI 2009 (Programação Nível 1) foi realizada em 04/04/2009. A prova continha 4 questões e podia ser realizada em até 4 horas. A 1ª questão era bem simples, a 2ª e a 3ª já exigiam um pouco mais (para o nível 1) e a 4ª questão exigia o conhecimento de logaritmos, pois os números que ele fornece são praticamente impossíveis de se calcular.

Abaixo segue um comentário e uma solução para cada questão, elaborados por mim. Creio que o algoritmo elaborado satisfaça as condições do problema, mas não testei as entradas fornecidas pela OBI nos meus programas. Caso alguém ache algum erro, por favor avise para que seja corrigido o mais breve possível.

Não apenas leia o código-fonte! Ele está aí para exemplificar uma saída para o problema. Tente entender o algoritmo utilizado e faça um outro programa que use uma idéia semelhante, mas sem olhar para esses códigos. O aprendizado de computação só vem com a constante prática.

Quaisquer dúvidas, correções, comentários… enfim, deixem um comentário ou enviem um e-mail para petrusyuri@live.com.

01 – Aviões de Papel

Problema mais simples da prova. Bastava uma simples estrutura condicional que imprimisse a resposta correta.


/*Solução do Problema "Aviões de Papel"
OBI 2009 - Nível 1 Fase 1
Petrus Yuri - 2009*/

#include <stdio.h>

int main()
{
    int numFolhas,numAlunos,numCompradas;
   
    scanf("%d %d %d",&numAlunos,&numCompradas,&numFolhas);
   
    if(numAlunos*numFolhas <= numCompradas)
    {
        printf("S");
    }
    else
    {
        printf("N");
    }
   
    return 0;
}

02 – Overflow

Esse já precisava criar um algoritmo que reconhecesse a operação artimética, a executasse e verificasse se havia overflow. Uma simples estrutura condicional também resolvia o problema.


/*Solução do Problema "Overflow"
OBI 2009 - Nível 1 Fase 1
Petrus Yuri - 2009*/

#include <stdio.h>

int main()
{
    long int numMax;
    int num1,num2;
    char operConta;
   
    scanf("%d",&numMax);
    scanf("%d %c %d",&num1,&operConta,&num2);
   
    if(((num1+num2>numMax)&&(operConta=='+')) || ((num1*num2>numMax)&&(operConta=='*')))
    {
        printf("OVERFLOW");
    }
    else
    {
        printf("OK");
    }
   
    return 0;
}

03 – Número de Envelopes

Acho que a maior dificuldade desse problema era manter tudo sob controle. Ele joga os tipos de rótulos que ele tem num “stringão” e você que se vire para catar e catalogar. O scanf consegue fazer isso, agora não sei outras linguagens. Primeiro fiz um vetor, zerei ele e fui armazenando quantos rótulos tem de cada tipo nele. Depois é só buscar o menor valor e imprimir.


/*Solução do Problema "Número de Envelopes"
OBI 2009 - Nível 1 Fase 1
Petrus Yuri - 2009*/

#include <stdio.h>

int main()
{
    long int numRotulos[1000];
    long int totalRotulos;
    int numProdutos;
    int aux1;
    long int aux2;   
       
    scanf("%d %d",&totalRotulos,&numProdutos);
   
    for(aux1 = 0 ; aux1 < numProdutos ; aux1++)
    {
        numRotulos[aux1] = 0;
    }
   
    for(aux2 = 0 ; aux2 < totalRotulos ; aux2++)
    {
        scanf("%d",&aux1);
        numRotulos[aux1-1]++;
    }
   
    aux2 = totalRotulos;
   
    for(aux1 = 0 ; aux1 < numProdutos ; aux1++)
    {
        if(numRotulos[aux1] < aux2)
        {
            aux2 = numRotulos[aux1];
        }
    }
   
    printf("%d",aux2);
   
    return 0;
}

04 – Feira de Bactérias

Um amigo meu que fez essa prova (o infeliz sabe muito mais computação que eu e ainda faz o nível 1) se complicou nesse problema. Ele é simples… se você usar logaritmo. No entanto, muita gente do nível 1 ainda não tem idéia de logaritmo. E ainda tem de saber usar ele pela biblioteca math.h. Mas, de resto, o problema é bem simples.


/*Solução do Problema "Feira de Bactérias"
OBI 2009 - Nível 1 Fase 1
Petrus Yuri - 2009*/

#include <stdio.h>
#include <math.h>

int main()
{
    long int numGermes;
    long int aux1;
    long int idMax = 0;
    int numFilhos,numDias;
    float maxGermes = 0;
   
    scanf("%d",&numGermes);
   
    for(aux1 = 0 ; aux1 < numGermes ; aux1++)
    {
        scanf("%d %d",&numFilhos,&numDias);
       
        if(numDias*log10(numFilhos) > maxGermes)
        {
            maxGermes = numDias*log10(numFilhos);
            idMax = aux1;
        }
    }
   
    printf("%d",idMax);
   
    return 0;
}

Written by Petrus Yuri

29/09/2009 at 10:06

Publicado em OBI

Hello world!

leave a comment »

É um bom título para um primeiro post. É o título padrão do primeiro post no WordPress, mas em Computação é também o primeiro programa que uma pessoa aprende a fazer em uma determinada linguagem de programação.

Bem, o meu intuito com este Blog é disseminar o estudo da Computação pela internet. É raro você achar blogs que falem sobre o assunto, pelo menos na abordagem que eu pretendo usar. Abrirei categorias de posts onde comentarei sobre Linguagens de Programação, Algoritmos, Olimpíadas de Informática, Hardware e outras que vierem na minha mente.

Em breve mais novidades.

Written by Petrus Yuri

27/09/2009 at 13:14

Publicado em Declarações