Ir para o conteúdo
ou

Software livre Brasil

Tela cheia Sugerir um artigo
 Feed RSS

Retrocomputing Brasil

7 de Dezembro de 2009, 0:00 , por Software Livre Brasil - | Ninguém está seguindo este artigo ainda.
Blog dedicado a tecnologias de ontem, hoje e amanhã, desenvolvimento de softwares, hardwares e hacking,

Game On – Press space key to start

25 de Julho de 2012, 0:00, por Software Livre Brasil

Game On – Press space key to start

No mês passado eu havia anunciado sobre a exposição interativa que o MIS (Museu da arte e do som) estava promovendo em São Paulo Capital, denominada Game On.

Me lembro que no anuncio original, era claro que de terça até sexta o evento aconteceria de 12 às 20 horas, o que eu acreditava ser muito ruim, uma vez que geralmente as 18:00 o pessoal começa a sair do trabalho aqui na capital e isso causa um transtorno geral no transito, principalmente nessa região domuseu da arte e do som e geralmente se leva entre 30 a 40 minutos para chegar no local, considerando que se está partindo da região central de São Paulo, ou seja, teríamos aproximadamente 1 hora e meiapara “aproveitar” o evento, o que é pouco pela quantidade de material presente no museu.

Entretanto, acredito que pelas reclamações dos visitantes, o horário do evento foi estendido para as21:00 horas também durante a semana, ou seja, temos 2 horas e meia para visitação, o que para mim é algo mais do que suficiente em uma visita onde se deseja conhecer uma pouco da história dos video-games e computadores em geral.

Como a maioria dos jovens vai para brincar nos video-games, então mesmo 2 horas e meia é pouco. :) .

Vou postar abaixo algumas fotos que tirei no evento. Tem muito mais no meu álbum de fotos, que pode ser acessado a partir desse link aqui.

Para começar o passeio, não dá para não comentar que o MIS, fica em uma das ruas com a maior concentração de revenda de carros importados de São Paulo e ouso dizer que até do País.

Será impossível você não parar para ver a loja Lamborghini São Paulo, que é revendedora dos cobiçados carros da marca Lamborghini, na capital, foi exatamente o que fiz tirando umas fotos daLamborghini Modelo Aventador LP700-4, que custa só 2 milhões de reais. Hummm…..é que no momento estou em busca de um fusca em bom estado senão eu até pensaria em comprar uma dessas…. :) .

Segue uma foto frontal…..

Lamborghini LP700-4 - 2 milhões de reais

…..e mais uma traseira aqui.

Lamborghini LP 700-4 (traseira)

Algumas fotos extras dessa beleza aí acima podem ser vistas em meu album, nesse link.

Mas vamos ao que interessa que é o …..

Cartaz do Game On na entrada do MIS

Game On, como já foi citado anteriormente, é um evento organizado pelo MIS aqui no Brasil, entretanto o país de origem do Game On é a Inglaterra e apesar de na década de 80 um computador inglês, o ZX Spectrum, ter dominado o mercado da computação pessoal e games naquele país, o evento no Brasil é bem eclético existindo uma boa diversidade de consoles e computadores pessoais, a começar na entrada onde logo podemos apreciar uma réplica do DEC PDP-1, cuja foto dos engenheiros da Digital Equipment (DEC) pode ser vista, onde eles jogam um game chamado SpaceWar desenvolvido pela Atari para oPDP-1.

SpaceWar, 1962 - by Atari for PDP-1

Réplica da CPU do DEC PDP-1

Réplica do Teclado e monitor do DEC PDP-1 X.D

Engenheiros da DEC jogando SpaceWar no monitor de altissima resolução X.D

Ao lado do PDP-1 você encontra o Computer Space, que é reconhecido como o primeiro arcade da história, criado por Nolan Bushnell e Ted Dabney quando trabalhavam para a Nutting Associates, um pouco antes de deixar a empresa e fundar a Atari, Inc.

Computer Space

Ao contrário do PDP-1, que no evento do Game On era uma réplica, o Computer Space parecia ser original, entretanto não estava ligado para que pudéssemos ver o jogo em ação, por isso matei a minha curiosidade assistindo o vídeo abaixo no YouTube.

 

 

Computer Space Arcade Game – Nutting Associates, 1971

Ao assistir o vídeo acima posso dizer com certeza absoluta que se trata do ancestral do game, Asteroids, que fez muito sucesso posteriormente no Atari 2600.

 


 

Asteroids – Atari Inc. 1979

Entrando no centro nervoso do evento, somos recepcionados pelo game Pong (Atari 1979), sendo projetado na parede.

Pong - Atari, 1979 (Jogado pelo criador e mantenedor do projeto MSX TurboR ARM - Rogério Machado).

Seguido de perto do já citado anteriormente, Asteroids da Atari, lançado 8 anos depois de Nollan Bushnell ter sido despedido da Nutting Associates, após ter sido descoberto seu plano de fazer um clone do Computer Space, provavelmente o Asteroids.

Asteroids - Arcade da Atari, 1979 e descendente do Computer Space.

Outro clássico que não poderia ficar de fora é Galaga. Para quem não se lembra, ou sabe, Galaga é um daqueles games em que seu objetivo é atirar e destruir as naves inimigas para somar o maior número de pontos possível. Isso mesmo, sem nenhuma princesa para salvar, sem nenhum planeta para libertar, enfim…..jogar até enjoar…….o que não era muito dificil nesses jogos.

Galaga - Namco (Midway, USA)

Passando mais a frente encontramos à seção de consoles caseiros ………

Home consoles

…..onde algumas outras peças se tornaram bem familiares e outras foram reconhecidas apenas de ouvir falar, como é o caso do Magnavox Odyssey, conhecido nos EUA apenas como Odyssey.

Odyssey é reconhecido como o primeiro console de video-game do mundo e segundo sua história, ele foi desenvolvido de 1966 a 1968 e seu protótipo ficou conhecido como The Brown Box, que estava presente no evento conforme foto abaixo.

The Brown Box (Pai do Magnavox Odyssey)

O interessante é que no Brasil o video-game Odyssey só apareceu no inicio da década de 80, fabricado pela Philips, também com o nome de Odyssey. Na realidade o video-game fabricado pela Philips se tratava da segunda versão do Odyssey, conhecida como Odyssey 2 nos EUA, também de propriedade daMagnavox nos EUA.

Me lembro que na época, la pelos anos 1982~1983, eu esperava ansiosamente pela chegada do revolucionário Odyssey 2 no Brasil….tsc, tsc, tsc, nem sabia que eu já possuía esse video-gamerevolucionário em minhas mãos :) .

Odyssey 2 (No Brasil apenas Odyssey)

Nos EUA, o primeiro e histórico Odyssey era esse da imagem abaixo.

Magnavox Odyssey - O primeiro video-game do mundo

Infelizmente o evento não tinha um console do Odyssey 2 disponível para apreciação :( .

Claro que não poderia faltar o video-game, que ficou marcado como o primeiro maior sucesso de vendas no mundo, sendo reconhecido como o console que criou a industria de games moderna. Sim, estou falando do Atari 2600.

Atari 2600 - O pai da industria de games moderna

Atari 2600 dispensa apresentações e comentários, apenas vale ressaltar que no Brasil esse video-game foi fabricado pela Polyvox, uma empresa do grupo Gradiente, conforme pode ser lido no site dacomunidade Atari brasileira.

Outra curiosidade é que o Atari usava o mesmo processador de 8 bits do Nintendo Famicom (NES) e também do Apple II, o MOS 6502.

Na verdade o Atari usava uma versão mais barata do MOS 6502, conhecida como MOS 6507, porém ocore era basicamente o mesmo.

Talvez propositalmente, os organizadores do Game On deixaram o Atari, o Nintendo Famicon (NES) e oCommodore 64, próximos na exposição, pois todos esses consoles/computadores tem uma ligação quase que familiar, que é a presença do processador da MOS Technology e que na verdade é a própriaCommodore Business Machines,  nada menos que a fabricante do Commodore 64.

Entre tantos video-games, temos um computador que fez muito sucesso na Inglaterra, seu País de origem, e inclusive fez um certo sucesso aqui no Brasil através de seu clone, o TK90X, estou falando do ZX Spectrum.

Em pensar que quase tive um desses na época, no lugar do MSX…….

ZX Spectrum e o clone brasileiro, o TK90X.

Na sequencia, conforme citei anteriormente no post do Atari 2600……

Nintendo Famicom (NES)

…o Nintendo Famicom, ou Nintendo Entretainment System, ou NES, que reconhecidamente tirou osvideo-games de sua maior crise existencial ocorrida no inicio dos anos 80, devido a perda de interesse do publico nos video-games de segunda geração, sendo o Famicom reconhecido como video-game de terceira geração, assim  como o Sega Master System.

Basicamente chegamos a sala de computadores pessoais da década de 80 e ninguém melhor para dar as boas vindas do que o Commodore 64, principalmente agora que pude presenciar o porque dele ter sido imbatível em vendas na década de 80, nos EUA e Canadá.

Commodore 64 - Ainda vou ter um !!!

Ao testá-lo com o jogo que ele estava rodando, percebi que o scroll horizontal dele é estupidamente rápido em comparação ao que conhecíamos em outras plataformas, incluindo o MSX.

Commodore 64 rodando DropZone

Isso sem contar o seu processador de áudio, o SID, que é reconhecido como o melhor entre os micros de 8 bits.

Infelizmente vivíamos em uma famigerada política nacional de informática, ou reserva de mercado de informática como ficou conhecida, fruto de um protecionismo governamental ridículo que impediu que computadores como o Commodore 64 chegassem a nosso País, sendo que esses mesmos computadores chegaram tranquilamente em nossos vizinhos, como a Argentina, por exemplo.

Agora que os tempos mudaram…….eu preciso desse micro urgentemente !!!  :) :) :) :) .

Outro computador histórico, principalmente para nós MSXzeiros, é o SpectraVideo, que segundo o próprio Bill Gates foi utilizado como base para o padrão MSX.

SpectraVideo SVI-318

O próximo computador é um velho conhecido aqui no Brasil, não por ter sido popular por aqui mas sim porque desbancou o reinado do computador mais usado e cultuado em Terra Brasilis, o MSX. Apesar de ter desbancado o reinado do MSX, esse computador nunca chegou a reinar de fato por aqui e só serviu mesmo para fazer com que os PC’s se tornassem mainstream, pois muitos usuários, na época, saltaram do MSX direto para o PC, o que na verdade era inevitável de acontecer.

Estou falando do Commodore Amiga, que apesar de ter um ótimo hardware, no Brasil, não emplacou como nos EUACanadá e Europa.

Commodore Amiga

Outro que chegou ao Brasil de maneira não oficial e fez pouco sucesso, foi o Apple II que devido ao descaso da Apple Computer Inc., com sua mania de sempre ignorar o mercado não americano, deixou espaço para diversos clones nacionais, muitos deles, a maioria, senão todos, completamente ilegais e não licenciados pela Apple Computer Inc. americana.

Apple II

Aqui no Brasil tivemos a UnitronMilmarAppletronica (que não tem nada a ver com a Apple), Dismac,CCE, entre outros “fabricantes” do Apple II.

Bom, vou terminando por aqui e é claro que reservei o melhor para o final, onde não poderia faltar essa máquina que foi a responsável pelo nascimento de grandes franquias de jogos que se destacam até hoje, como é o caso da série Metal Gear e também pela entrada de muitos dos profissionais de hoje, no mundo de TI.

Estou falando do MSX, que para aqueles que não sabem é uma linha de computadores criada na década de 80, representada por um consórcio de empresas japonesas, juntamente com a Microsoft, para se estabelecer um padrão em hardware e software.

Uma das empresas desse consórcio foi a Sony, que fez muito sucesso com sua série de computadoresMSX chamada HitBit. E é exatamente o micro da Sony, o HitBit 2+ modelo HB-F1XDJ que pode ser apreciado no Game On.

Sony MSX2+ HitBit HB-F1XDJ

Infelizmente o MSX 2+ da Sony não estava ligado para que os visitantes entendessem o porque do MSXser o mais mágico dos computadores :) .

Bom, existe muita coisa no evento da Game On a ser apreciada, principalmente quanto a consoles novos, diversos arcades que infelizmente não citei aqui, também existe uma seção que conta um pouco da história das produções musicais para jogos, citando alguns dos principais artistas reconhecidos nesse meio, sem contar os principais consoles atuais com seus excelente jogos, prontos para a diversão.

Enfim, vale a visita, mas a minha sugestão é que quando você pensar em visitar a Game On, vá com muito tempo pois realmente é um lugar para se passar o dia, principalmente jogando :) :) :) .

Segue abaixo o endereço do MIS e os horários.

‘Game On’
Término 08/01/2012.
Museu da Imagem e do Som (MIS)
Av. Europa, 158, Jardim Europa. 2117-4777
Terça a sexta, das 12 às 21h; dom., sáb. e feriados, das 11 às 21h
Ingressos: R$ 10 e R$5 (meia)
Livre

[]‘s
PopolonY2k

Referência na internet

MIS – Museu da Imagem e do Som
http://www.mis-sp.org.br/

Lamborghini São Paulo
http://www.lamborghini-saopaulo.com/

Lamborghini (Wikipedia)
http://en.wikipedia.org/wiki/Lamborghini

Lamborghini Modelo Aventador LP700-4
http://pt.wikipedia.org/wiki/Lamborghini_Aventador

PopolonY2k’s Lamborghini LP700-4 album
http://picasaweb.google.com/112074901768594959236/LamborghiniSaoPauloModeloLamborghiniAventadorLP7004?locked=true#

PopolonY2k’s Game On 2011/2012 album
https://picasaweb.google.com/112074901768594959236/GameOn20112012#

ZX Spectrum
http://en.wikipedia.org/wiki/ZX_Spectrum

DEC PDP-1
http://en.wikipedia.org/wiki/PDP-1

Digital Equipment Corporation
http://en.wikipedia.org/wiki/Digital_Equipment_Corporation

SpaceWar (Wikipedia)
http://en.wikipedia.org/wiki/Spacewar!

Computer Space (Wikipedia)
http://en.wikipedia.org/wiki/Computer_Space

Arcade Games (Wikipedia)
http://en.wikipedia.org/wiki/Arcade_game

Nolan Bushnell (Wikipedia)
http://en.wikipedia.org/wiki/Nolan_Bushnell

Ted Dabney (Wikipedia)
http://en.wikipedia.org/wiki/Ted_Dabney

Nutting Associates (Wikipedia)
http://en.wikipedia.org/wiki/Nutting_Associates

Atari Inc. (Wikipedia)
http://en.wikipedia.org/wiki/Atari,_Inc.

Asteroids (Wikipedia)
http://en.wikipedia.org/wiki/Asteroids_%28video_game%29

Atari 2600 (Wikipedia)
http://en.wikipedia.org/wiki/Atari_2600

Pong (Wikipedia)
http://en.wikipedia.org/wiki/Pong

Galaga (Wikipedia)
http://en.wikipedia.org/wiki/Galaga

Magnavox Odyssey (Wikipedia)
http://en.wikipedia.org/wiki/Magnavox_Odyssey

Milmar Top System (Wikipedia)
http://pt.wikipedia.org/wiki/Top_System

Magnavox Odyssey 2 (Wikipedia)
http://en.wikipedia.org/wiki/Magnavox_Odyssey%C2%B2

Magnavox (Wikipedia)
http://en.wikipedia.org/wiki/Magnavox

Philips (Wikipedia)
http://en.wikipedia.org/wiki/Philips

Polyvox (Wikipedia)
http://pt.wikipedia.org/wiki/Polyvox

Gradiente (Wikipedia)
http://pt.wikipedia.org/wiki/Gradiente_%28empresa%29

A história do Atari no Brasil (Atari.com.br)
http://www.atari.com.br/historia/

Nintendo Famicom (NES) – Wikipedia
http://en.wikipedia.org/wiki/Nintendo_Entertainment_System

MOS 6502 (Wikipedia)
http://en.wikipedia.org/wiki/MOS_Technology_6502

MOS 6507 (Wikipedia)
http://en.wikipedia.org/wiki/MOS_Technology_6507

MOS Technology (Wikipedia)
http://en.wikipedia.org/wiki/MOS_Technology

Sega Master System (Wikipedia)
http://en.wikipedia.org/wiki/Sega_Master_System

TK90X (Wikipedia)
http://en.wikipedia.org/wiki/Tk90x

MSX (Wikipedia)
http://en.wikipedia.org/wiki/MSX

SID (MOS Technology) – Wikipedia
http://en.wikipedia.org/wiki/MOS_Technology_SID

Politica nacional de informática (Wikipedia)
http://pt.wikipedia.org/wiki/Pol%C3%ADtica_Nacional_de_Inform%C3%A1tica

SpectraVideo (Wikipedia)
http://en.wikipedia.org/wiki/Spectravideo

Commodore Amiga (Wikipedia)
http://en.wikipedia.org/wiki/Amiga

Apple II (Wikipedia)
http://en.wikipedia.org/wiki/Apple_II_series

Unitron Apple II (Wikipedia)
http://pt.wikipedia.org/wiki/Unitron_AP_II

CCE (Wikipedia)
http://pt.wikipedia.org/wiki/CCE

Apple Inc. (Wikipedia)
http://en.wikipedia.org/wiki/Apple_Inc.

Metal Gear (Wikipedia)
http://en.wikipedia.org/wiki/Metal_gear

Sony (Wikipedia)
http://en.wikipedia.org/wiki/Sony

Sony HitBit (Wikipedia)
http://en.wikipedia.org/wiki/HitBit

Sony HitBit (HB-F1XDJ)
http://www.1000bit.it/scheda.asp?id=1682

Microsoft Corp. (Wikipedia)
http://en.wikipedia.org/wiki/Microsoft_Corporation



Grupo de desenvolvimento de software e coisas legais para MSX

25 de Julho de 2012, 0:00, por Software Livre Brasil

Grupo de desenvolvimento de software e coisas legais para MSX

Após um bom tempo conversando com diversos amigos de listas de discussão para MSX, principalmente na MSX-All e MSXBR-L, finalmente coloquei em prática a idéia de criar uma lista específica para o desenvolvimento de software para MSX e outras plataformas old skool.

MSX trademark

Em conversa com o amigo Nivardo Cavalcanti, principal incentivador da nova lista, chegamos a uma idéia de que a mesma deveria tratar basicamente de desenvolvimento de novos projetos de software para oMSX, principalmente porque hoje temos, finalmente no Brasil, muita coisa legal em hardware, como placas de rede baseadas em Obsonet, placas de som baseadas em Moonsound, placas gráficas baseadas na V9990IDE Sunrise-like e apesar de tudo isso, a quantidade de software para todas essas tecnologias é quase nula.

Então a idéia da lista é estudar toda a camada de software embutida em cada uma dessas tecnologias, documentar e difundir o conhecimento sobre esses e outros novos hardwares e por ultimo criar peças de software, ou bibliotecas, para controlar cada um desses dispositivos, possibilitando assim a criação de novos softwares, do mesmo nível dos existentes em outras plataformas mais modernas.

Com isso, na data de hoje, estou anunciando a criação do Grupo de desenvolvimento de software e coisas legais para MSX e afins, que está no Google Groups no endereço abaixo:

http://groups.google.com/group/gdmsx

Espero a visita e inscrição de todos os que são entusiastas da tecnologia MSX ou qualquer outra plataforma retrô, ou até mesmo aqueles que gostam de hackingarduino ou aos que são simples entusiastas de tecnologia em geral, sintam-se em casa.

Arduino Uno logo

 

Qualquer discussão sobre tecnologias, impossíveis ou não, podem e devem ser fomentadas no grupo. Em nosso grupo, nunca peça desculpas por alguma pergunta que você acredita ser simples ou idiota demais, pois certamente não é simples nem idiota, ou seja, toda pergunta é válida e importante, pois muitas vezes perdemos a oportunidade de desenvolver excelentes idéias por medo de expô-las.

Bom, é isso, vida longa ao novo Grupo de desenvolvimento de software e coisas  legais para MSX e afins.

[]‘s
PopolonY2k 



Turbo Pascal Forever – Statements

11 de Maio de 2012, 0:00, por Software Livre Brasil

Turbo Pascal Forever – Statements

Antes de continuar o artigo sobre programação Pascal para plataformas old skool, primeiramente quero agradecer principalmente aos membros da comunidade nacional de MSX pelo feedback e apoio a essa série que está sendo desenvolvida e também à comunidade internacional de desenvolvedores Pascal, representados pelas novas gerações da linguagem, através do Delphi e Lazarus/FreePascal.

Below some individual thanks to community members by the support to this tutorial.

  • Werner Kai, active member of the brazilian and international MSX scenary, thanks for the Pascaldocumentation, source code and software compilation, sent to me, specially by the HiSoft Pascalinformation for MSX.
  • Embarcadero Development RAD Tools and Eliazer Kosciuk (Klax) on Twitter, thanks for the support to this tutorial, retwitting my Twitter messages.

Vamos ao que realmente interessa que é  mão-na-massa, hands on, ….

Statements

Um Statement em sua tradução livre é definido como uma declaração mas prefiro defini-lo tecnicamente da mesma forma como faz o manual original da versão 3 do Turbo Pascal de 1983~86 e que descrevo abaixo.

Tradução do manual original da Borland
Turbo Pascal – The Ultimate Pascal Development Environment – Borland 1983~1986

Um statement define a ação a ser executada pelo programa (ou sub-programa, ou sub-rotina) como uma sequencia de statements; cada uma especificando uma parte da ação.

Nesse sentido Pascal é uma linguagem de programação sequencial, ou seja, cadastatement é executado sequencialmente um por vez, nunca simultâneamente. Umstatement é encapsulado pelas palavras reservadas begin e end e dentro delas,statements são separadas por ponto e virgula (;).

Statements podem ser simples ou estruturados.

Claro que muita coisa mudou de lá pra cá, onde a tecnologia de hardware e a tecnologia de softwareevoluíram muito permitindo que tenhamos hoje um certo paralelismo, possibilitando a execução de statements simultaneamente, seja através de threads ou até mesmo paralelismo entre os diversos núcleos do processador, entretanto o conceito de execução sequencial de cada statement, em um módulo do programa, ou sub-programa, ainda é o mesmo até nas versões mais modernas de Pascal(DelphiFreePascal, …), bem como na maioria das linguagens de alto e médio nível como Java e C.

Outro fator importante sobre os statements é que os mesmos podem ser categorizados como simples  eestruturados.

Statements simples.

Entre os statements simples podemos citar o de atribuiçãoprocedure e o statement vazio.

Segue abaixo os casos de statements simples.

Statement de atribuição.

statement de atribuição é um simples comando de atribuição a uma variável, conforme pode ser visto no código fonte do exemplo a seguir:

nValue   := 1000;  { Integer assignment statement }
strValue := 'This is a string assignment statement';
dValue   := 10.45; { Real assignment statement }
bValue   := ( 1 = 2 ); { Boolean assignment statement }
bEof     := EOF;{ Boolean assignment statement from function EOF }

Procedure statement

Uma procedure statement tem a função de executar uma sub-rotina definida pelo usuário ou até mesmo uma sub-rotina builtin do Turbo Pascal.

WriteLn( 'This is a builtin procedure call statement' );
ClrScr;  { Another builtin Turbo Pascal procedure statement }
ClrEOL;  { Another builtin Turbo Pascal procedure statement }

Statement vazio

Apesar de soar estranho, é possível ter um statement vazio, ou seja, que não executa nada. Segue abaixo alguns usos de statements vazios.

Begin End.        { Empty block }
While (True) Do;  { Infinite loop }
Repeat Until KeyPressed; { Wait for any key to be pressed }

Statements estruturados

Statements estruturados são construções compostas por outros statements, chamados de statements compostos, que podem ser executados em sequência, condicionalmente ou repetidamente.

Segue abaixo os statements estruturados.

Statements compostos

Um Statement composto é definido como um conjunto de outros statements simples ou compostos que estão sempre agrupados em blocos, no caso de Pascal um bloco é definido através das palavras reservadas begin e end, especificando assim que os statements serão executados na sequência em que eles foram escritos, sendo assim podemos afirmar que o próprio bloco principal de um programa emPascal é um statement composto.

Abaixo alguns exemplos de statements compostos:

Program Test;
 
 Var bTest   : Boolean;
     strTemp : String[255];
 
{ Main block - In fact the main block is the major compound statement }
Begin
  If( bTest = True ) Then
    Begin { This is a compound statement }
      strTemp := 'This is a compound statement test';
      WriteLn( strTemp );
    End
  Else { This is another compound statement }
    Begin
      strTemp := 'Another compound statement test';
      WriteLn( strTemp );
    End;
End. { End of main block and the main compound statement }

Statements condicionais

É reconhecido que os computadores são máquinas extremamente lógicas e nada mais lógico que as linguagens de programação tenham ricos conjuntos de operações e possibilidades lógicas.

Turbo Pascal possui um conjunto moderno de statements dedicados a lógica condicional, possibilitando assim uma estruturação clara de grandes sistemas desenvolvidos na linguagem.

IF Statement

Assim como a maioria das linguagens de médio e alto nível, Pascal possui um statement dedicado a lógica condicional com duas opções de execução dependendo do resultado booleano de seu comparador.

A estrutura do statement IF é a seguinte:

IF boolean_expression THEN  { Statement executed for true condition }
ELSE  { Statement to be executed for false condition - optional };

Onde boolean_expression é uma expressão lógica, ou booleana, a ser executada e caso a mesma tenha um resultado verdadeiro (True) o statement após o THEN será executado, caso contrário será executado o statement após o ELSE.  Lembrando que o ELSE é opcional, ou seja, se o seu teste condicional não necessita executar nada para casos cuja expressão booleana testada não seja verdadeira (False), a condição do ELSE poderá ser suprimida do statement IF.

Vejamos alguns exemplos práticos de utilização do statement IF.

Program Test_IF;
Var
      bValue1,
      bValue2   : Boolean;
      nValue    : Integer;
 
Begin
  bValue1 := True;
  bValue2 := False;
  nValue  := 100;
 
  { If statement checking boolean values }
  If( bValue1 = bValue2 )  Then
    WriteLn( 'The boolean values are equals' )
  Else
    WriteLn( 'The boolean values are different' );
 
  { If statement checking integer values }
  If( nValue = 1000 )  Then
    WriteLn( 'The integer value is equal the constant value' )
  Else
    WriteLn( 'The integer value is different of constant value' );
 
  { If statement with only one execution condition }
  If( nValue = 100 ) Then
    WriteLn( 'The integer value is equal the constant value' );
End.

Uma observação muito importante é quanto a utilização do ; (ponto-e-virgula) no final do statement IF. Nunca devemos nos esquecer de que o (ponto-e-virgula) é um finalizador de statements, ou seja, deve estar presente no final de cada statement, seja simples ou composto.

No caso do IF, ele poderá estar apenas no fim do statement completo, ou seja, caso tenhamos um IF com as condição do ELSE além do THEN implementada, o ; (ponto-e-virgula) só poderá estar ao final doELSE, uma vez que ele finaliza o statement IF nesse caso. Mas caso tenhamos apenas a condição doTHEN implementada o ; (ponto-e-virgula) deverá estar após o statement seguinte ao THEN.

Abaixo alguns exemplos do uso do (ponto-e-virgula) finalizando o statement IF.

Program TEST_IF_2;
Begin
  { If statement with optional ELSE }
  If( 1 = 2 )  Then
    WriteLn( 'Equals' );
 
  If( 1 = 1 )  Then
    WriteLn( 'Equals' )
  Else
    WriteLn( 'Not equals' );
End.

Outra observação é quanto ao uso combinado de um statement IF com statements compostos, como pode ser visto no exemplo abaixo.

Program TEST_IF_With_Compound_Statements;
Begin
  If( True )  Then
    Begin  { Start of the first compound statement }
      WriteLn( 'This is the first' );
      WriteLn( 'compound statement' );
    End
  Else
    Begin  { Start of second compound statement }
      WriteLn( 'This is the second' );
      WriteLn( 'compound statement' );
    End;
End.

CASE Statement

Outra estrutura condicional presente em Pascal, bem como na maioria das linguagens modernas, é ostatement CASE que possibilita a comparação de uma expressão com diversas constantes de comparação, podendo ter assim especificadas diversas condições de execução de acordo com o valor da expressão de entrada.

A estrutura do statement CASE é a seguinte:

CASE expression OF
  constant1 : statement;
  constant2 : statament;
  .
  .
  .
  constantN : statament;
  ELSE statement { Optional };
END;

Onde expression é a expressão a ser comparada com cada constante especificada por  constant1,constant2, …., constantN sendo que caso uma dessas constantes satisfaça a expressão, o statement associado à constante, após o : (dois pontos) será executado. Caso nenhuma das opções seja satisfeita, o statement após o ELSE será executado. Lembrando que assim como o ELSE do statement IF, o ELSEdo statement CASE é opcional.

Abaixo temos um exemplo da utilização do CASE.

Program TEST_Case;
Var
      nValue : Integer;
 
Begin
  WriteLn( 'Digit a number between 0-3' );
  Read( nValue );
 
  Case ( nValue ) Of
    0 : WriteLn( 'The number is 0' );
    1 : WriteLn( 'The number is 1' );
    2 : WriteLn( 'The number is 2' );
    3 : WriteLn( 'The number is 3' );
    Else
      WriteLn( 'Number is not between 0-3' );
  End;
End.

Da mesma forma como no statement IF, podemos combinar o statement CASE com statements compostos, conforme pode ser visto no exemplo abaixo.

Program TEST_Case2;
Var
      nValue : Integer;
 
Begin
  WriteLn( 'Digit a number between 0-1' );
  Read( nValue );
 
  Case ( nValue ) Of
    0 : Begin   { The first compound statement in CASE statement }
          WriteLn( 'The number is 0' );
          ReadLn;
        End;
    1 : Begin   { The second compound statement in CASE statement }
          WriteLn( 'The number is 1' );
          ReadLn;
        End;
  End;
End.

Statements de repetição.

Uma das estruturas interessantes e poderosas de Pascal são os  statements de repetição que de fato são estruturas responsáveis pela execução cíclica de um ou mais statements até que uma condição booleana seja satisfeita, ou um contador tenha seu limite máximo atingido.

Em Pascal temos 3 statements de repetição distintos:

  • Statement FOR;
  • Statement WHILE;
  • Statement REPEAT UNTIL;

Statement FOR.

statement FOR é uma estrutura de repetição capaz de executar statements simples ou compostos por um determinado número de vezes tanto em ordem crescente quanto em ordem decrescente. É muito útil quando se conhece antecipadamente o limite máximo de repetições que se deseja executar.

A estrutura do statement FOR é a seguinte:

FOR count_variable := initial_value TO maximum_value DO execution_statement;

Onde count_variable é uma variável inteira a ser utilizada como contador e seu valor inicial será representado por initial_value, sendo incrementada em uma unidade, onde o statament representado porexecution_statement será executado a cada iteração até que o limite de contagem, representado pormaximum_value, seja atingido.

A segunda variação do statement FOR é a seguinte:

FOR count_variable := initial_value DOWNTO minimum_value DO execution_statement;

Sendo que a diferença entre essa última e a anterior é que ao invés de um contador crescente, temos um contador decrescente, representado pela palavra DOWNTO.

Segue abaixo alguns exemplos de repetição utilizando o statement FOR.

Program Test_Simple_FOR;
  Const   ctMaxCount : Integer = 2000; { Maximum for loop counter }
  Var     nCount     : Integer;
 
  Begin
    For nCount := 0 To ctMaxCount Do  { This is a simple FOR statement }
      WriteLn( 'Counting [', nCount, ']' );
  End.

Outro exemplo do statement FOR, executando um statement composto.

Program Test_Compound_FOR;
  Const   ctMaxCount : Integer = 2000; { Maximum for loop counter }
  Var     nCount     : Integer;
 
  Begin
    For nCount := 0 To ctMaxCount Do  { This is a compound FOR statement }
      Begin
        WriteLn( 'Counting [' );
        WriteLn( nCount );
        WriteLn( ']' );
      End;
  End.

Abaixo temos um exemplo do statement FOR com um contador decrescente.

Program Test_Decreasing_FOR;
  Const   ctMinCount : Integer = 10; { Minimum limit for the FOR loop counter }
  Var     nCount     : Integer;
 
  Begin
    { This is a decreasing FOR statament }
    For nCount := 1000 DownTo ctMinCount Do
      WriteLn( 'Counting [', nCount, ']' );
  End.

Statement WHILE.

Assim como o statement FOR, o statement WHILE é capaz de executar repetições de  statements simples ou compostos. Entretanto a diferença primordial entre o statement FOR e o statement WHILE é que esse último é capaz de executar a repetição até que uma condição booleana seja satisfeita, podendo ser essa simples ou mais complexa.

A estrutura do statement WHILE é a seguinte:

WHILE boolean_condition DO execution_statement;

Onde boolean_condition é a condição booleana a ser satisfeita e execution_statement o statement a ser executado até que a condição boolean_condition seja satisfeita.

Vamos a alguns exemplos do uso do statement de repetição, WHILE.

Program Test_Simple_WHILE;
Const
         ctMaxCount : Integer = 1000;
Var
         nCount     : Integer;
 
Begin
  nCount := 0;
 
  { Increase the counter variable, nCount, while nCount is ‹ 1000 }
  While( nCount ‹ ctMaxCount ) Do
    nCount := nCount + 1;
End.

Abaixo temos outro exemplo utilizando o statement WHILE, executando um statement composto onde a condição de parada é uma combinação booleana complexa.

Program Test_Complex_WHILE;
Const
         ctMaxCount : Integer = 1000;
Var
         nCount     : Integer;
         bExit      : Boolean;
 
Begin
  nCount := 0;
  bExit  := False;
 
  { This is a While with a more complex boolean checking exit }
  While( ( bExit = False ) And ( nCount ‹ ctMaxCount ) ) Do
    Begin
      If( nCount = 100 )  Then
        bExit := True;
 
      nCount := nCount + 1;
    End;
End.

Statement REPEAT UNTIL;

Por ultimo vamos descrever o statement de repetição, REPEAT UNTIL, que assim como os statementsFOR e WHILE, é capaz de executar statements simples e compostos e assim como o statement WHILE, é capaz de executar a repetição até que uma condição booleana seja satisfeita.

A grande diferença do statement REPEAT UNTIL para o WHILE é que o REPEAT UNTIL tem a checagem da condição de parada do loop executada ao fim de uma primeira iteração no loop de execução dostatement, ou seja, teremos pelo menos uma execução do statement ou conjunto de statements doREPEAT UNTIL.

A estrutura do statement REPEAT UNTIL é a seguinte:

REPEAT execution_statement UNTIL boolean_condition;

Onde execution_statement é o statement ou conjunto de statements a ser executados até que a condiçãoboolean_condition seja satisfeita.

Segue abaixo um exemplo do statement REPEAT UNTIL em ação.

Program Test_REPEAT_Until;
Const    ctMaxCount = 1000;
Var      nCount : Integer;
         bExit  : Boolean;
Begin
  nCount := 0;
  bExit  := False;
 
  Repeat
    If( nCount = 100 )  Then
      bExit := True;
 
    nCount := nCount + 1;
  Until( ( bExit = True ) And ( nCount = ctMaxCount ) );
End.

Como podemos ver, a linguagem Pascal é rica de estruturas que facilitam e possibilitam o desenvolvimento de software de forma organizada e altamente estruturada, capacitando assim a construção de grandes sistemas escaláveis e de mais fácil manutenção.

Certamente daqui a 15 anos outro desenvolvedor poderá ler um código feito por você em Pascal e compreendê-lo com extrema facilidade devido a estrutura organizada, nativa de Pascal.

Por enquanto vou ficando por aqui deixando mais esse material para que possam se divertir até o postseguinte. :)

[]‘s
PopolonY2k 

Referência na internet

Embarcadero Delphi
http://www.embarcadero.com/br/products/delphi

Lazarus
http://www.lazarus.freepascal.org/

FreePascal
http://www.freepascal.org/

Embarcadero RAD Tools Dev team (Twitter)
http://twitter.com/#!/RADtools

Eliazer Kosciuk – Klax (Twitter)
http://twitter.com/#!/eliazerk

Twitter
http://twitter.com/#!/RADtools



Turbo Pascal Forever – Start your engines.

23 de Março de 2012, 0:00, por Software Livre Brasil - 0sem comentários ainda

Após uma bela sequência de posts sobre jogos e afins, volto a escrever sobre o que eu gosto de fazer que é programar coisas :) e principalmente para enfim dar continuidade a minha primeira série sobre programação para micros clássicos, que é o curso de Turbo Pascal 3.0, iniciado nesse post aqui, que por sua vez foi e é muito conhecido e utilizado em computadores baseados e/ou compatíveis com o sistema operacional CP/M, isso inclui o MSX e talvez seja linguagem mais utilizada nessa arquitetura, depois do MSX-BASIC.

Bom, primeiramente vamos responder às perguntas deixadas no ultimo post, que reproduzo a seguir.

PERGUNTA 1 (utilizem a área de comentários do post para responder)

Qual o nome do arquiteto que deixou a Borland para na Microsoft criar uma das linguagens mais conhecidas da empresa na atualidade ?

Resposta: Anders Hejlsberg, que foi um dos principais arquitetos da Borland International desde a época do Turbo Pascal, sendo também o homem forte do Delphi até aproximadamente 1996 (versão 3.0), depois disso a Microsoft fez uma grande investida nos principais nomes da equipe de compiladores da Borland, levando-os para Redmond onde  posteriormente trabalharam, sob a tutela de Anders, no projeto do Framework, cópia da arquitetura Java, conhecido como Microsoft .Net, incluindo a linguagem C# que é a mais conhecida nessa plataforma. Na verdade Anders Hejlsberg criou um compilador Pascal em sua empresa, situada na Dinamarca e conhecida como Poly Data, tendo a Borland licenciado o núcleo de sua implementação da linguagem Pascal, posteriormente adicionando um editor integrado, criando assim o Turbo Pascal. Não só isso, antes de vender o seu Pascal (PolyPascal) para a Borland, Anders era representante da Microsoft na Dinamarca, o que o colocava em desacordo com a Borland. Posteriormente a Borland adquiriu 100% dos direitos do compilador e contratou Anders como um dos principais arquitetos do Turbo Pascal (Fonte: Anders Hejlsberg Wikipedia e Antique Software: Turbo Pascal 1.0 – Embarcadero).

PERGUNTA 2(utilizem a área de comentários do post para responder)

Que grande empresa, reconhecida pelos seus gadgets e PC‘s, desenvolveu a extensão de Pascal, denominada Object Pascal ?

Resposta: Apple Inc. Muita gente sabe da fixação da Apple em ser incompatível e tentar amarrar seus produtos tornando-os uma caixa preta incomunicável com outras plataformas, pois bem, não é de hoje que a Apple opta por tecnologias não mainstream, como é o Objective-C que é a tecnologia base  de desenvolvimento para os principais produtos da empresa, como IPod, IPad, IPhone e MacOSX. No passado a mesma Apple optou por manter a base de software de seu MacOS, toda escrita em Pascal, em um momento em que a linguagem C se tornava o mainstream como tecnologia de base para sistemas operacionais, uma vez que a maioria dos sistemas existentes optavam pela linguagem de Dennis Ritchie, principalmente pelas obvias características de portabilidade, poder de abstração, facilidade de interfacear alto nível com baixo nível e principalmente velocidade.

Apple I - Detalhe do "incompatible" no quadro ao fundo. Desde aquela época já era assim. :)

Apple I - Detalhe do "incompatible" no quadro ao fundo.......desde aquela época já era assim. :)

Pois bem, a empresa de Steve Jobs basicamente desenvolveu a extensão do Pascal orientado a objetos, conhecida como Object Pascal, sob a tutela de Niklaus Wirth, e que mais tarde serviria como base para versões futuras do Turbo Pascal 5.5 da Borland até as versões atuais do Delphi.

Integrated Development Editor (aka IDE)

O Turbo Pascal 1.0 foi reconhecidamente o primeiro compilador a integrar um ambiente de desenvolvimento (IDE), juntamente com o mais rápido compilador (1 passo) da época e com isso se tornou um sucesso absoluto no meio comercial e principalmente no meio acadêmico, sendo utilizado até os dias de hoje em diversas instituições de ensino, através de compiladores modernos e compatíveis como o FreePascal.

A IDE das primeiras 3 versões do Turbo Pascal, apesar de simples e até arcaica para os padrões atuais, representou um grande avanço no meio de desenvolvimento de software, principalmente por combinar um poderoso editor de textos, compatível em comandos com o “padrão” dominante na época, o “padrão” WordStar, e que se perpetuou para a maioria dos processadores, editores de textos e IDE‘s, até os dias de hoje.

É sobre esses comandos do editor e também sobre as opções do menu do Turbo Pascal que descrevo abaixo.

Tela de abertura do Turbo Pascal 1.0. Foi assim até a versão 3.0

A imagem acima demonstra a tela de menu das primeiras versões do Turbo Pascal onde o usuário tem a possibilidade de, através dos caracteres que estão em maiúsculo (também colorido na versão x86, ou PC), selecionar as opções desejadas no ambiente integrado.

Segue abaixo a descrição das opções do menu principal e a medida em que avançarmos no curso, vou descrevendo as outras opções dos sub-menus de alguns desses itens.

  • Logged drive – Mostra e possibilita a alteração do drive corrente. Ao se teclar L, aparecerá uma nova mensagem “New drive“, solicitando a nova unidade que será a corrente.
  • Work file – No Turbo Pascal existe o conceito de Arquivo Principal (Main file) e Arquivo de Trabalho (Work file). De fato o arquivo de trabalho é o principal, pois quando não é especificado um arquivo principal, o Arquivo de trabalho é assumido como o mesmo. Era uma forma arcaica de se trabalhar com 2 arquivos simultâneamente, de forma que o principal só é carregado no momento da compilação e o Work file no momento da edição. Isso é ótimo quando se está trabalhando no desenvolvimento de arquivos de include (que veremos mais a frente) e se deseja compilar e executar com um outro arquivo principal e que utiliza esse include.
  • Main file – Vide opção acima.
  • Edit – Entra no editor de programas do Turbo Pascal, carregando o Work file, ou Main file que estiver especificado.
  • Compile – Compila o programa para a memória, disco (.COM) ou para o formato Chain (.CHN), de acordo com a seleção feita na opção compiler Options, descrita mais abaixo. Quando compilado em disco, o Turbo Pascal gera um executável compatível com o MSXDOS e CP/M, no formato .COM, podendo ser executado nesses sistemas operacionais. Até a versão 3.0 do Turbo Pascal, existia a possibilidade de que algumas sub-rotinas estivessem em outros arquivos executáveis especialmente gerenciados pelo runtime do Turbo Pascal, que são os arquivos Chain (corrente), em um formato especifico do Turbo Pascal, com a extensão .CHN. Podemos traçar um paralelo desses arquivos .CHN com as técnicas modernas de Dynamic loading possíveis através dos Shared Objects ou Dynamic Load Libraries presentes nos sistemas operacionais modernos, como UNIX (Linux, Solaris, …), através dos módulos .so e no Windows através das famosas .dll‘s, entretanto no Turbo Pascal há muitas limitações do uso de arquivos .CHN.
  • Run – Compila e executa um programa, de acordo com a seleção feita na opção compiler Options.
  • Save – Salva um Work file ou Main file, carregado no editor.
  • Dir – Mostra o conteúdo do drive e diretório corrente.
  • Quit – Sai do Turbo Pascal.
  • compiler Options – Possibilita a alteração do modo de compilação, podendo ser compilação em memória, arquivo .COM, ou .CHN. Existe também a opção de configuração para depuração de erros de runtime.

Comandos básicos do editor.

Ao contrário dos dias atuais onde tudo se resolve com um clique do mouse ou até mesmo com um toque dos dedos, nos primeiros dias da micro-informática nem tudo era repleto de menus com fácil acesso e principalmente com padronizações bem definidas quanto aos atalhos comuns entre os softwares, coisa que hoje é definida grande parte pelo próprio sistema operacional hospedeiro. No Turbo Pascal 3.0 não é diferente, até mesmo porque é um software de 1983, onde estávamos bem longe de tal padronização. Entretanto existiam alguns “padrões” de mercado, na época e que, principalmente, eram ditados pelos softwares que estavam “bombando” naquele momento.

No caso do Turbo Pascal, um outro software que influenciou muito na interface de edição dos programas, foi o WordStar, que foi o primeiro processador de textos de grande sucesso do mundo, na época. Como a grande maioria dos usuários já estavam habituados aos padrões de comandos de edição do WordStar, todo software similar daquela época procurava imitar o líder de mercado, comportamento esse que é seguido até hoje em todos os softwares atuais.

Tela principal do WordStar

Tela principal do WordStar

Apenas para deixar registrado visualmente, abaixo podemos observar o conceito de WYSIWYG da época, sob o ponto de vista do software líder de mercado, o WordStar.

WordStar e os primórdios do WYSIWYG

WordStar e os primórdios do WYSIWYG

Não vou descrever todos os comandos e atalhos do editor do Turbo Pascal mas os principais e mais importantes com certeza estarão aqui. Os atalhos sempre eram ativados no Turbo Pascal com a combinação CTRL+K, seguida de outra tecla que especificava o comando a ser executado. Segue abaixo a lista dos principais:

  • CTRL+K D – Essa combinação de teclas quando digitada de dentro do editor, faz com que o menu principal seja ativado. Geralmente quando você está editando um fonte e na sequência deseja iniciar a compilação do mesmo, primeiro deverá sair do editor e retornar ao menu principal, uma vez que nessa versão do Turbo Pascal não tinhamos ainda o conceito de menus DropDown.
  • CTRL+K B – Combinação de teclas que especifica a marcação de um inicio de bloco a ser copiado para o Clipboard, ou área de transferência, como conhecemos em português.
  • CTRL+K K – Combinação de teclas que especifica a marcação do fim de um bloco a ser copiado para o Clipboard, ou área de transferência. É similar a marcação de texto feito pelo mouse em sistemas de processamento de textos atuais.
  • CTRL+K C – Copia um texto previamente marcado através da combinação anterior CTRL+K B/CTRL+K K, para a posição corrente do cursor.
  • CTRL+K V – Move um texto previamente marcado através da combinação anterior CTRL+K B/CTRL+K K, para a posição corrente do cursor.
  • CTRL+K W – Grava para arquivo, o texto previamente marcado através da combinação anterior CTRL+K B/CTRL+K K. Ao executar essa combinação, aparecerá, no topo da tela do editor, a mensagem “Write block to file:“, solicitando o nome do arquivo a ser gravado.
  • CTRL+K R – Carrega, na posição corrente do cursor, o texto gravado em um arquivo do disco. Ao executar essa combinação, aparecerá, no topo da tela do editor, a mensagem “Read block from file:“, solicitando o nome do arquivo a ser carregado.

.

A hora do código.

Bom, chega de enrolar e vamos colocar a mão na massa, passando primeiramente pelos conceitos mais básicos da linguagem, então nesse post vamos nos concentrar apenas na estrutura básica de um programa Pascal e a partir do próximo post, sim, vamos entrar nos detalhes mais avançados da linguagem, incluindo sua integração com recursos específicos de nossa plataforma preferida, o MSX :) .

Lembrando que o intuito desse curso não é ensinar estrutura de dados e técnicas de programação, portanto irei considerar isso um pré-requisito.

Vamos conhecer a estrutura básica de um programa em Pascal.

Program Hello_World;
(* ******************************************************** * Área de variáveis globais; * Definição de constantes;  * Definição de novos tipos de dados (user defined types); * Definição de registros (estruturas de dados); * Definição de funções do usuário; * Definição de procedimentos do usuário; ******************************************************** *)
Begin  { Entry point principal do programa ou método principal }
  (* Área de código do programa principal *)
  WriteLn( 'Hello World' );
End.

Vamos começar do inicio :) . Primeiramente o que o novo programador de Pascal precisa saber é que a linguagem não é case-sensitive, ou seja, comandos, variáveis, constantes, novos tipos ou registros, se definidos diferenciando-se apenas os caracteres entre maiúsculos e minúsculos, não serão distintos para o compilador Pascal. Ex: PROGRAM, Program, PrOgRaM, para o compilador Pascal é considerado a mesma palavra.

Sabendo isso vamos começar analisando a primeira linha de nosso programa exemplo, começando pela palavra reservada Program nome_programa, que especifica o nome do programa em questão, mas tem efeito apenas cosmético, sendo mais utilizado para identificar o programa principal, por isso, caso o programador não queira utilizar não é empecilho para se escrever um programa em Pascal. Caso se utilize um nome de programa não se esqueça de que o nome não pode ter espaços.

Logo abaixo temos um comentário de múltiplas linhas que se inicia com  (* e termina com *), podendo também ser definido um comentário de múltiplas linhas através de { terminando com }. Infelizmente até a primeira versão do Delphi, não tivemos no Pascal da Borland nenhum equivalente aos comentários de linha única, como o //.

(* ******************************************************** * Área de variáveis globais; * Deinição de constantes;  * Definição de novos tipos de dados (user defined types); * Definição de registros (estruturas de dados); * Definição de funções do usuário; * Definição de procedimentos do usuário; ******************************************************** *)

Podemos, e vamos, utilizar no futuro a área onde está o comentário acima justamente da forma descrita no próprio comentário no código, ou seja, área de variáveis globais, constantes, definições de novos tipos e estruturas, funções e procedimentos definidos pelo usuário, que veremos a partir do próximo post.

Por último temos o bloco do programa principal, main entry-point ou função principal para quem gosta de C/C++.

Como Pascal é uma linguagem estruturada onde cada função tem seu próprio escopo de código e dados, para se definir o início desse escopo, utilizamos a palavra reservada Begin, finalizando-o através da palavra End.

Lembrando que em Pascal o separador de comandos é sempre o ; (ponto e virgula) mas no caso do bloco principal a palavra End sempre terminará com . (ponto), então o seu programa principal sempre será conforme a estrutura abaixo.

Begin  { Inicio do bloco do programa principal }
  (* Seu programa entra aqui *)
End.   { Término do bloco principal }

Por último vou falar, resumidamente, do statement WriteLn, que é utilizado como rotina de saída (output) para os dispositivos suportados pelo Turbo Pascal e nesse caso específico é utilizado para exibir um conjunto de caracteres (string) na saída padrão do computador, que é a tela do console, então o nosso programa de exemplo….

Begin
  WriteLn( 'Hello World' );
End.

…deverá gerar a seguinte saída…

.
Hello World
.

Não vou me aprofundar, por enquanto, sobre o statement WriteLn uma vez que nos próximos posts vou voltar a falar em profundidade sobre esse comando e também sobre as demais rotinas de I/O de Turbo Pascal.

Bom, vou ficar por aqui, entretanto você pode estar se perguntando o porque deu eu estar bem devagar nesse principio do curso e eu te respondo que eu conheço os meus visitantes assíduos e sei que muitos dos que estão esperando “ansiosamente” pelo curso de Pascal, seguido pelo de C, são não programadores, logo, terei que deixar essa fundação bem sólida. ;) e apesar de eu já ter dito que não irei focar em estruturas de dados, nesse caso, vou manter algo mais light no inicio….mas a pauleira começa a partir do próximo post. :)

[]‘s
PopolonY2k

Referência na internet

Post original (Turbo Pascal Forever - Start your engines).
http://www.popolony2k.com.br/?p=1608

Turbo Pascal Forever – Introdução
http://www.popolony2k.com.br/?p=1058

CP/M operating system (Wikipedia)
http://en.wikipedia.org/wiki/CP/M

Anders Hejlsberg (Wikipedia)
http://en.wikipedia.org/wiki/Anders_Hejlsberg

Antique Software: Turbo Pascal 1.0 – Embarcadero
http://edn.embarcadero.com/article/20693

Java – Linguagem de programação (Wikipedia)
http://pt.wikipedia.org/wiki/Java_%28linguagem_de_programa%C3%A7%C3%A3o%29

Microsoft .Net (Wikipedia)
http://pt.wikipedia.org/wiki/Microsoft_.NET

C# (Wikipedia)
http://en.wikipedia.org/wiki/C_Sharp_%28programming_language%29

Conspiracy Theory: Microsoft’s .Net IS Borland’s Product
http://delphi.about.com/od/delphifornet/a/conspiracydnet.htm

Apple Inc. (Wikipedia)
http://en.wikipedia.org/wiki/Apple_Inc.

Objective-C (Wikipedia)
http://en.wikipedia.org/wiki/Objective-C

IPod (Wikipedia)
http://en.wikipedia.org/wiki/Ipod

IPad (Wikipedia)
http://en.wikipedia.org/wiki/Ipad

IPhone (Wikipedia)
http://en.wikipedia.org/wiki/Iphone

MacOS (Wikipedia)
http://en.wikipedia.org/wiki/Macos

MacOSX (Wikipedia)
http://en.wikipedia.org/wiki/Macosx

Linguagem C (Wikipedia)
http://en.wikipedia.org/wiki/C_language

Dennis Ritchie RIP++
http://www.popolony2k.com.br/?p=1204

Object Pascal (Wikipedia)
http://en.wikipedia.org/wiki/Object_Pascal

Embarcadero Delphi (Wikipédia)
http://en.wikipedia.org/wiki/Borland_Delphi

WordStar (Wikipedia)
http://en.wikipedia.org/wiki/WordStar

Dynamic loading (Wikipedia)
http://en.wikipedia.org/wiki/Dynamic_loading

FreePascal (Wikipedia)
http://en.wikipedia.org/wiki/Freepascal

Menu (Computing – Wikipedia)
http://en.wikipedia.org/wiki/Menu_%28computing%29

Clipboard (Wikipedia)
http://en.wikipedia.org/wiki/Clipboard_%28software%29

WYSIWYG (Wikipedia)
http://en.wikipedia.org/wiki/WYSIWYG

Case-sensitive (Wikipedia)
http://pt.wikipedia.org/wiki/Case_sensitive



Tags deste artigo: tk90 spectrum zx msx tk90x z80 commodore 64 amiga cp400 cp500 x86 tk85 6502 6510