Wikipedia for Schools in Portuguese is available here
CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
SITEMAP
Make a donation: IBAN: IT36M0708677020000000008016 - BIC/SWIFT:  ICRAITRRU60 - VALERIO DI STEFANO or
Privacy Policy Cookie Policy Terms and Conditions
BASIC - Wikipédia

BASIC

Origem: Wikipédia, a enciclopédia livre.

Nota: Se procura filme de John McTiernan de 2003 com John Travolta, consulte Basic (filme).

A linguagem Basic (Beginners All-Purpose Symbolic Instruction Code), foi criada, com fins didáticos, pelos professores John G. Kemeny e T. Kurtz em 1963 no Dartmouth College.

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.

É quase sem sentido comparar o Basic original com versões atuais, principalmente o Visual Basic, tendo em vista as grandes modificações existentes na linguagem.

Índice

[editar] Caracterização da linguagem

Apesar de ser muito difícil falar de Basic em geral, por causa da quantidade de dialetos e sua forte evolução no tempo, trataremos aqui das principais características das primeiras linguagens conhecidas como Basic. Para uma visão bem mais moderna da linguagem, veja Visual Basic.

Basic é uma linguagem imperativa de alto nível, pertencente à terceira geração, que é normalmente interpretada e, originalmente, não estruturada, por ter sido fortemente baseada em FORTRAN II.

Com o tempo Basic evoluiu, criando condições para a Programação estruturada e até mesmo para a Programação orientada a objetos, como é o caso das últimas versões do Visual Basic.

[editar] Evolução

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 colocação de linhas intermediárias). Os comandos são poucos, simples e facilmente compreensíveis na língua inglesa (LET, IF, ...). Um programa em Basic, que imprime todos os números pares entre A e B, lidos do teclado, seria escrito como:

10 INPUT A,B 
20 FOR I=A TO B STEP 1
20 IF MOD(I,2)>0 THEN 40
30 PRINT I
40 NEXT I
50 END

O programa demonstra a falta de estruturação da linguagem original, pois o IF funciona como um GOTO condicional, o que favorece o có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:

INPUT A,B
FOR I=A TO B 
  IF MOD(I,2)=0 THEN PRINT I
NEXT 

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

Private Sub CommandButton1_Click()
For I = Val(Text1.Text) To Val(Text2.Text)
  If I Mod 2 = 0 Then
    Text3.Text = Text3.Text + Str(I)
  End If
Next
End Sub

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.

[editar] Aprendizado

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, como Pascal. Porém, o aprendizado de Basic é muitas vezes informal e é por muitos considerado prejudicial, 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.

[editar] Espaço Ocupado

Por sua extrema simplicidade, o Basic permitia a implementação de interpretadores razoavelmente poderosos em memórias mínimas, o que era uma vantagem enorme em relação aos micro-computadores.

Um interpretador Basic pode ser escrito com 25 linhas de código C (intencionalmente compactado) [1]. Um código em Pascal que interpreta Tiny Basic, bem estruturado e comentado tem apenas 1300 linhas [2].

Um Sinclair ZX-80, por exemplo, possuía 1K de RAM e 4K de ROM, que continha um interpretador Basic, um editor de programação e o sistema operacional. Segundo [3], o uso de compactação permitia que o programa a seguir contivesse apenas 39 bytes.

     10 FOR A=16424 TO 17424     18 Bytes
     20 PRINT PEEK(A);           12 Bytes
     30 NEXT A                    5 Bytes
     40 STOP                      4 Bytes

[editar] A Linguagem

[editar] Sintaxe

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 em RENUMBER 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 em Pascal.

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 um garbage collector.

[editar] Procedimentos e controle de fluxo

Ao contrário de outras linguagens, como C, a biblioteca de funções de Basic não é externa, mas considerada parte intrínseca da linguagem.

[editar] Tipos de dados

[editar] Operadores lógicos e relacionais

[editar] Criação

A linguagem original foi projetada em 1963 por John Kemeny e Thomas 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 o Dartmouth Time-Sharing System. 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 dos sistemas de tempo compartilhado, isto é, usuários mais simples e que não estavam tão interessado na velocidade, mas sim em usar a máquina. Nos anos seguintes, com o aparecimento de outros dialetos da linguagem, a versão original passou a ser conhecida como Darthmouth BASIC.

Os oitos 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 usuário do sistema operacional


[editar] Precursores

A linguagem foi criada a partir de Fortran II e parcialmente inspirada em ALGOL 60, com adições para torná-la adequada ao time-sharing, tendo sido consideradas características de outros sistemas como JOSS, CORC e até mesmo LISP.

Em Dartmouth, a linguagem foi precedida de outros experimentos destinados ao ensino de programação, como as implementações de SAP e DART (um FORTRAN II simplificado) DARSIMCO e DOPE.

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 em ASCII foi adicionado em 1965.

Sua primeira implementação foi em um mainframe GE-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 que FORTRAN II e ALGOL 60 no GE-265 em muitas tarefas razoáveis de programação, como maximizar a regra de Simpson.

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 de Darthmouth, 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 ela passou a ser implementada por vários fabricantes, sendo bastante popular nos mini-computadores mais novos como os PDPs da DEC e o Nova (computador) da Data General. Nesses computadores era normal a linguagem ser interpretada em vez de compilada.

[editar] O Basic Original

O Basic original possuía apenas 15 comandos [4]:

  • LET, para atribuição, como em:
 10 LET A=1
  • READ, para ler o valor de uma ou mais variáveis de declarações DATA, como em:
 20 READ B,C,D
  • DATA, para definir listas de valores a serem usados lidos pelo READ, como em:
 30 DATA 10,20,30
  • PRINT, para imprimir no dispositivo de saído o valor de expressões, como em:
 40 PRINT A,"VALOR DE ",B+C
  • GOTO, para redirecionar a execução do programa para outra linha, como em:
 50 GOTO 500
  • IF-THEN, para redirecionar um programa para outra linha, de acordo com o valor de uma expressão lógica, como e:
500 IF B<C THEN GOTO 20
  • FOR-TO-STEP, para iniciar uma repetição, como em:
510 FOR I=1 to 7 STEP 2
  • NEXT, para indicar a continuação de uma repetição, como em:
 600 NEXT I
  • 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 a semântica de 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 e ABS.

O próprio manual já apresenta algumas extensões, como a capacidade de manipular matrizes em CARDBASIC.

[editar] Exemplo

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

10  REM RESOLVE EQUACAO DO SEGUNDO GRAU
20  READ A,B,C
25  IF A=0 THEN GOTO 410
30  LET  D=B*B-4*A*C
40  IF D<0 THEN GOTO 430
50  PRINT "SOLUCAO"
60  IF D=0 THEN GOTO 100
70  PRINT "PRIMEIRA SOLUCAO",(-B+SQR(D))/(2*A)
80  PRINT "SEGUNDA SOLUCAO",(-B-SQR(D))/(2*A)
90  GOTO 20
100 PRINT "SOLUCAO UNICA",(-B)/(2*A)
200 GOTO 20
410 PRINT "A DEVE SER DIFERENTE DE ZERO"
420 GOTO 20
430 PRINT "NAO HA SOLUCOES REAIS"
440 GOTO 20
490 DATA 10,20,1241,123,22,-1
500 END

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 da um programa Basic, o que leva a questões de código espaguete.

[editar] A era de ouro do Basic

Apesar do uso da linguagem em vários minicomputadores, foi a introdução do Altair 8800 e a posterior explosão dos computadores pessoais a partir de 1975 que iniciou a disseminação do Basic. Praticamente todo micro-computador fornecia um ambiente de programação Basic residente já em suas ROMs.

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 da memória secundária utilizadas, fitas de papel e cassetes de áudio, faziam com que uma linguagem pequena como Basic fosse uma boa opção.

Esse Basic, acrescido de comandos típicos de sistemas operacionais (mesmo que simplíssimos) e de edição, residente em ROM, 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.

Outra vantagem da linguagem é que ela era razoavelmente bem conhecida pelos jovens projetistas que se interessaram pelos micro-computadores naquela época, como resultado do proselitismo de Kemeny e Kurtz.

Um dos primeiros interpretadores a aparecer para o Altair 8800 foi o Tiny Basic, uma implementação simples originalmente escrita por Doutor Li-Chen Wang, e portada para o Altair por Dennis Allison sob pedido de Bob Albrecht (que mais tarde fundaria o Dr. Dobb's Journal. Em 1976 o projeto e código completo de Tiny Basic foram publicados nessa revista.

Companhias mais novas tentaram seguir o sucesso da MITS, IMSAI, North Star e Apple, 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 em CPM/80. Breve, havia muitos milhões de máquinas rodando Basic no mundo, certamente com mais programadores do que todas as outras linguagens somadas.

[editar] Exemplos de códigos

[editar] Hello world

10 PRINT "Hello, world!"
20 END

[editar] ANSI BASIC

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, "*")  
   PRINT Stars$
   DO
      INPUT "Você quer mais estrelas";  Answer$
   LOOP UNTIL Answer$ <> ""
   Answer$ = LEFT$(Answer$, 1)
LOOP WHILE  UCASE$(Answer$) = "Y"
PRINT "Adeus ";
FOR I = 1 TO 200
   PRINT UserName$; " ";
NEXT I
PRINT

[editar] Críticas

Muitos anos após seu lançamento, profissionais respeitados da computação, especialmente Edsger 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.

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 acontece ALGOL, Pascal e na maioria das linguagens modernas de programação (mesmo em versões mais modernas de Basic). Isso é uma propriedade similar a dos Fortran originais e um grande entrave à modularização de programas.

[editar] Referências

[editar] Padrões

  • 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"

[editar] Ver também

Wikcionário
O Wikcionário possui o verbete: BASIC


Static Wikipedia 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2007 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2006 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Sub-domains

CDRoms - Magnatune - Librivox - Liber Liber - Encyclopaedia Britannica - Project Gutenberg - Wikipedia 2008 - Wikipedia 2007 - Wikipedia 2006 -

Other Domains

https://www.classicistranieri.it - https://www.ebooksgratis.com - https://www.gutenbergaustralia.com - https://www.englishwikipedia.com - https://www.wikipediazim.com - https://www.wikisourcezim.com - https://www.projectgutenberg.net - https://www.projectgutenberg.es - https://www.radioascolto.com - https://www.debitoformtivo.it - https://www.wikipediaforschools.org - https://www.projectgutenbergzim.com