Sei sulla pagina 1di 14

NOTIZIE UTILI

• HARDWARE (Congegni elettronici e meccanici che

insieme formano un elaboratore elettronico ).

• SOFTWARE (Sequenze di istruzioni necessarie per

mettere in funzione un elaboratore).

• LINGUAGGI DI PROGRAMMAZIONE

∗ Codice numerico binario ( Linguaggio macchina )

∗ Assembler.

∗ Linguaggi procedurali o di alto livello ( FORTRAN, ALGOL,

COBOL, BASIC, PASCAL, C, C++, JAVA, MATLAB ).

∗ Compilatori ( Programmi che traducono in codice macchina

le istruzioni scritte in linguaggio simbolico)

∗ Interpreti (Funzionano in modo interattivo e spesso sono

utilizzati per la messa a punto dei programmi).

intro1_04 1
∗ Link (Incorpora nel programma oggetto tutti i sottoprogrammi

di libreria richiesti dall’utilizzatore e provvede a

interconnettere le varie parti di programma).

Binario ==> Assembler ==> Alto Livello==> Naturali

♦ LINGUAGGI DI ALTO LIVELLO.

◊ Vantaggi

Non serve conoscere l’hardware della macchina.

I programmi sono semplici da scrivere ,leggere e modificare.

Se scritti in linguaggio standard sono compatibili.

◊ Svantaggi.

Riduzione della velocità e dell’efficienza.

Difficoltà o impossibilità di accesso a indirizzi speciali di memoria.

Limitato controllo sulle modalità con cui il compilatore traduce il codice.

intro1_04 2
♦IL CODICE FORTRAN (FORmula TRANslation)

Ideato negli anni ’50 da John Backus( IBM) fu fra i primi linguaggi di

programmazione.

E’ un linguaggio evoluto destinato sin dall’origine ad applicazioni

scientifiche. Ad oggi è uno dei linguaggi più largamente usato ed

accettato in applicazioni di ingegneria e scienze per la velocità di

elaborazione e la precisione dei calcoli.

♦IL CODICE ALGOL (ALGOrithmic Language).

Fu progettato da un comitato internazionale con l'obiettivo di creare un

linguaggio universale.

L'indipendenza dalla macchina da parte di ALGOL concedeva

maggiore creatività ai progettisti, ma rendeva difficoltosa la sua

implementazione. Non ha raggiunto la popolarità commerciale del

fortran.

♦IL CODICE COBOL ( COmmon Business Oriented Language)

Concepito per problemi commerciali e gestionali, ebbe un notevole

successo.

intro1_04 3
♦IL CODICE BASIC.

Rivolto ai principianti. E’ tra i migliori linguaggi utilizzati a scopo

didattico. Dal Basic discendono i vari VISUAL BASIC, linguaggi visuali

orientati agli oggetti, con interfaccia grafica e pronti all’uso.

♦IL CODICE PASCAL.

Progettato dal Politecnico di Zurigo(1973).

Veicolo preferenziale per l’insegnamento della programmazione

strutturata ed adeguato allo studio di principi di programmazione.

♦IL CODICE C.

Sviluppato presso AT&T Bell intorno al 1973 si è imposto come

potente ed efficace linguaggio di alto livello.

La visibilità delle risorse hardware è vicina all’ assembler.

Con il codice C++ (programmazione orientata agli oggetti) si scrivono

oggi buona parte dei sistemi operativi, che storicamente erano scritti in

assembler.

intro1_04 4
♦IL CODICE JAVA.

La creazione risale a metà degli anni ’90 ed ha rappresentato una

svolta nel mondo della programmazione.

JAVA è un linguaggio di programmazione Object Orientated semplice

e familiare per chi conosce il C++.

JAVA è indipendente dall’architettura della macchina(uno stesso

programma funziona su MAC, PC, UNIX senza modifiche ).

JAVA è multipiattaforma, il compilatore non crea applicativi eseguibili

ma dei file class che sono interpretati dalla JVM ( Java Virtual

Machine, un microprocessore virtuale ) implementata sui vari sistemi.

♦ IL CODICE MATLAB

Dagli anni ’60 si cerca di sviluppare un supporto semplice per risolvere

i problemi dell’algebra lineare ad esempio prodotto fra matrici, inversa

di una matrice, calcolo determinante etc. con un'unica istruzione, per

venire incontro all’utente che non conosce uno specifico linguaggio di

programmazione.

Già esistevano dei programmi scritti in FORTRAN e, sfruttando tali

prodotti, fu creata la prima versione di MATLAB( MATrix LABoratory),

scritta in Fortran.

intro1_04 5
L’attuale versione di MATLAB è scritta in linguaggio C e dispone di un

ambiente dedicato non solo all’algebra lineare ma anche capace di

risolvere numericamente altri problemi come l’integrazione di equazioni

differenziali, la ricerca di zeri di funzioni non lineari etc.

MATLAB permette di scrivere un proprio codice, creare interfacce,

usare una potente libreria grafica e una ricchissima libreria di funzioni

matematiche.

Pregi:

Rapidità di programmazione (linguaggio di alto livello);

Enorme potenzialità grafica.

Difetti:

Lentezza in fase di esecuzione ( specie con l’interprete );

Eccessivo costo;

Non crea un file eseguibile senza avere Matlab;

Scarsa trasportabilità;

Non adatto all’apprendimento della programmazione.

intro1_04 6
STILE DI PROGRAMMAZIONE

• Leggibilità: Il codice deve essere realizzato leggibile per


chi lo ha scritto e per gli altri.

• Compatibilità: Usare istruzioni standard.

• Manutenzione: Realizzare codici tenendo presente le possibili


esigenze future di modifiche ed estensioni.

• Semplicità: Il software complesso spesso contiene


errori.

intro1_04 7
SVILUPPO DEI PROGRAMMI

Analisi e definizione del problema

Progettazione algoritmo

Preparazione file sorgente


EDIT xxxx.FOR

Compilazione
FL32 xxxx.FOR

xxxx.OBJ

LINK xxx.OBJ

xxx.EXE

Prova programma eseguibile


xxx.EXE < File.dat > File.out

intro1_04 8
FORTRAN

• Linguaggio evoluto e destinato ad applicazioni scientifiche e


matematiche.

• Fortran Standard 77 ( Fixed Form *.for ).

Senza risorse grafiche; Interfaccia utente povera.


Molte restrizioni nella preparazione del file sorgente.

Il codice è scritto da colonna 7 a colonna 72.


Un carattere in colonna 6 indica che la riga è continuazione della
precedente.
Le colonne da 2 a 5 sono riservate alle etichette numeriche.
Un carattere in colonna 1 indica che la riga è un commento.
Variabili fino a 6 Upper-case caratteri. Il primo non può essere
numerico.

• Un Codice Fortran è
costituito da un programma principale
MASTER e da eventuali sottoprogrammi di tipo SUBROUTINE o di
tipo FUNCTION.
• Tipi di Dati :

INTEGER costanti o variabili con nomi che iniziano per


I,J,K,L,M,N .
REAL costanti o variabili con nomi che iniziano per A-H,O-Z .
COMPLEX numero complesso formato da due numeri reali che
rappresentano la parte reale e la parte immaginaria.
LOGICAL quantità che può assumere il valore vero o falso.
CHARACTER quantità alfanumeriche non usate per operazioni
matematiche.
• Frasi esecutive: di assegnazione e di controllo.
• Frasi di assegnazione Variabile = espressione che può essere
aritmetica ( operatori + ,- ,* ,** ,funzioni standard ...) o logica
( operatori AND,NOT,OR ).
intro1_04 9
∗ Frasi di controllo che consentono salti ad altre frasi del programma o
anche la formazione di cicli.

DO I=J,k,L
...................... IF( A.LT.B .AND. C.GT.D ) exit
...................... IF(A.GT.B .OR. C.LT.D ) cycle
END DO

• Frasi non esecutive : Si limitano a fornire informazioni al


compilatore.
∗ Istruzione DIMENSION informa il compilatore che il nome della
variabile è un array ( una,due,tre dimensioni ).

DIMENSION A(10),B(10,10),C(10,10,10)
INTEGER D(10),E(100,100)
REAL K(10,10)
DOUBLE PRECISION G(100)
COMMON F(100),H(10),J(10)
COMPLEX B(10),R(10,10)
LOGICAL S(10),T(100)

∗ Istruzioni INTEGER,DOUBLE PRECISION,REAL, REAL*4,


REAL*8,REAL*16,IMPLICIT REAL*8(A-H,O-Z) definiscono il tipo
di variabile o costante in maniera diversa dalla convenzione
implicita.
∗ Istruzione COMMON consente di avere in comune fra unità di
programma una stessa area di memoria. Trasferisce informazioni fra
unità di programmi.

COMMON A,B,C,D(10,10),F(10) COMMON BLANK


COMMON /BLOCK/ A,B,C,F(10) COMMON LABELLATO

intro1_04 10
∗ Istruzione EXTERNAL avverte il compilatore che FB e DIFF non
sono nomi di variabili ma di funzioni .

EXTERNAL FB,DIFF
...................................
INT1 = SIMPS (A,B,N,FB)
INT2 = SIMPS (A,B,N,DIFF)
END

∗ Istruzione DATA assegna,in fase di compilazione, dei valori iniziali


alle variabili e agli elementi di array.

DATA A,B,C,D/ 2*0.0,1.,4./

• IMPORTANTE

Lunghezza delle costanti e variabili in BYTE ( 1byte = 8 bit )

LOGICAL *1 1 byte
INTEGER*2 2 byte
INTEGER,REAL,LOGICAL 4 byte
REAL*8,COMPLEX*8 8 byte
DOUBLE PRECISION 8 byte
REAL*16,COMPLEX*16 16 byte
COMPLEX *32 32 byte

REAL*8 doppia precisione per i reali


COMPLEX*8 complesso( parte reale e immaginaria reale )
REAL*16 precisione estesa.
COMPLEX *16 complesso( parte reale e immaginaria in doppia)
COMPLEX*32 complesso( parte reale e immaginaria in estesa).

intro1_04 11
• FUNZIONI DI LIBRERIA

EXP,DEXP,CEXP Reale,Doppia,Complessa ea
ALOG,DLOG,CLOG loge(a)
ALOG10,DLOG(10) log10(a)

SIN,DSIN,CSIN sen(a)
COS,DCOS,CCOS cos(a)
TAN,DTAN tan(a)

SINH,DSINH sinh(a)
COSH,DCOSH cosh(a)
TANH,DTANH tanh(a)

SQRT,DSQRT,CSQRT √a

ASIN,DASIN arcsin(a)
ACOS,DACOS arccos(a)

ATAN,DATAN arctan(a)
ATAN2,DATAN2 arctan(a1/a2)

ABS ( argomento reale - funzione reale )


IABS ( argomento intero - funzione intera ) |a|
DABS( argomento doppio - funzione doppia )

CABS( argomento complesso – funzione reale ) a2 + b2

INT(argomento reale - funzione intera)


AINT(argomento reale - funzione reale) parte
intera di a
IDINT (argomento doppio - funzione intera)

intro1_04 12
AMOD( argomenti reali - funzione reale ) a1-[a1/a2]*a2
MOD ( argomenti interi - funzione intera ) numero argomenti = 2
DMOD( argomenti doppi - funzione doppia ) a1(mod a2)

MAX0 ( argomenti interi - funzione intera)


MAX1 ( argomenti reali - funzione reale )
AMAX0 ( argomenti interi - funzione reale) max fra n>=2 argomenti
AMAX1 ( argomenti reali - funzione reale )
DMAX1 ( argomenti doppi - funzione doppia)

MIN0,MIN1, AMIN0,AMIN1,DMIN1 minimo fra n>=2 argomenti

SIGN ( argomenti reali - funzione reale ) 2 argomenti (a1,a2)


ISIGN ( argomenti interi - funzione intera ) trasferimento di segno
DSIGN ( argomenti doppi - funzione doppia ) segno di a1 per a2

DIM ( argomenti reali - funzione reale ) differenza positiva


IDIM ( argomenti interi - funzione intera ) a1-Min(a1,a2)

FLOAT( argomento intero - funzione reale)


SNGL (argomento doppio - funzione reale)
DBLE (argomento reale - funzione doppia)
IFIX ( argomento reale - funzione intera)

REAL (arg. complesso - funzione reale) parte reale di un complesso


AIMAG( arg. complesso – funzione reale ) parte imm. di un complesso

intro1_04 13
SISTEMI DI NUMERAZIONE.

BINARIA 01
OTTALE...............0 1 2 3.......7
ESADECIMALE 0 1 2 3.......9 A B C D E F

DECIMALE BINARIO
15 1111

BINARIO DECIMALE
1111 1 * 2 + 1 * 2 2 + 1 * 21 + 1 * 2 0 = 15
3

BINARIO OTTALE
1 111 17

BINARIO ESADECIMALE
1111 F

Con 16 bit il massimo intero rappresentabile è: 216 − 1 = (65535) 10

215 + 214 + 213 ...........2 0 = (65535) 10

1byte = 8bit

intro1_04 14

Potrebbero piacerti anche