Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
POP EAX
POP EBX
Avrei messo in EAX il valore prima contenuto in EBX, in EBX il valore prima contenuto in EAX,
invertendo il tutto.
La sequenza corretta di passaggi è:
PUSH EAX
PUSH EBX
POP EBX
POP EAX
Sottoprogrammi (subroutines)
In un linguaggio procedurale, un programma è una sequenza di istruzioni o sentenze. Mentre ciò
rimaneva comodo per programmi di piccole dimensioni, risultava invece scomodo per
programmi composti da tante righe di codice e molte istruzioni. Per questo si pensò di dividere i
programmi in più sottoprogrammi, in modo tale che ognuno gestisce un determinato compito,
semplificando notevolmente l'aggiornamento o la manutenzione del programma stesso.
Un sottoprogramma è una sotto sequenza di istruzioni che può essere riutilizzata in punti diversi
di uno stesso programma principale, con dati di volta in volta differenti.
call DESTINAZIONE (fa saltare a DESTINAZIONE il flusso del programma, facendo prima push
eip)
Ad es call eax, call [Memoria], call 09A4h
ret (chiude la sequenza di istruzioni che iniziala all'indirizzo DESTINAZIONE;; effettua pop eip)
Assembly I/O
L'Assembly è fortemente dipendente dall'hardware, non ha librerie standard che lo gestiscono, al
contrario del C++
L'assembly risulta impartisco e non portabile, tuttavia il codice a volte è più veloce e più corto ed
ha un accesso diretto all'hardware.
Programmazione orientata agli oggetti
Supera alcuni limiti della programmazione strutturata quando i problemi da risolvere sono
complessi. Questo tipo di programmazione enfatizza i dati. L'idea fondamentale è quella di
combinare in un unico modulo sia i dati che le funzioni che operano su di essi;; tale modulo viene
detto oggetto. Le funzioni di un oggetto prendono il nome di funzioni membro o metodi, i dati di
un oggetto si dicono attributi o variabili d'istanza. Un programma in C++ è solitamente costituito
da un insieme di oggetti che comunicano tra loro tramite chiamata ad altre funzioni membro.
Il linguaggio C++ è un linguaggio multi paradigma per la programmazione strutturata, orientata
agli oggetti e generica, questo data la retrocompatibilità con il linguaggio C.
Il linguaggio C++ è astratto. Per astrazione si intende il fatto che si determinano le proprietà
esterne di un'entità senza specificare i dettagli della sua composizione interna. In ogni livello di
astrazione si visualizza il sistema in termini di componenti, di cui si ignora la composizione
interna.
L'incapsulamento dei dati consiste nell'aggregare dati e operazioni ad essi relative nella stessa
unità di programmazione. Oggetti che possiedono le stesse caratteristiche e comportamenti si
raggruppano in classi.
L'occultamento dei dati permette di separare l'aspetto di un componente, cioè la sua interfaccia
con il mondo esterno dai suoi dettagli implementativi interni.
In C++ un oggetto è un individuo specifico, mentre la classe è un individuo generico. È la classe
che definisce i dati utilizzati per rappresentare l'oggetto e le operazioni che si possono eseguire
su di essi. Data una classe, si possono creare variabili di quel tipo, dette istanze. Le istanze
sono la concretizzazione degli oggetti descritti in una classe.
Oggetti
L'oggetto è un entità che gioca un ruolo definito nella risoluzione del problema. Nell'OOP un
problema non si scompone in funzione, come da tradizione, ma in oggetti.
Classi
Nell'OOP gli oggetti sono istanze di classi, definire una classe è come definire un tipo di dato.
Il software
È una lista di istruzioni che il computer deve eseguire (programma). Il software di sistema è un
insieme di programmi che gestisce le risorse stesse del computer. Il software applicativo è
l'insieme dei programmi scritti per eseguire un compito specifico.
Il software di sistema, o sistema operativo, coordina differenti funzioni del sistema di
elaborazione e gestisce l'hardware del computer per conto del software applicativo. Esso
assegna, pianifica e controlla l'uso di risorse e compiti del computer.
Compilazione
Un compilatore traduce tutto il programma sorgente in un programma eseguibile. L'operazione si
chiama compilazione. Il processo che porta dal sorgente all'eseguibile integra anche una fase di
linking, ovvero la fase di collegamento dei vari sottoprogrammi e librerie.
Software e copyright
Un software è tutelato dalle leggi sul diritto d'autore, il proprietario è colui che detiene i diritti di
copyright. Normalmente un programma non si acquista ma si ottiene la licenza d'uso ci
stabilisce le facoltà dell'acquirente.
- open source: chiunque può utilizzarlo, modificarlo ed anche redistribuito a pagamento
- protetto da copyleft: l'autore vuole difendere la libertà della sua opera;; il software può essere
redistribuito ma non possono essere applicate restrizioni (ad es la GPL)
- di pubblico dominio: non ha copyright nè licenza d'uso. Si può anche vendere
- proprietario: non open source
- freeware: solo codice eseguibile, ma gratuito
- shareware: solo codice eseguibile con pagamento dopo periodo di prova
- commerciale: venduto per profitto
Sviluppo di un programma in C++
- scrittura del codice sorgente su carta
- editing del codice sorgente su computer
- compilazione del codice sorgente
- eseguire e colaudare (debug)
Struttura di un programma in C++
Un programma in C++ è costituito da una o più funzioni, delle quali una si deve chiamare
obbligatoriamente main. Una funzione è una sequenza di istruzioni, un sottoprogramma, che
compie una o più azioni. Un programma deve anche contenere una serie di direttive #include
che consentono di includervi header file con funzioni e dati predefiniti.
Struttura tipica: