Modula-2 | |
---|---|
Paradigma | Imperativa,Estruturada,Modular |
Surgido em | 1978 |
Criado por | Niklaus Wirth |
Estilo de tipagem | Forte, Estática |
Principais implementações | Native-XDS |
Dialetos | PIM2, PIM3, PIM4, ISO |
Influenciada por | Pascal,Modula,Mesa,ALGOL,Simula-67 |
Influenciou | Modula-3,Oberon,Ada,Fortran 90,Lua,Zonnon,Modula-GM |
Modula-2 é umalinguagem de programação projetada e criada porNiklaus Wirth noInstituto Federal de Tecnologia de Zurique (ETH), em torno de1978.
Modula-2 é umalinguagem de programação projetada e criada porNiklaus Wirth noInstituto Federal de Tecnologia de Zurique (ETH), em torno de 1978, e surgiu a partir da necessidade de criar uma linguagem prática, eficiente e essencialmente independente dohardware sobre o qual fosse executada. É descendente, principalmente, de duas outras linguagens: oModula e oPascal. Da primeira herdou o nome e o conceito de módulos, além da sintaxe sistemática e moderna, dentre outras características, doPascal. Assim como seus precursores, o Modula-2 classifica-se dentre as linguagens doParadigma Imperativo.
Sua história é intrínseca a do Projeto deLilith, cujo objetivo explícito era usar uma mesma linguagem para todos seus softwares, alinhado à necessidade de utilizar uma linguagem de programação estruturada e simples para que, além da construção de sistemas grandes e complexos, também fosse capaz de expressar toda a gama de programas necessários para tornarLilith em uma poderosa ferramenta de desenvolvimento de software. A solução para tal necessidade foi à concepção de uma linguagem que viabiliza a criação de módulos que podem ser compilados separadamente e que possuem checagem completa de tipos, além de suporte à programação concorrente.
O Modula-2 possui duas principais vertentes. Seguem algumas das variantes entre as elas:
O conceito de módulo pode ser usado para encapsular um conjunto de subprogramas eestruturas de dados, sendo importante tanto para a reusabilidade de código-fonte, quanto à restrição de visibilidade desnecessária de determinadas partes do programa, pois, exceto para identificadores padrão, nenhum objeto de escopos externos são visíveis dentro de um módulo a menos que explicitamente importados, ou então, nenhum objeto interno do módulo é visível de um escopo exterior, a menos que explicitamente exportados. Sua implementação é composta de duas partes:
Além dos softwares criados para oLilith, é possível encontrar diversos módulos gratuitos e disponíveis para download, como por exemplo, módulos paraexpressões regulares, interface com banco de dadosMySQL, leitura de arquivosXML, criação de arquivosExcel, compactação e descompactação de arquivos, dentre outros.
A sintaxe básica do Modula-2 será apresentada a seguir com alguns exemplos:
AND ELSIF LOOP REPEATARRAY END MOD RETURNBEGIN EXIT MODULE SETBY EXPORT NOT THENCASE FOR OF TOCONST FROM OR TYPEDEFINITION IF POINTER UNTILDIV IMPLEMENTATION PROCEDURE VARDO IMPORT QUALIFIED WHILEELSE IN RECORD WITH
VAR n : CARDINAL;
VAR 123número : CARDINAL;
ABS EXCL LONGINT REALBITSET FALSE LONGREAL SIZEBOOLEAN FLOAT MAX TRUECAP HALT MIN TRUNCCARDINAL HIGH NIL VALCHAR INC ODDCHR INCL ORDDEC INTEGER PROC
+Adição, união de conjuntos-Subtração, diferença de conjuntos*Multiplicação, interseção de conjuntos/Divisão&" E " lógico~" NÃO " lógico
=Igual#Diferente<Menor que>Maior que:=Atribuição<=Menor ou igual a>=Maior ou igual a' "Strings< >Diferente(**)Comentários
.Ponto,Vírgula;Ponto e vírgula:Dois pontos|Barra vertical^Derreferenciador
( )Expressões, tipos de enumeração{ }Conjuntos[ ]Tipo subfaixa, indexação de arrays
ATRIBUIÇÃO WHILE WITH Chamada de procedure REPEAT EXIT IF LOOP RETURN CASE FOR
MODULE hello; FROM InOut IMPORT writestring, writeln; BEGIN WriteString("Hello, world!"); Writeln; END hello.
MODULE Vetores; FROM InOut IMPORT ReadCard,WriteCard,WriteLn,WriteString; VAR Index : CARDINAL; Automoveis : ARRAY [1..12] OF CARDINAL; BEGIN FOR Index := 1 TO 12 DO Automoveis [Index] := Index + 10; END; Automoveis [7] := 54; WriteString ( " Este é o primeiro programa com um vetor. "); WriteLn; WriteLn; FOR Index := 1 TO 12 DO WriteString( " Numero do Automovel " ); WriteCard( Index , 3); WriteString( " Possui o valor de " ); WriteCard( Automoveis [Index] , 3); WriteLn; END; END Vetores.
IMPORT IO ... IO.WrStr(“Não utilizando FROM”); ... ou FROM IO IMPORT WrStr ... WrStr(“Não utilizando FROM”); ...
MODULE fatorial; FROM InOut IMPORT ReadCard,WriteCard,WriteLn,WriteString; VAR n : CARDINAL; PROCEDURE Fat(n : CARDINAL) : CARDINAL; BEGIN IF n=0 THEN RETURN 1 ELSE RETURN n*Fat(n-1); END; END Fat; BEGIN WriteString("Este modulo calcula o fatorial de 'N'"); WriteLn;WriteLn; WriteString("Entre com o valor de 'N':"); ReadCard(n); WriteLn;WriteLn; WriteString("O fatorial de"); WriteCard(n,3); WriteString(" e'"); WriteCard(Fat(n),6); END fatorial.
MODULE perfectNumbers; FROM InOut IMPORT ReadCard,WriteCard,WriteLn,WriteString; VAR n : CARDINAL; loop : CARDINAL; soma : CARDINAL; loopInterno : CARDINAL; BEGIN WriteString("Calculo de numeros perfeitos"); WriteLn; WriteString("Digite o valor de N - inteiro"); ReadCard(n); IF(n > 0) THEN loopInterno:=0; FOR loop:=1 TO n DO soma := 0; FOR loopInterno:=1 TO loop-1 DO IF(loop MOD loopInterno = 0)THEN soma := soma + loopInterno; END; END; IF(soma =loop)THEN WriteString("Perfeito:"); WriteCard(soma,6); WriteLn; END; END; ELSE WriteString("Numero invalido"); END; END perfectNumbers.
![]() | Este artigo sobreprogramação de computadores é umesboço. Você pode ajudar a Wikipédiaexpandindo-o. |