Programmazione. Fondamenti di Informatica

Documenti analoghi
Corso di Laurea Ingegneria Informatica Laboratorio di Informatica

Introduzione al Linguaggio C ed all IDE DEV-C++

Introduzione alla programmazione. Walter Didimo

Algoritmi e Linguaggi

Linguaggi di alto livello, compilatori e interpreti

Linguaggio C: introduzione

PROGRAMMAZIONE STRUTTURATA

Laboratorio di Programmazione Lezione 1. Cristian Del Fabbro

Cos è un algoritmo. Si dice algoritmo la descrizione di un metodo di soluzione di un problema che sia

AXO - Architettura dei Calcolatori e Sistema Operativo. organizzazione strutturata dei calcolatori

Modulo 1. Concetti base della Tecnologia dell informazione. Prof. Nicolello Cristiano. Modulo 1

Fondamenti VBA. Che cos è VBA

Il calcolatore. Architettura di un calcolatore (Hardware)

Concetti Introduttivi. Il Computer

Sistemi Operativi. Sistemi I/O SISTEMI DI INPUT/OUTPUT. Hardware di I/O. Interfaccia di I/O per le applicazioni. Sottosistema per l I/O del kernel

DISPENSE DI PROGRAMMAZIONE

Sistemi Operativi. Gianluca Della Vedova. Sistemi Operativi. Gianluca Della Vedova. Sistemi Operativi. Gianluca Della Vedova.

Compitino di Laboratorio di Informatica CdL in Matematica 13/11/2007 Teoria Compito A

Diagrammi a blocchi 1

COMPILAZIONE. Tarsformazione di linguaggi

Esercitazione n 1. Obiettivi

Memoria Secondaria o di Massa

Struttura del calcolatore

Unità Didattica 2 I Linguaggi di Programmazione

La rappresentazione dell algoritmo Diagrammi di flusso

Linguaggi di programmazione

Architettura di un calcolatore e linguaggio macchina. Primo modulo Tecniche della programmazione

Java? Sì, grazie. Scopo del corso

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1

Dispense di Informatica Anno Scolastico 2008/2009 Classe 3APS. Dall'Algoritmo al Programma

Il Modello di von Neumann (2) Prevede 3 entità logiche:

Architettura dei calcolatori e Software di sistema

ALGORITMI 2 FINALITÁ

II Esercitazione: S.O. & Fortran 77

Programma svolto di INFORMATICA. Classe 3M - indirizzo MERCURIO A.S. 2010/2011

ISTITUTO TECNICO INDUSTRIALE STATALE "G. MARCONI" Via Milano n PONTEDERA (PI) DIPARTIMENTO: Informatica

Le aree dell informatica

L hardware da solo non è sufficiente per il funzionamento dell elaboratore È necessario introdurre il software:

Programma svolto di INFORMATICA. Classe 3 - indirizzo MERCURIO A.S. 2009/2010

RELAZIONE di INFORMATICA

Fondamenti di Informatica. Linguaggi di programmazione e programmazione strutturata

Hardware, software e periferiche. Facoltà di Lettere e Filosofia anno accademico 2008/2009 secondo semestre

Sistemi Web per il turismo - lezione 3 -

Le sue caratteristiche:

Elementi di base del calcolatore

Programmazione modulare

linguaggio di programmazione e programma

Linguaggio Java. Robusto. Orientato agli oggetti. Protegge e gestisce dagli errori. Non permette costrutti pericolosi

Ingegneria del Software 1: Eclipse

Computer e Programmazione

PIANO DI LAVORO. a.s / 2016

(1) (2) (3) (4) 11 nessuno/a (1) (2) (3) (4) X è il minore tra A e B nessuno/a X è sempre uguale ad A X è il maggiore tra A e B

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA

Introduzione alla programmazione Object Oriented. Luca Lista

Cosa è importante: pom.xml Goal Plug-in Repository

Il linguaggio del calcolatore: linguaggio macchina e linguaggio assembly

FONDAMENTI DI INFORMATICA Lezione n. 11

Architettura dei calcolatori I parte Introduzione, CPU

Linguaggi 2 e laboratorio

Algoritmi. Pagina 1 di 5

Virtualizzazione e macchine virtuali. Presentata da Bernardo Lombardi

Informatica/ Ing. Meccanica/ Prof. Verdicchio/ 14/02/2012 / Foglio delle domande / VERSIONE 1

Richiami sull architettura del processore MIPS a 32 bit

Problema: calcolare il massimo tra K numeri

Primi programmi in Java. Lezione IV

L ARCHITETTURA DEI CALCOLATORI. Il processore La memoria centrale La memoria di massa Le periferiche di I/O

Le command line di Java

Fondamenti di programmazione in Java. Lezione III

Che cos e l Informatica. Informatica generale. Caratteristiche fondamentali degli algoritmi. Esempi di algoritmi. Introduzione

Javascript e CSS nelle pagine WEB

Cicli di clock e istruzioni

COSTRUZIONE DI UN APPLICAZIONE

Introduzione alla programmazione

Istruzioni di ciclo. Unità 4. Corso di Laboratorio di Informatica Ingegneria Clinica BCLR. Domenico Daniele Bloisi

Programmazione ad Oggetti

Prefazione. Capitolo 1 Sistemi di elaborazione 1

3. Programmazione strutturata (testo di riferimento: Bellini-Guidi)

Individuazione di sottoproblemi

Tutorial per l installazione del J2SE 6 e configurazione del sistema operativo

CLASSE III A I.T.I. (ABACUS) SISTEMI DI ELABORAZIONE E TRASMISSIONE DEI DATI VERIFICA DI RECUPERO

PROGRAMMAZIONE E ALGORITMI

UML. Il linguaggio UML e ArgoUML. Ingegneria dei sistemi software 2009/ /09/2009

Java. Traditional portability (ideal)

2 - Introduzione al linguaggio Java

Scrivere un programma in Java

Programmazione. Cognome... Nome... Matricola... Prova scritta del 22 settembre Negli esercizi proposti si utilizzano le seguenti classi:

Sommario. Tabelle ad indirizzamento diretto e hash Funzioni Hash

INSEGNAMENTO DI: FONDAMENTI DI INFORMATICA C - IEI

ARCHITETTURA DI UN SISTEMA DI ELABORAZIONE

Chi sono? Come contattarmi? Introduzione ai Diagrammi di Flusso

Programmazione in Java Parte I: Fondamenti

Oggi. Programmazione e laboratorio: introduzione al corso. Docenti: laboratorio. Docenti: teoria. Il corso. Orario.

Corso sul linguaggio Java

Struttura di un programma Java

Java Native Interface Appunti

I livelli dei linguaggi. Introduzione alla OOP Object Oriented Programming. La programmazione procedurale separa il calcolo dalla memoria

Fondamenti di Programmazione

COSA SONO I FLOW CHART

Laboratorio Progettazione Web Applicazioni Web Lezione 2. Andrea Marchetti IIT-CNR 2011/2012

Laboratorio di Architettura degli Elaboratori

Transcript:

Programmazione Fondamenti di Informatica

Linguaggio macchina 11111010 11111100 01101110 10000110 00010001 01101110 11001001 11111100 10101011 11010101 00100101 11110001 11000011 11100011 10100001 10000010 01011111 10100001 01010000 11010111 00001001 10110001 10111001 00000011 00101101 00111101 10000001 00110000 10011101 11101010 01000010 10001011 00001010 10011001 10001100 10001010 01111110 01111010 01101100 10011010 01110010 11111101 10101111 10110110 00101110 00100101 00100101 10011100

Linguaggio macchina Linguaggio Macchina: linguaggio capito dal processore Viene letto dalla memoria Non è fatto per essere letto/scritto da un essere umano FETCH DECODE MEMORY ACCESS EXECUTE WRITE BACK

Linguaggio basso livello.model tiny.code org 100h main proc mov ah,9 mov dx,offset hello_message int 21h retn hello_message db 'Hello, world!$' main endp end main

Linguaggio basso livello Codice Assembler File eseguibile Esecuzione Programma

Linguaggio basso livello Codice Assembler Dipendono dal processore e dal sistema operativo File eseguibile Esecuzione Programma

Linguaggio basso livello permette di codificare le istruzioni del linguaggio macchina con delle sigle mnemoniche Problemi: 1. per un essere umano è comunque di difficile lettura e scrittura 2. ogni processore ha le sue istruzioni

Linguaggio alto livello #include <stdio.h> main(){ printf("hello, world!\n"); return 0; }

Linguaggio alto livello Compilatore: converte il linguaggio di alto livello in linguaggio macchina

Linguaggio alto livello Codice Compilatore File eseguibile Esecuzione Programma

Linguaggio alto livello Codice Compilatore File eseguibile Dipendono dal processore e dal sistema operativo Esecuzione Programma

Linguaggio di alto livello Linguaggio molto simile al linguaggio naturale Più semplice leggere il codice Più semplice scrivere codice Più facile trovare errori Indipendente dalla CPU (non devo conoscere le istruzioni della CPU)

GoTO 1 Prendi il dizionario 2 Aprilo alla prima pagina 3 Leggi le parole presenti 4 se cane è presente 5 leggi la definizione 6 altrimenti 7 se è l ultima pagina 8 non c è! 9 altrimenti 10 gira pagina 11 vai al punto 3

Teorema di Böhm-Jacopini Qualunque algoritmo può essere implementato in fase di programmazione utilizzando tre sole strutture dette strutture di controllo: la sequenza, la selezione ed il ciclo (iterazione)

Linguaggio strutturato Linguaggio ad alto livello che utilizza tre componenti: Sequenza Selezione Iterazione Viene rimosso il GOTO

Linguaggio strutturato Sequenza di istruzioni

Linguaggio strutturato Condizioni

Linguaggio strutturato Cicli

Diagrammi Nassi Shneiderman

Brainf*ck ++++++++++ [ >+++++++>++++++++++>+++>+<<<<- ] >++. >+. +++++++.. +++. >++. <<+++++++++++++++. >. +++. ------. --------. >+. >.

Linguaggio interpretato Codice Interprete Esecuzione Programma Dipendono dal processore e dal sistema operativo

Linguaggio interpretato Linguaggio di alto livello, non viene compilato Il codice viene eseguito direttamente da un interprete Su ogni macchina il programma viene compilato linea per linea (interpretato) Vantaggi: un file unico per ogni macchina Svantaggi:lento Esempi: javascript, Python,...

Linguaggio per macchine virtuali Codice Dipendono dal processore e dal sistema operativo Compilatore File ByteCode Interprete Esecuzione Programma

Linguaggio per macchine virtuali Via di mezzo tra linguaggio compilato ed interpretato ByteCode: codice macchina per una macchina virtuale Il codice viene compilato in ByteCode Ogni architettura/sistema operativo ha una macchina virtuale per eseguire Esempi: Java,.NET,...

Programmazione ad oggetti Masterizzatore CD Caratteristiche: Velocità di scrittura su supporti CD-R Velocità di scrittura su supporti CD-RW Velocità di lettura Dimensione del buffer dati Azioni: Scrivi su CD Leggi CD Espelli disco

Programmazione ad oggetti Masterizzatore DVD Caratteristiche: Velocità di scrittura su supporti DVD-R Velocità di scrittura su supporti DVD-RW Caratteristiche del Masterizzatore CD Azioni: Scrivi su DVD Leggi DVD Azioni del Masterizzatore CD

Programmazione ad oggetti Masterizzatore CD Caratteristiche Proprietà: Velocità di scrittura su supporti CD-R Velocità di scrittura su supporti CD-RW Velocità di lettura Dimensione del buffer dati Azioni Metodi: Scrivi su CD Leggi CD Espelli disco

Programmazione ad oggetti È più facile rappresentare il mondo reale Raggruppo in un unica entità (classe) sia le strutture dati (proprietà) sia le funzioni (metodi) Le entità possono comunicare tra di loro facilmente Più facile gestire e mantenere il codice Più facile riciclare il codice

Java Linguaggio strutturato e ad oggetti per macchina virtuale (managed) Molto diffuso: smartcard, computer, cellulari e server

Java Java Standard Edition : interprete per la Java Virtual Machine usato su pc Java Development Kit (JDK) : compilatore della Java Virtual Machine Java Runtime Environment (JRE) : interprete, è la macchina virtuale che traduce il bytecode java

JAVA Codice Compilatore File ByteCode Interprete Esecuzione Programma

JAVA Codice JDK File ByteCode Interprete Esecuzione Programma

JAVA Codice JDK File ByteCode JRE Esecuzione Programma

Offuscamento Il bytecode può essere trasformato nel codice sorgente Chiunque può vedere come è fatto il mio algoritmo

Offuscamento Soluzione: offuscare il codice Prima di compilare lo si fa processare ad un programma che lo rende più complicato da leggere

Offuscamento function DOMEval( code, doc ) { doc = doc document; var script = doc.createelement( "script" ); script.text = code; doc.head.appendchild( script ).parentnode.removechild( script ); }

Offuscamento function p(a,b){b=b d;var c=b.createelement("script");c.text=a,b.head.appendchild(c).parentnode.removech ild(c)}