L'istruzionedi salto o jump assume vari nomi nei vari linguaggi di programmazione quali goto, branch, ecc.
La principale osservazione è che l'istruzione di salto non è esecutiva (come ad esempio multiply, add e move) ma è una istruzione di controllo cioè comanda lo svolgimento delle altre. C'è un netto distacco tra le due tipologie perché le istruzioni di controllo modificano l'esecuzione delle prime, si può dire che ne dirigono il lavoro.

In particolare le istruzioni vengono eseguite una dietro l'altra, e jump interrompe questa regola. Comanda che invece di andare in sequenza si vada ad eseguire un'altra istruzione opportunamente contrassegnata. Nel seguente caso, l'istruzione di salto fa partire 'calcola x' invece di 'move'

 

Questo è un esempio di salto incondizionato. Più comune è il salto condizionato il quale viene guidato da una seconda operazione, infatti le istruzioni di controllo sono due in tutto.

La seconda istruzione di controllo (che viene abbinata al salto) è chiamata analyze o compare, la quale confronta due dati fra loro e fornisce il risultato del confronto. Il salto condizionato produce l'esecuzione di una istruzione a seconda del risultato di una analisi che è stata eseguita in precedenza.

I salti condizioniati ed incondizionati servono per capire i concetti ma non sono consigliati nella pratica della programmazione. In loro vece si usa un certo numero di macro-istruzioni o strutture di controllo. Mediante queste potenti istruzioni i programmatori organizzano il lavoro che il software dovrà compiere una volta istallato.


1)  La più nota macro è:

IF (a)
THEN (b1)
ELSE (b2)
END-IF

Comanda l'esecuzione del blocco di istruzioni (b1) se la condizione (a) è vera, altrimenti vengono eseguite le istruzioni (b2).

2)  La seguente struttura governa non due ma n alternative ciascuna delle quali viene controllata da una apposita condizione cioè se è vera una condizione allora scatta l'esecuzione abbinata

IF (a1)
THEN (b1)
IF (a2)
THEN (b2)
IF (a3)
THEN (b3)
....
....
IF (an)
THEN (bn)
END-IF

3)  L'ultima struttura di controllo comanda la ripetizione del blocco di istruzioni (b) finché resta vera la condizione (a)

DO WHEN (a)

(b)

END-DO

In circolazione ci sono diverse versioni di queste tre macro fondamentali che non dettagliamo perché fanno parte dello studio specifico di ciascun linguaggio di programmazione.

Invece resta valido come contenuto generale il ruolo di 'governo' che hanno le istruzioni sopra commentate. Il loro significato è completamente diverso da tutte le altre che eseguono calcoli, movimenti, ecc. e l'insegnante non mancherà di evidenziare questa basilare differenza.


 

Indietro

anno 2010

180. Vorrei
un commento
sull'istruzione
jump

181. Non è forse vero che tutti i sistemi sono real-time?

La sua osservazione è certamente vera. Oggi tutti i nostri personal danno risposte immediate, in tempo reale ovvero genericamente parlando i nostri sono sistemi real-time.
Tuttavia il discorso è più complesso.


I computer sono chiamati a controllare produzioni, processi industriali, i voli aerei, il traffico automobilistico, la cura di un malato, le telecomunicazioni e tanti altri processi. Loro ricevono gli input dai sensori momento per momento e devono dare risposte immediate perché altrimenti la situazione potrebbe degenerare. Si pensi ad esempio al computer che controlla un degente in rianimazione. Il sistema lancia un allarme quando i parametri fisiologici superano una certa soglia. E' ovvio che la reazione della macchina deve correre sul filo delle frazioni di secondo.

I sistemi che controllano processi lavorano in tempo reale in quanto la qualifica 'real-time' non è generica. Questa qualità viene sottoposta a precise verifiche. Appositi collaudi controllano che la macchina non superi i valori prestabiliti prima di agire.


 

Indietro

anno 2010


Fino a tutti gli anni sessanta le case costruttrici tendevano a seguire una strategia marketing molto vantaggiosa per loro. I sistemi operativi ed altro materiale software che producevano era rigidamente proprietario, cioè uno comprava l'hardware da una casa ed era costretto a comperare anche il software dalla stessa casa produttrice. Anche se non c'erano vincoli teorici, in pratica non c'era possibilità di scegliere. Il cliente non poteva muoversi tra vari fornitori per selezionare il prezzo più vantaggioso per lui quando comprava un sistema operativo o altro software.


Alcuni studiosi pensarono bene a sganciarsi da questa tendenza. Essi usavano piccoli computers - i predecessori dei moderni personal - costruiti da varie case e perciò pensarono ad un sistema operativo comune, una soluzione 'multipiattaforma' come diciamo oggi (vedi risposta 178).

Il sistema operativo è un programma che deve essere scritto in Assembler per cui prima gli esperti si dovettero attrezzare con un linguaggio tipo Assembler  che fosse compatibile a varie macchine (per definizione invece un linguaggio Assembler è legato all'hardware (vedi risposta 86)).
Furono condotti diversi tentativi che confluirono nel
linguaggio B definito nel 1970 da Dennis Ritchie presso i laboratori della Bell Telephone. Questo stesso due anni più tardi preparò il linguaggio C rimasto fino ai nostri giorni.

Il cammino per arrivare ad Unix comprese varie tappe.
Verso il 1969 apparve un interessante prototipo denominato Multics. Poi venne il Gecos ed infine Dennis Ritchie insieme a Ken Thompson lavorò per preparare un sistema operativo Unics poi chiamato Unix, era il 1970. Tre anni più tardi la versione generalizzata venne scritta nel linguaggio C.


Il sistema operativo Unix presentava diverse innovazioni per quegli anni. In particolare era multiutente cioè vari operatori, individuati da un proprio 'username' potevano lavorare nello stesso momento da terminali diversi. Aveva la memoria virtuale (risposta 152). Era portabile cioè non dipendeva da una precisa ditta fornitrice. Infine era aperto al collegamento mediante i protocolli TCP/IP di Internet.

Queste ed altre qualità emergono tutt'oggi nella più popolare versione di Unix che prende il nome di Linux (vedi anche risposta 96).

 

 

Indietro

anno 2010

182. Ci può tracciare una breve storia di Unix?