MBASIC: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica
Riga 36:
Per permettere di eseguire programmi molto grandi, le ultime versioni dell'MBASIC introdussero le istruzioni <code>CHAIN</code> e <code>MERGE</code>: la prima passava l'esecuzione ad un altro programma mentre la seconda caricava un programma unendolo a quello presente in memoria. Non c'era però il supporto all'esecuzione di programmi da terminale (l'istruzione <code>SHELL</code> presente in altri dialetti del BASIC), che permetteva di passare temporaneamente il controllo ad un comando del terminale per implementare funzioni del sistema operativo non supportate dall'MBASIC.
 
===Gestione dei file ed I/O===
<!--
I dati potevano essere letti o salvati su disco sia come file sequenziali, delimitati alla fine di ogni riga con la coppia di caratteri CR/LF ("carriage return"/"line feed") tipica del CP/M, sia come file ad accesso causale con campi di dimensione prefissata, che potevano essere utilizzati anche per implementare una rudimentale forma di [[database]]. I [[numero in virgola mobile|numeri in virgola mobile]] venivano salvati in formato MBF (''Microsoft Binary Format''), una codifica proprietaria che Microsoft usava in tutti i suoi BASIC che offriva una rappresentazione più precisa rispetto all'[[IEEE 754]] normalmente adottato dagli altri dialetti BASIC ma incompatibile con esso. I dati salvati in formato MBF potevano perciò essere letti solo su un computer che usava un BASIC Microsoft.
 
===Variabili Filese andtipi input/outputdi dato===
L'MBASIC supportava i seguenti [[Tipo di dato|tipi di dato]]:
Data could be read and stored to disk as either sequential files (delimited by the CP/M convention of CR/LF at the end of each line) or else as fixed-record-length random access files, which, given a sufficiently determined programmer, could be used to perform database-type record manipulation. The [[Microsoft Binary Format]] for [[floating point]] numbers was proprietary to the implementation, which meant that data could only be interchanged with other programs using ASCII text representation or else with extensive programming to convert the binary format.
* tipo [[Carattere (informatica)|carattere]] ad [[8 bit]], con [[Stringa (informatica)|stringhe]] lunghe massimo 255 caratteri;
* [[Numero intero (informatica)|interi]] a [[16 bit]];
* numeri in virgola mobile a [[32 bit]] (singola precisione), equivalenti a 6 cifre decimali con 2 cifre per l'esponente;
* numeri in virgola mobile a [[64 bit]] (doppia precisione), equivalenti a 16 cifre decimali con 2 cifre per l'esponente.
 
Gli operatori sulle stringhe includevano la selezione di parti delle stesse, la concatenazione, l'assegnamento, ed i test di uguaglianza.
=== Variables and data types ===
MBASIC supported the following data types:
* 8-bit character data, in strings of length 0 to 255 characters;
* 16-bit integers;
* 32-bit [[floating point]] (single precision), equivalent to six decimal digits, with a two-digit exponent;
* 64-bit floating point (double precision), equivalent to sixteen decimal digits, with a two-digit exponent.
 
I [[Array|vettori]] potevano avere fino a 7 dimensioni ma nessuna funzione od operatore poteva operare su di essi: ad esempio, non si potevano eseguire operazioni di assegnamento. A differenza di altri dialetti BASIC di quel periodo, l'MBASIC non supportava le operazioni sulle [[matrice|matrici]] ed i [[Numero complesso|numeri complessi]] né un tipo di [[Binary-coded decimal|dato decimale (BCD)]].
String operators included substring selection, concatenation, assignment, and testing for equality.
 
Tutte le operazioni in virgola mobile erano eseguite via software dato che quasi nessun sistema CP/M aveva un [[coprocessore matematico]]: per questo motivo le funzioni matematiche precostituite quali il [[Seno (matematica)|seno]], il [[coseno]], la [[Tangente (trigonometria)|tangente]], il [[logaritmo naturale]], la [[funzione esponenziale]], la [[radice quadrata]], davano solo risultati in singola precisione.
Arrays of the above types were allowed with up to 7 dimensions, but no functions or operators worked on arrays; for example, there was no assignment of arrays. Unlike some other BASIC implementations of the time, MBASIC did not provide support for [[matrix (mathematics)|matrix]] operations, [[complex number]]s, or a [[binary coded decimal|decimal (BCD)]] data type for financial calculations. All floating point operations were carried out in software since typical CP/M systems did not have [[floating-point unit|floating point hardware]]. The built-in mathematics functions (sine, cosine, tangent, natural log, exponential, square root) only gave single precision results. A software [[pseudorandom number generator]] was provided; this relied on the user to key in a seed number to obtain a sequence of numbers useful for games and some simulations. MBASIC permitted but did not require the <code> LET </code> keyword for assignment statements.
 
L'MBASIC fornva anche un [[Numeri pseudo-casuali|generatore di numeri pseudo-casuali]], a cui l'utente poteva fornire un "seme" usato per ottenere una sequenza di numeri utili per i giochi o le simulazioni.
Early versions of BASIC on microcomputers were infamous for one- or two-character variable names, which made the meanings of variables difficult to recall in complex programs. MBASIC version 5 allowed identifiers up to 40 characters long, which permitted programmers to give variables readable names.
 
L'MBASIC consentiva l'uso della parola chiave <code>LET</code> per la dichiarazione delle variabili, anche se il suo uso non era obbligatorio. A differenza dei primi dialetti BASIC, l'MBASIC non limitava l'uso dei nomi delle variabili a 2 soli caratteri ma permetteva di usarne fino a 40 (MBASIC 5), consentendo così ai programmatori di usare nomi più indicativi del valore che conservavano.
<!--
 
=== Program flow control ===