Saltar para o conteúdo

BASIC

Origem: Wikipédia, a enciclopédia livre.
(Redirecionado deBasic)
Nota:Este artigo é sobre a linguagem de programação. Para o filme de John McTiernan de 2003 com John Travolta, vejaBasic (filme).Para o equipamento de técnicas verticais/escalada, vejaBasic (escalada).Para o bloco de quatro países recentemente industrializados, vejaBASIC (grupo de países).
BASIC
Paradigma Imperativo,estruturado, procedural
Surgido em 1964
Criado por John G. Kemeny,Thomas E. Kurtz,Mary Kenneth Keller
Estilo de tipagem Forte, estática, explícita
Dialetos: BBC BASIC,Just BASIC,RealBasic,Vintage BASIC
Influenciada por ALGOL 60,Fortran II,JOSS
Influenciou Euphoria,Logic Basic,Perl,REXX,VBScript,Visual Basic,Visual Basic.NET

BASIC(acrônimo paraBeginner'sAll-purposeSymbolicInstructionCode;emportuguês:Código de Instruções Simbólicas de Uso Geral para Principiantes) é umalinguagem de programação,criada com fins didáticos, pelos professoresJohn George Kemeny,Thomas Eugene KurtzeMary Kenneth Kellerem1964noDartmouth College.[1]

Basic pode ser uma opção de linguagem para se aprender lógica, uma vez que foi desenvolvida em alto nível (próxima da linguagem humana). Além da sua relativa facilidade de criar aplicações de forma simples e rápida.

BASIC também é o nome genérico dado a uma grande família de linguagens de programação derivadas do BASIC original. Provavelmente existem mais variações de BASIC do que de qualquer outra linguagem de programação.[carece de fontes?]

Caracterização da linguagem

[editar|editar código-fonte]

BASIC é uma linguagem imperativa de alto nível, pertencente à terceira geração, originalmente compilada (apesar de suas implementações em microcomputadores ter disseminado a versão interpretada) e não estruturada, por ter sido fortemente baseada emFortran II.[carece de fontes?]O fato de sua versão original ser compilada se explica por ter sido implementada num sistema de tempo compartilhado, o que faz bastante sentido.

Com o tempo, BASIC evoluiu, criando condições para aprogramação estruturadae até mesmo para aprogramação orientada a objetos,como é o caso das últimas versões doVisual Basic.

No começo a linguagem podia ser usada em computadores com pouca memória e era bem limitada, possuía apenas um tipo de dado em ponto-flutuante.

Um programa em BASIC tradicional tem suas linhas numeradas, sendo que é quase que padrão usar números de 10 em 10 (o que facilita a posterior introdução de linhas intermediárias, se necessário). Os comandos são poucos, simples e facilmente compreensíveis na língua inglesa (LET, IF,...).[2]Um programa em BASIC, que imprime todos os números pares entre A e B, lidos do teclado, seria escrito como:

10INPUTA,B
20FORI=ATOBSTEP1
30IFMOD(I,2)>0THEN50
40PRINTI
50NEXTI
60END

O programa demonstra a falta de estruturação da linguagem original, pois oIFfunciona como umGOTOcondicional, o que favorece ocódigo espaguete.

Com o tempo os números das linhas sumiram (ou se tornaram opcionais) e as instruções estruturadas foram aparecendo, com várias outras modificações. O mesmo programa poderia ser escrito como:[carece de fontes?]

INPUTA,B
FORI=ATOB
IFMOD(I,2)=0THENPRINTI
NEXT

Já em Visual Basic, as coisas se complicam se estivermos usando programação visual e componentes. Um programa emVisual Basic for Applicationsusando 3 componentes de texto e um botão poderia ter a seguinte aparência:

PrivateSubCommandButton1_Click()
ForI=Val(Text1.Text)ToVal(Text2.Text)
IfIMod2=0Then
Text3.Text=Text3.Text+Str(I)
EndIf
Next
EndSub

Veja que nesse programa são usados componentes, que são objetos, e suas propriedades. O comando print foi substituído por não ser adequado ao ambiente de janelas típico da linguagem. A sub-rotina é ativada quando um botão é chamado.

Todas as versões de BASIC são geralmente fáceis de aprender, principalmente por serem muito permissivas quando comparadas a linguagens fortemente estruturadas e tipadas, comoPascal.Porém, a aprendizagem de BASIC é muitas vezes informal e é por muitos consideradoprejudicial,por não reforçar as regras tradicionais de programação estruturada e outros cuidados de programação que se tornaram prática quase que obrigatória com o tempo.[carece de fontes?]

Por sua extrema simplicidade, o BASIC permitia a implementação deinterpretadoresrazoavelmente poderosos em memórias mínimas, o que era uma vantagem enorme em relação aos micro-computadores.[carece de fontes?]

Um interpretador BASIC pode ser escrito com 25 linhas de código C (intencionalmente compactado).[3]Um código emPascalque interpretaTiny Basic,bem estruturado e comentado tem apenas 1300 linhas.[4]

Um computadorSinclair ZX80,por exemplo, possuía 1K de RAM e 4K de ROM, que continha um interpretador BASIC, um editor de programação e osistema operacional.O uso de compactação permitia que o programa a seguir contivesse apenas 39 bytes.[carece de fontes?]

10FORA=16424TO1742418Bytes
20PRINTPEEK(A);12Bytes
30NEXTA5Bytes
40STOP4Bytes

Cada instrução em BASIC ocupa uma linha. Para usar mais de uma linha é necessário usar um caractere de continuação. Um dos aspectos mais conhecidos de BASIC era a utilização de numeração para as linhas. A maioria dos interpretadores possui um comando RENUMBER que permite renumerar todas as linhas de acordo com um intervalo pré-determinado (como emRENUMBER 10). Alguns, mas não todos, dialetos mais modernos abandonaram os números e suportam a maioria, ou todas, as instruções de controle estruturada e declaração de dados, permitindo a construção de programas estruturados como emPascal.[carece de fontes?]

Variantes recentes, como Visual Basic, introduziram características de orientação a objeto. A gerência de memória é mais fácil que na maioria das linguagens de procedimentos, pois normalmente existe umcoletor de lixo.[carece de fontes?]

Procedimentos e controle de fluxo

[editar|editar código-fonte]

Ao contrário de outras linguagens, comoC,a biblioteca de funções de BASIC não é externa, mas considerada parte intrínseca da linguagem.[carece de fontes?]

No BASIC original existem apenas dois tipos de variáveis, as textuais e as numéricas. Para declarar uma variável numérica você precisa escrever uma caractere alfabético seguido ou não de um numérico. E para as variáveis textuais você deve escrever caracteres alfabéticos e no final o símbolo “$”.[carece de fontes?]O BASIC, mesmo o original, oferece bons recursos para a manipulação de "strings" (variáveis alfanuméricas, de tipo texto) e esta é uma facilidade prevista no projeto da linguagem. A evolução da linguagem, entretanto, possibilitou que novos tipos de dados fossem acrescentados, como a manipulação de ponto flutuante.

A linguagem original foi projetada em 1963 porJohn George KemenyeThomas Eugene Kurtz,sendo implementada por uma equipe de estudantes de Dartmouth sob sua direção. BASIC foi projetado para permitir que os estudantes escrevessem programas para oDartmouth Time-Sharing System.A 1 de maio, às 4 horas, dois programas[5]escritos em BASIC correram ao mesmo tempo nos computadores de Dartmouth. A linguagem atacava a complexidade das linguagens existentes na época e se destinada a uma nova classe de usuários que passava a ter acesso ao computador com o aparecimentos dossistemas de tempo compartilhado,isto é, usuários que não estavam tão interessados na velocidade, mas sim em usar a máquina, e que não pretendiam dedicar suas vidas à computação. A ideia por trás da criação de BASIC é permitir principalmente a estudantes[6]de diferentes áreas de conhecimento, incluindo aqueles que não se dedicariam às ciências exatas, como era o caso dos alunos de Kurtz e Kemeny, oriundos de cursos de ciências humanas (foco principal de Darthmouth à época), escreverem simples programas que não dependam de profundos conhecimentos técnicos. Alguns desses alunos, mesmo não sendo de cursos de engenharia, auxiliaram na criação de BASIC. Nos anos seguintes, com o aparecimento de outros dialetos da linguagem, a versão original passou a ser conhecida comoDarthmouth BASIC.[2]

Os oito princípios de projeto de BASIC foram:

  • ser fácil, para ser utilizada por iniciantes;
  • ser uma linguagem de programação de uso geral;
  • permitir que especialistas adicionassem características avançadas, sem tornar a linguagem mais complicada para os iniciantes;
  • ser interativa;
  • fornecer mensagens de erro claras e amigáveis;
  • responder rapidamente para programas pequenos;
  • não exigir o conhecimento do hardware do computador;
  • proteger o sistema operacional do usuário.

A linguagem foi criada a partir deFortran IIe parcialmente inspirada emALGOL 60,com adições para torná-la adequada aotime-sharing,tendo sido consideradas características de outros sistemas comoJOSS,CORCe até mesmoLISP.[carece de fontes?]

EmDartmouth,a linguagem foi precedida de outros experimentos destinados ao ensino de programação, como as implementações deSAPeDART(umFortran IIsimplificado)DARSIMCOeDOPE.[carece de fontes?]

Inicialmente a linguagem se concentrava apenas em trabalho matemático, incluindo uma extensão para aritmética de matrizes, sendo que o suporte completo a manipulação de cadeias de caracteres emASCIIfoi adicionado em 1965.[carece de fontes?]

Sua primeira implementação foi em ummainframeGE-265,que suportava múltiplos terminais. Ao contrário do que se tornaria mais tarde comum, sua primeira versão era compilada, sendo bastante eficiente e mais rápida queFortran IIeALGOL 60no GE-265 em muitas tarefas razoáveis de programação, como maximizar aregra de Simpson.[carece de fontes?]

Os projetistas da linguagem decidiram que ela devia permanecer em domínio público, para que pudesse se espalhar. Também a tornar disponível para escolas de ensino médio (high schools) na região deDarthmouth,e fizeram um esforço considerável para promover a linguagem. Como resultado, o conhecimento de BASIC se tornou razoavelmente comum para uma linguagem de programação da época e passou a ser implementada por vários fabricantes, sendo bastante popular nosminicomputadoresmais novos como osPDPsdaDECe oNovadaData General.Nesses computadores era normal a linguagem ser interpretada em vez de compilada.

Um dos antigos dialetos, oBBC BASIC,originalmente lançado em 1981, continua sendo atualizado por Russel (2018).

[carece de fontes?]

O BASIC original

[editar|editar código-fonte]

O BASIC original possuía apenas 15 comandos:[2]

  • LET, para atribuição, como em:
10LETA=1
  • READ, para ler o valor de uma ou mais variáveis de declarações DATA, como em:
20READB,C,D
  • DATA, para definir listas de valores a serem usados lidos pelo READ, como em:
30DATA10,20,30
  • PRINT, para imprimir no dispositivo de saída o valor de expressões, como em:
40PRINTA,"VALOR DE",B+C
  • GOTO, para redirecionar a execução do programa para outra linha, como em:
50GOTO500
  • IF-THEN, para redirecionar um programa para outra linha, de acordo com o valor de uma expressão lógica, como e:
500IFB<CTHENGOTO20
  • FOR-TO-STEP, para iniciar uma repetição, como em:
510FORI=1to7STEP2
  • NEXT, para indicar a continuação de uma repetição, como em:
600NEXTI
  • END, que deve acabar todo o programa e indica seu fim se o processamento lá chegar.
  • STOP, que equivale a um GOTO para a linha contendo o END
  • DEF, para definir uma função.
  • GOSUB, para pular para um ponto do programa com asemânticade sub-rotina.
  • RETURN, para voltar de uma sub-rotina.
  • DIM, para definir vetores e matrizes.
  • REM, para comentários.

Um programa em BASIC é composto de linhas numeradas, possivelmente com intervalos entre os números. Era normal numerar as linhas dos programas de 10 em 10. Além disso, a linguagem fornecia funções como SIN (seno) e ABS (valor absoluto). O próprio manual já apresenta algumas extensões, como a capacidade de manipular matrizes emCARDBASIC.[carece de fontes?]

Típico programa em BASIC

[editar|editar código-fonte]

Um típico programa em BASIC (original), seria o seguinte:

10REM RESOLVE EQUACAO DO SEGUNDO GRAU
20READA,B,C
30IFA=0THENGOTO400
40LETD=B*B-4*A*C
50IFD<0THENGOTO420
60PRINT"SOLUCAO"
70IFD=0THENGOTO200
80PRINT"PRIMEIRA SOLUCAO",(-B+SQR(D))/(2*A)
90PRINT"SEGUNDA SOLUCAO",(-B-SQR(D))/(2*A)
100GOTO20
200PRINT"SOLUCAO UNICA",(-B)/(2*A)
300GOTO20
400PRINT"A DEVE SER DIFERENTE DE ZERO"
410GOTO20
420PRINT"NAO HA SOLUCOES REAIS"
430GOTO20
490DATA10,20,1241,123,22,-1
500END

Note que o BASIC original não tinha uma instrução de entrada de dados (que mais tarde seria nomeada de INPUT), e que o READ, ao não encontrar mais dados para ler (em uma declaração DATA), considerava o programa terminado. Além disso, note que a forma de programar escolhida para esse exemplo é típica de um programa BASIC, o que leva à questão docódigo espaguete.[carece de fontes?]O comando INPUT foi acrescentado à linguagem em sua versão 4, conforme o manual[7]de 1968.

Cálculos matemáticos em BASIC

[editar|editar código-fonte]

O programa abaixo foi interpretado em Vintage Basic e calcula os primeirosnnúmeros perfeitos.

1000INPUT"DIGITE UM NUMERO";N%
1010LETD1%=1
1020LETNi%=0
1030LETD2%=1
1040LETS1%=0
1050LETQ%=D1%/D2%
1060IFQ%*D2%=D1%THENS1%=S1%+D2%
1080IFS1%>D1%THENGOTO1120
1090D2%=D2%+1
1100IFD2%<D1%THENGOTO1050
1110IFS1%=D1%ANDD1%<>1THENNi%=Ni%+1:PRINT"N"Ni%":"D1%
1120D1%=D1%+1
1130IFNi%<N%THENGOTO1030
1140END

Impacto da linguagem

[editar|editar código-fonte]

Durante a época de 1970 e 1980, no Brasil o BASIC ajudou a espalhar os conceitos básicos sobre algoritmos e armazenamento de dados, o seu aprendizado simples aboliu a crença de que escrever um programa era algo muito complicado.

Por conta da linguagem que Bill Gates começou a programar, assim desenvolvendo mais tarde um interpretador da linguagem para um dos primeiros computadores pessoais nos EUA, o Altair 8800.

Em 1983 professores da Universidade Dartmouth fundaram a cia. True Basic, após estudantes os convencerem. A empresa está em ativa até os dias de hoje.

A era de ouro do BASIC

[editar|editar código-fonte]

Apesar do uso da linguagem em vários minicomputadores, foi a introdução doAltair 8800e a posterior explosão dos computadores pessoais a partir de 1975 que iniciou a disseminação do BASIC. Praticamente todo microcomputador fornecia um ambiente de programação BASIC residente já em suasROMs.[carece de fontes?]

A maioria das linguagens de programação é muito grande para caber na pequena memória que a maioria dos usuários tinha condição de comprar para suas máquinas. Além disso, as baixíssimas velocidades damemória secundáriautilizadas, fitas de papel e cassetes de áudio, faziam com que uma linguagem pequena como BASIC fosse uma boa opção.[carece de fontes?]

Esse BASIC, acrescido de comandos típicos de sistemas operacionais (mesmo que simplíssimos) e de edição, residente emROM,funcionava como uma espécie de linguagem própria do computador, o mais próximo existente do que hoje chamamos de sistema operacional, e a maioria das aplicações da época seria escrita no dialeto de BASIC específico da máquina.[carece de fontes?]

Outra vantagem da linguagem é que era razoavelmente bem conhecida pelos jovens projetistas que se interessaram pelos microcomputadores naquela época, como resultado do proselitismo de Kemeny e Kurtz.[carece de fontes?]

Um dos primeiros interpretadores a aparecer para oAltair 8800foi oTiny Basic,uma implementação simples originalmente escrita por DoutorLi-Chen Wang,e portada para o Altair porDennis Allisonsob pedido deBob Albrecht(que mais tarde fundaria oDr. Dobb's Journal.Em 1976 o projeto e código completo de Tiny Basic foram publicados nessa revista.[carece de fontes?]

Companhias mais novas tentaram seguir o sucesso daMITS,IMSAI,North StareApple Inc.,criando então a revolução dos microcomputadores. Simultaneamente, várias firmas lançaram outras versões de BASIC, além das empresas de computadores, algumas empresas de software apresentavam interpretadores com melhorias sobre as versões que vinham com as máquinas, e outras para algumas máquinas que vinham sem o apoio da linguagem, como as versões baseadas emCP/M-80.Breve, havia muitos milhões de máquinas rodando BASIC no mundo, certamente com mais programadores do que todas as outras linguagens somadas.[carece de fontes?]No Brasil o Basic ficou bastante conhecido (na segunda metade da década de 1980) pelos usuários do MSX da Gradiente, eclonesdo Apple II+ e Apple IIe (TK-3000) que foram alguns dos primeiros computadores acessíveis ao público.

Exemplos de códigos

[editar|editar código-fonte]
Ver artigo principal:Programa Olá Mundo
10PRINT"Olá, Mundo!"
20END
INPUT"Qual é o seu nome";UserName$
PRINT"Hello";UserName$
DO
INPUT"Quantas estrelas você quer";NumStars
Stars$=""
Stars$=REPEAT$("*",NumStars)
REM em MS BASIC a instrução seria Stars$ = STRING$(NumStars, "*" )
PRINTStars$
DO
INPUT"Você quer mais estrelas";Answer$
LOOPUNTILAnswer$<>""
Answer$=LEFT$(Answer$,1)
LOOPWHILEUCASE$(Answer$)="Y"
PRINT"Adeus";
FORI=1TO200
PRINTUserName$;"";
NEXTI
PRINT

Muitos anos após seu lançamento, profissionais respeitados da computação, especialmenteEdsger W. Dijkstra,expressaram a opinião que o uso da expressão GOTO, que existia em várias linguagens além de BASIC, promovia práticas não desejáveis de programação. Alguns também acusaram BASIC de ser muito simples ou muito lenta.[carece de fontes?]

Um dos principais problemas com as versões originais de BASIC era a falta de uma estrutura re-entrante de chamada de sub-rotinas ou funções, como aconteceALGOL,Pascal e na maioria das linguagens modernas de programação (mesmo em versões mais modernas de BASIC). Isso é uma propriedade similar a dosFortranoriginais e um grande entrave à modularização de programas.[carece de fontes?]

Durante algum tempo, BASIC foi a linguagem de escolha para ensinar programação, porém hoje em dia é considerada uma linguagem pouco adequada para o ensino, pois a facilidade e permissividade da linguagem permitia a construção de programas que não seguem princípios básicos de programação, o que se reflete mais tarde na construção de programas mais complexos por aqueles que foram ensinados com BASIC. Como linguagem de aprendizado, BASIC foi substituída principalmente por Pascal.[carece de fontes?]

  • BASIC version 2 manual.Dartmouth College Computation center, 1964. (PDF)
  • BASIC version 4 manual.Dartmouth College Computation center, 1968. (PDF)
  • Lien, David A. (1986).The Basic Handbook: Encyclopedia of the BASIC Computer Language(3rd ed.). Compusoft Publishing.ISBN 0-932760-33-3.Documents dialect variations for over 250 versions of BASIC.
  • Jean E. Sammet.Programming languages: History and fundamentals.Prentice-Hall, Englewood Cliffs, N.J. 1969.
  • ANSI/ISO/IEC Standard for Minimal BASIC:
    • ANSI X3.60-1978 "FOR MINIMAL BASIC"
    • ISO/IEC 6373:1984 "DATA PROCESSING - PROGRAMMING LANGUAGES - MINIMAL BASIC"
  • ANSI/ISO/IEC Standard for Full BASIC:
    • ANSI X3.113-1987 "PROGRAMMING LANGUAGES FULL BASIC"
    • ISO/IEC 10279:1991 "INFORMATION TECHNOLOGY - PROGRAMMING LANGUAGES - FULL BASIC"
  • ANSI/ISO/IEC Addendum Defining Modules:
    • ANSI X3.113 INTERPRETATIONS-1992 "BASIC TECHNICAL INFORMATION BULLETIN # 1 INTERPRETATIONS OF ANSI 03.113-1987"
    • ISO/IEC 10279:1991/ Amd 1:1994 "MODULES AND SINGLE CHARACTER INPUT ENHANCEMENT"

Referências

  1. Kemeny, John G.; Kurtz, Thomas E. (1985).Back To BASIC: The History, Corruption, and Future of the Language.[S.l.]: Addison-Wesley. p. 1-53. 145 páginas.ISBN0-201-13433-0
  2. abc«BASIC - A Manual for BASIC, the elementary algebraic language designed for use with the Dartmouth Time Sharing System»(PDF)(em inglês).Dartmouth College.Consultado em 20 de novembro de 2010
  3. «DDS-BASIC Interpreter (Version 1.00)»(em inglês). Diomidis Spinellis.Consultado em 20 de novembro de 2010
  4. «TINY PASCAL BASIC»(em inglês). S. A. Moore.Consultado em 20 de novembro de 2010
  5. http://www.computer.org/portal/web/awards/cp-kurtz"
  6. http://cis-alumni.org/TKurtz.html
  7. http://www.bitsavers.org/pdf/dartmouth/BASIC_4th_Edition_Jan68.pdf

Ligações externas

[editar|editar código-fonte]
Wikcionário
Wikcionário
OWikcionáriotem o verbeteBASIC.