Ada/Basi: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica
cambio avanzamento a 75%
Riga 5:
==="Hello, World!"===
Per dare un' idea generale della sintassi di un linguaggio è tradizione illustrare un programma che stampa la frase "Hello, World!". In Ada si presenta così:
 
 
<source lang=ada>
with Ada.Text_IO;
procedure Hellohello is
use Ada.Text_IO;
 
procedure Hello is
 
begin
Ada.Text_IO.Put_Line("Hello, World!");
end hello;
end Hello;</source>
 
L'istruzione '''with''' aggiunge il package '''Ada.Text_IO''' al programma. Questo package è presente in ogni compilatore Ada e contiene tutte le funzionalità necessarie all'I/O testuale.
-- Saluta
l'istruzione '''with''' rende disponibili le dichiarazioni di '''Ada.Text_IO''' alla procedura '''Hello''', includendo quindi i tipi, i sottoprogrammi, e tutto ciò che è stato dichiarato per uso pubblico in '''Ada.Text_IO'''. In Ada possiamo paragonare i package a delle cassette per attrezzi: '''Text_IO''', ad esempio, fornisce una raccolta di utilissimi strumenti per l'I/O testuale, racchiusi in un modulo di facile accesso.
Ada.Text_IO.Put_Line("Hello, World!");
 
Esaminiamo il resto del programma.
end Hello;</source>
Analizziamo la procedura main: come possiamo notare, in Ada non ha bisogno di essere chiamata "main", qualsiasi nome va bene (in questo caso, ad esempio si chiama '''Hello'''). In seguito troviamo la chiamata a funzione '''Ada.Text_IO.Put_Line''' che scrive il testo fornitogli in input sul file di output.
 
Purtroppo, ci si accorge facilmente che l'istruzione '''with''' rende il contenuto del package visibile atraverso selezione, ovvero abbiamo bisogno di specificare ogni volta la provenienza della procedura indicando il nome del package. In programmi molto semplici come questo, possiamo accettarlo, ma in programmi più complessi, come possiamo fare? è necessaria una scorciatoia.
A questo punto abbiamo due opzioni:
 
*rinominare il package.
L'espressione '''with''' aggiunge la libreria Ada.Text_IO al programma, mentre la parola '''use''' indica al compilatore di usare il contenuto di quella libreria come punto di accesso per le chiamate di funzioni e procedure. Nell'esempio la clausola '''use''' è facoltativa in quanto è specificato il percorso completo che permette di risalire al package Ada e al sottopackage Text_IO e da qui chiamare la procedura di stampa di output (Put_Line). Tuttavia, è pratica comune utilizzare la clausola e chiamare la procedura direttamente, senza specificare i sottopackage dai quali essa dipende, evitando così di allungare il codice inutilmente.
*l'istruzione '''use'''.
 
vediamoli più nel dettaglio:
I commenti iniziano con i due caratteri -- (meno meno) e terminano a fine riga. Tutte queste righe non saranno considerate in fase di compilazione
 
==="Hello World!" con package rinominato===
La libreria Ada.Text_IO è inclusa in ogni compilatore di Ada e contiene tutte le funzioni necessarie per l'Input/Output testuale (similmente a #include <iostream.h> in [[w:C++|C++]] e a #include <stdio> in C, così come a import System.out di java). L'espressione '''with''' effettua la dichiarazione all'interno di Ada.Text_IO. Le librerie sono un insieme di tipi e di strumenti raccolti in un modulo di facile accesso.
 
Qui è presentato un estratto della libreria Ada.Text_IO, che evidenzia le principali procedure e funzioni che operano sui file:
Rinominando il package è possibile fornire un nome più corto.
 
<source lang=ada>
with Ada.Text_IO;
---------------------
-- File Management --
---------------------
 
procedure CreateHello is
package IO renames Ada.Text_IO;
(File : in out File_Type;
begin
Mode : File_Mode := Out_File;
IO.Put_Line("Hello, world!");
Name : String := "";
IO.New_Line;
Form : String := "");
IO.Put_Line("I am an Ada program with package rename.");
end Hello;
</source>
 
==="Hello World!" con istruzione '''use'''===
procedure Open
(File : in out File_Type;
Mode : File_Mode;
Name : String;
Form : String := "");
 
L'istruzione '''use''' rende l'accesso al package diretto.
procedure Close (File : in out File_Type);
procedure Delete (File : in out File_Type);
procedure Reset (File : in out File_Type; Mode : File_Mode);
procedure Reset (File : in out File_Type);
 
<source lang=ada>
function Mode (File : File_Type) return File_Mode;
with Ada.Text_IO;
function Name (File : File_Type) return String;
function Form (File : File_Type) return String;
 
function Is_Open (File : File_Type) return Boolean;
 
procedure OpenHello is
use Ada.Text_IO;
begin
Put_Line("Hello, world!");
New_Line;
Put_Line("I am an Ada program with package use.");
end Hello;
</source>
 
==Caratteristiche di stile==
Notare che la procedura '''reset''' è dichiarata due volte ma con sintassi diverse: il linguaggio Ada permette questo tipo di costruzioni (overloading) che, come vedremo più avanti, sono uno strumento potente a disposizione del programmatore.
 
*I commenti iniziano con i due caratteri -- (meno meno) e terminano a fine riga. Tutte queste righe non saranno considerate in fase di compilazione
 
Notare che la procedura '''reset''' è dichiarata due volte ma con sintassi diverse: il*Il linguaggio Ada permette questo tipo di costruzioni (l'overloading) che, come vedremo più avanti, sono uno strumento potente a disposizione del programmatore.
Dichiariamo una procedura ''main''. Una procedura ''main'', a differenza di altri linguaggi come il C, in Ada non deve essere necessariamente chiamata ''main'': ogni nome può andare bene (in questo caso è Hello).
 
*Il compilatore Ada non fa distinzione fra maiuscole e minuscole, quindi Ada, ada, ADA, sono tutte e tre identiche fra loro. Ada si dice, per questo, che non è ''case sensitive'' ma è ''case unsensitive''.
 
[[Categoria:Ada|Basi]]
Line 68 ⟶ 72:
[[en:Ada Programming/Basic]]
[[es:Programación en Ada / Hola Mundo]]
{{Avanzamento|75%|26 settembre 2008}}