Progetto. Angelo Di Iorio, ALMA MATER STUDIORUM UNIVERSITA DI BOLOGNA

Documenti analoghi
Laboratorio - Programmazione

Informatica. Corso di Laurea in Scienze Geologiche Progetto. Ugo Dal Lago. Anno Accademico

Matlab: Script e Funzioni

PROGETTO ALGAT. Angelo Di Iorio Università di Bologna

Passare argomenti al programma

Laboratorio Progettazione Web Le funzioni in PHP. Angelica Lo Duca IIT-CNR 2012/2013

Esame Laboratorio di Programmazione

I/O e strutture di controllo

Corso di Laboratorio di Sistemi Operativi

Laboratorio Programmazione Anno Lezione 3

Titolo presentazione

La connessione ai database MySQL tramite script PHP versione 5.5

Informazioni sull esame e Regole per lo svolgimento dei progetti

Creare l array presentato nei lucidi ([pippo, pluto, etc])

Array. // utente pippo $utente1 = array( username => pippo, password => pippo123, ruolo => amministratore );

Informatica (e Cartografia Numerica)

LABORATORIO DI INFORMATICA ESERCITAZIONE VIII

Introduzione al MATLAB c Parte 3 Script e function

Introduzione al MATLAB c Parte 3 Script e function

Introduzione al MATLAB c Parte 3 Script e function

INTRODUZIONE A MATLAB. Introduzione. Calcolatrice base. Calcolatrice base. Variabili predefinite o speciali. Variabili predefinite o speciali

Informatica B. Facoltà di Ingegneria Industriale Laurea in Ingegneria Energetica, Meccanica e dei Trasporti. Prof. Marco Masseroli

A.A. 2018/2019. Fondamenti di Programmazione in MATLAB FONDAMENTI DI INFORMATICA E PROGRAMMAZIONE. Docente Prof. Raffaele Pizzolante

Controllo di flusso negli script: if-then-else

Fondamenti di Informatica e Laboratorio T-AB Ingegneria Elettronica e Telecomunicazioni. Lab 06 Array" Lab06 1

Fondamenti di Informatica T-1

Programmare. Definire una sequenza di istruzioni che specificano come effettuare una elaborazione

Unix e comandi di base

Matematica - SMID : Programmazione Luglio 2007 FOGLIO RISPOSTE

Introduzione all ambiente MATLAB. Richiami II. Analisi Numerica - A.A. 2007/08

Come scrivere bene codice? (1 di 1)

Introduzione all ambiente MATLAB. Richiami II. Calcolo Numerico - A.A. 2008/09

MySQL. Esercizio 1. Soluzione

Scritto da Martedì 12 Luglio :14 - Ultimo aggiornamento Venerdì 15 Luglio :47

Laboratorio di Progettazione di Sistemi Software Progetto: UMLPatterns2Java

MATLAB I/O. Informatica B - A.A. 2012/2013 ACQUISIZIONE DI INPUT DA TASTIERA

Prof. Marco Masseroli

Introduzione alla programmazione in linguaggio C

Programmazione C Massimo Callisto De Donato

Programmare. Definire una sequenza di istruzioni che specificano come effettuare una elaborazione

Laboratorio di. Reti Informatiche. Corso di Laurea Triennale in Ingegneria Informatica A.A. 2016/2017. Ing. Niccolò Iardella

D B M G Il linguaggio HTML

Laboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 4 24/10/2013

Programmazione Web D B M G. Il linguaggio HTML

Fondamenti di Informatica e Laboratorio T-AB Ingegneria Elettronica e Telecomunicazioni. Lab Shell. Lab-Shell 1

Lezione 8: Stringhe ed array multidimensionali

Cosa serve per cominciare?

Lezione 3. Ing. Giuseppe Chiapparo - Università di Roma Tor Vergata Corso di ingegneria degli algoritmi (parte pratica) A.A.

GRAFI. Angelo Di Iorio Università di Bologna

Tipi di dato strutturati: Array

Algoritmi e basi del C Struttura di un programma

Programmazione in Python per la bioinformatica

Esercizi 5 CICLI. Es.5(cicli)

Fondamenti di informatica T-1 (A K) Esercitazione 2 Basi del linguaggio Java

Linguaggio C: introduzione

Esercizio 1. Esercizio 2

Fondamenti di Informatica T1. Lab 03 Istruzioni. Lab03 1

Guida introduttiva al PHP

Disegnare nell intervallo [0, 1] con precisione 0.01 il grafico delle seguenti quattro funzioni

Metodi statci. Dichiarazione e chiamata di metodi statci

@2011 Politecnico di Torino 1

Fondamenti di Informatica T-1. Classi e array

Guida rapida KUBO CODING+

Modularizzazione del software

Filtri e pipeline. qualsiasi comando unix ha a disposizione 3 file con cui comunicare con il resto del sistema: standard input in ingresso

Programmazione I (Classe 1)

Linguaggi e Ambienti di Programmazione

Dati aggregati. Violetta Lonati

Modulo III - Creazione di documenti, presentazioni e report

Matlab 4. Operatori logici e Script. Slide basate sul corso di C. Blundo. A.A. 2010/ GPersiano. Laboratorio di Informatica per Fisici 1

Calcolo su Polinomi ===================

Documentazione API SmartPay

Algoritmi e basi del C Struttura di un programma

Introduzione al C. InformaticaB. Daniele Loiacono

Fondamenti di Informatica T-1 Modulo 2

Laboratorio n 6 del Ing. Dario Cogliati

Informatica Applicata al Suono Tutorial Matlab

Implementazione delle classi

Makefile. Il file dependency system di Unix (serve ad automatizzare il corretto aggiornamento di più file che hanno delle dipendenze)

SISTEMI OPERATIVI, RETI, INTERNET

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - Programma

Problema: calcolare il massimo tra K numeri

Fondamenti di Informatica T-1

Manuale di configurazione e utilizzo Barcode card

L utility Unix awk [Aho-Weinberger-Kernighan]

Informatica B Esercitazione 3

Lab 04 Programmazione Strutturata"

Informatica B, AA 2018/2019

Classe Vettore (i) Creare una classe che consenta di gestire un vettore di N elementi reali (double), che preveda i seguenti metodi:

Fondamenti di Informatica e Laboratorio T-AB T-15 Strutture dati

8 Introduzione MATLAB

Transcript:

Progetto Angelo Di Iorio, angelo.diiorio@unibo.it

In cosa consiste l esame di Informatica? Prova scritta + progetto Prova scritta Domande a risposta chiusa e aperte Possibili anche domande su spreadsheet e coding 0-24 punti Progetto Obbligatorio Max 8 punti Si svolge in autonomia o in coppia

Consegna Prima data per consegnare: 7 dicembre ore 11 (Aula GIS) Ne fisseremo altre a gennaio e febbraio (e più avanti se serve) Spedire il progetto via mail entro il giorno prima della discussione a: angelo.diiorio@unibo.it Portare il proprio laptop La discussione consiste nella spiegazione del codice dovete essere in grado di eseguirlo e modificarlo durante la discussione

Progetto L obiettivo è progettare e implementare un programma PHP che si collega al sito del Centro Nazionale Terremoti dell INGV e mostra a video informazioni sui terremoti registrati in Italia Ogni gruppo (o singolo) decide in autonomia: i parametri di input del programma le informazioni e il formato in output Autonomia e creatività molto ben accetti Diversificate i progetti tra i gruppi

Qualche spunto Il programma prende in input una data e mostra a video l elenco delle località colpite da un terremoto in quella data, la media tra le magnitudo e le informazioni sui terremoti con magnitudo minore e/o maggiore Il programma prende in input un intervallo di tempo (due date) e mostra a video le informazioni sulle profondità dei terremoti registrati nell intervallo di tempo, individuando le profondità minori, maggiori e informazioni aggregate per fasce

Qualche spunto Il programma prende in input il nome di una località e mostra a video le informazioni su tutti i terremoti registrati in quella località, divise per anno Il programma prende in input la sigla di una provincia e mostra a video le informazioni su tutti i terremoti registrati in quella provincia e le percentuali per diverse fasce di magnitudo e profondità [ ]

Sorgente dati: Centro Nazionali Terremoti http://cnt.rm.ingv.it/

API INGV mette a disposizione una API per recuperare le informazioni, attraverso un URL con questa struttura: http://webservices.rm.ingv.it/fdsnws/event/1/query?params dove params è una lista di parametri separati dal simbolo &: Il significato dei parametri è intuitivo: &starttime=2018-11-16 &endtime=2018-11-16 &minmag=2 &maxmag=10 &minversion=100 &orderby=time-asc &format=text &limit=4000

In PHP: curl PHP include un client HTTP built-in che permette di fare richieste via Web, chiamato curl Le applicazioni costruiscono l URL e configurano i parametri della richiesta da passare a curl La risposta può essere stampata o memorizzata in una variabile Per il progetto usiamo curl per richiedere i dati sui terremoti in formato stringa (parametro &format=text) specifichiamo i parametri di input direttamente nell URL memorizziamo l output in una variabile stringa

Esempio di richiesta a CNT $inizio = 2018-11-16 ; $fine = 2018-11-16 ; $handle = curl_init(); $url = "http://webservices.rm.ingv.it/fdsnws/event/1/ query?&starttime=".$inizio."&endtime=".$fine. "&format=text"; curl_setopt($handle, CURLOPT_URL, $url); curl_setopt($handle, CURLOPT_RETURNTRANSFER, true); $risultati = curl_exec($handle);

Struttura base del progetto Il programma deve: leggere i parametri in input costruire l URL con i parametri che avete scelto configurare ed eseguire la richiesta HTTP recuperare i dati in formato stringa e memorizzarli in uno o più array fare le analisi su questi array (usando cicli e istruzioni condizionali) stampare a video i risultati Potete riusare il codice disponibile su: http://diiorio.nws.cs.unibo.it/infogeo1819/php/

Passare i parametri allo script In PHP command-line è possibile passare parametri direttamente in fase di invocazione dello script /usr/bin/php terremoti.php 2018-11-01 2018-11-16 La variabile $argv è un vettore contenente una stringa per ogni token dell invocazione: $argv[0] -> "terremoti.php" $argv[1] -> "2018-11-01" $argv[2] -> "2018-11-16"

Chiedere i parametri all utente Alternativamente è possibile chiedere i dati all utente durante l esecuzione (senza specificarli prima) Ad esempio, la funzione readline() legge una linea alla volta e prende in input il messaggio da mostrare all utente prima dell inserimento dei dati $inizio = readline("indicare data di inizio: "); $fine = readline("indicare data di fine: "); echo "\nterremoti registrati dal $inizio al $fine";

CodeLite non ci aiuta CodeLite ha qualche problema con readline() (e i comandi simili) dovuto al modo in cui gli script PHP sono eseguiti Per ovviare al problema: eseguire il programma direttamente dal terminale CodeLite permette di definire i parametri a livello di progetto, in due modi Project Settings dal menù di progetto Icona ingranaggio in alto a sinistra nella View Workspace

CodeLite Project Settings

Gestire date Negli esempi visti finora le date sono state sempre usate nel formato anno-mese-giorno ma PHP fornisce un ampio set di classi e funzioni per gestire le date Il seguente frammento, ad esempio, costruisce un oggetto di tipo data e permette di formattarlo in modi diversi date_default_timezone_set("europe/rome"); $inizio = "2018-11-16"; $data = date_create($inizio); echo "Da $inizio a ". date_format($data, "d/m/y"); Per ottenere la data di esecuzione dello script: $today = date("y-m-d"); // formato: anno-mese-giorno Dettagli e funzioni su: http://php.net/manual/it/ref.datetime.php

Conclusioni Ci sono molti altri aspetti (importanti) della programmazione che in questo corso non abbiamo discusso Il progetto stesso è semplificato e dovrebbe avere, ad esempio, una gestione più robusta di errori e modularizzazione del codice Per completare il progetto è sufficiente ciò che abbiamo visto durante il laboratorio ma siete liberi di (e invitati a) sperimentare