Compito Anno scolastico 2017/2018 Classi prime Per tenersi in allenamento durante l’estate, ecco un link ad una pagina di esercizi che trovate sul mio sito internet: https://school.cdoctor.it/infappvol1.txt vi chiedo di implementare con Scratch questi 16 esercizi: 41, 42, 62, 69, 70, 72-76, 79, 84-88. Per familiarizzare con l’interpretazione dei problemi, caldeggio anche l’implementazione dei seguenti 5 problemi (alcune descrizioni di wikipedia contengono già l’algoritmo in pseudocodice): Tramite un programma Scratch, determinare il MCD di due numeri interi x, y dati in input https://it.wikipedia.org/wiki/Massimo_comun_divisore Tramite un programma Scratch, determinare l’elenco dei numeri primi inferiori a 1000 https://it.wikipedia.org/wiki/Numero_primo Tramite un programma Scratch, determinare l’elenco dei numeri perfetti inferiori a 1000 https://it.wikipedia.org/wiki/Numero_perfetto Tramite un programma Scratch, determinare l’elenco dei numeri di Harshad inferiori a 1000 https://it.wikipedia.org/wiki/Numero_di_Harshad Tramite un programma Scratch, verificare la validità della congettura di Collatz per i numeri inferiori a 1000 https://it.wikipedia.org/wiki/Congettura_di_Collatz Facoltativo, solo per i più ardimentosi: implementazione in C della determinazione dei numeri pratici inferiori a 1000 https://it.wikipedia.org/wiki/Numero_pratico Quando pronto, consegnare il proprio lavoro su Classroom. Classi seconde Come esercizi per le vacanze, in preparazione a ciò che faremo nel primo quadrimestre dell’anno prossimo, vi suggerisco di: 1) visti gli esiti della verifica che abbiamo svolto sugli array, risolvere una quindicina di esercizi sugli array. Trovate parecchi testi sul mio sito internet, ad esempio: https://school.cdoctor.it/vol2p060.txt https://school.cdoctor.it/es_array.html e se non dovessero bastarvi, chiedete e vi sarà dato. 2) risolvere almeno una quindicina di esercizi sulle stringhe senza utilizzare gli array, ma utilizzando esclusivamente i puntatori. Trovate diversi esempi di come trasformare le soluzioni da array a puntatore sul booklet delle stringhe che vi ho consegnato; 3) per i più volonterosi, chi lo desidera, può cominciare a guardare gli esercizi sul sito delle Olimpiadi di Informatica, sezione correttore: https://correttore.olimpiadi-informatica.it/. Una volta eseguito il login, selezionare “Esercizi Facili” e risolvete tutti quelli che volete. Quando pronto, consegnare il proprio lavoro su Classroom. Classi terze Come esercizi per le vacanze vi propongo alcuni esercizi somministrati durante le Olimpiadi di Informatica. Premetto che TUTTI voi siete perfettamente in grado di farli. Dalla piattaforma delle Olimpiadi di informatica, andare sul correttore: https://correttore.olimpiadi-informatica.it/, eseguire il login, poi selezionare “Prove regionali” e risolvere i seguenti problemi (difficoltà 1). Tutti gli esercizi richiedono la lettura di un file di testo input.txt e la scrittura di un file di testo output.txt: 2005 Codice Segreto 2008 Codici e pizzini 2009 Essenza per profumi 2010 Quasi-palindromi 2010 Sequenza per tamburello 2011 Nanga Parbat 2012 Grand Prix 2013 Gita a Gardaland 2014 La congettura di Collatz 2015 La spartizione di Totò 2016 Crittografia LWF La modalità che vi suggerisco è la seguente: dalla piattaforma scaricate il testo del problema, lo risolvete sul vostro computer con DevC++, e quando avete finito caricate il vostro file sorgente sul correttore online. Il correttore compilerà il vostro programma, lo eseguirà con cinque diversi file di input e vi verrà detto se funziona in tutti i casi oppure solamente in alcuni, in modo che possiate eventualmente correggerlo. Ripetete fino a quando il correttore vi dà esito positivo. Se qualcuno si trovasse in difficoltà o non riuscisse a trovare la soluzione, vi dico che se siete bravi a cercare su internet, le soluzioni si trovano… :-) Se invece non vi fosse chiara la modalità, per fare pratica potete eventualmente cominciare con uno o due problemi più semplici, presi dalla sezione “Esercizi Facili” o dalla sezione “Esercizi Intermedi”. Per i più temerari invece, dopo aver risolto tutti gli esercizi di difficoltà 1 (non prima), vi invito a provare a risolvere anche qualche problema di difficoltà 2 (sempre tratti dalle prove regionali). Al ritorno dalle vacanze (fine mese di settembre) come prima verifica vi somministrerò uno di questi 11 esercizi (per cui se li avete fatti tutti siete tranquilli). Quando pronto, consegnare il proprio lavoro su Classroom. Classi quarte Siccome il prossimo anno sarà pesante, vi assegno un solo esercizio da svolgere durante l’estate: implementare una classe che gestisca le matrici di double (o in alternativa un template, a vostra discrezione). Tale classe deve implementare almeno i seguenti metodi: • costruttori vari • double& operator()(unsigned row, unsigned col); accessors (lettura elementi matrice) e mutators (modifica elementi matrice). • friend std::ostream& operator<<(std::ostream& os, const matrix& m); streaming output (visualizzazione contenuto matrice) • std::vector solve(std::vector rhs) risoluzione di un sistema lineare avente rhs come colonna dei termini noti • double det(); determinante (prodotto elementi sulla diagonale principale dopo aver ridotto la matrice in forma triangolare) • double tr(); traccia (somma elementi sulla diagonale principale) • std::vector caratteristico() - elenco coefficienti del polinomio caratteristico https://it.wikipedia.org/wiki/Polinomio_caratteristico Nota: gli zeri del polinomio caratteristico forniscono informazioni molto precise sulla qualità della soluzione ottenuta. Questa classe sarà fondamentale l’anno prossimo. Se volete, potete anche svolgerlo a coppie, ma ognuno di voi DEVE avere questa classe funzionante sin dal primo giorno del prossimo anno scolastico. Quando pronto, consegnare il proprio lavoro su Classroom. Classi prime Per chi ha il giudizio sospeso (debito in informatica): Nella verifica (scritta) di agosto sarà richiesto di risolvere con Scratch (e con lo pseudolinguaggio) un esercizio tra quelli a pag.341-343, secondo la modalità vista in classe. Sarà valutata anche la corretta identificazione delle variabili di input/output. Tempo: 55 min. Per chi è stato ammesso alla classe successiva, ma con lettera: Sul libro, ripassare la sezione D, in particolare pag.240-343, al fine di acquisire la piena padronanza: - delle strutture di controllo (sequenza, selezione e ripetizione), che è possibile ripassare sul libro del primo biennio - delle tecniche di totalizzazione/accumulo (conteggio, somma, prodotto, min, max, concatenazione) Per tutti: Circa un mese prima del rientro a scuola, suggerisco di svolgere i seguenti esercizi che trovate sul mio sito internet: https://school.cdoctor.it/infappvol1.txt In particolare vi suggerisco di implementare con Scratch questi 16 esercizi: 41, 42, 62, 69, 70, 72-76, 79, 84-88. Per familiarizzare con l’interpretazione dei testi dei problemi, caldeggio anche l’implementazione dei seguenti 5 problemi (alcune descrizioni di wikipedia contengono già l’algoritmo in pseudocodice): 1) Tramite un programma Scratch, determinare il MCD di due numeri interi x, y dati in input https://it.wikipedia.org/wiki/Massimo_comun_divisore 2) Tramite un programma Scratch, determinare l’elenco dei numeri primi inferiori a 1000 https://it.wikipedia.org/wiki/Numero_primo 3) Tramite un programma Scratch, determinare l’elenco dei numeri perfetti inferiori a 1000 https://it.wikipedia.org/wiki/Numero_perfetto 4) Tramite un programma Scratch, determinare l’elenco dei numeri di Harshad inferiori a 1000 https://it.wikipedia.org/wiki/Numero_di_Harshad 5) Tramite un programma Scratch, verificare la validità della congettura di Collatz per i numeri inferiori a 1000 https://it.wikipedia.org/wiki/Congettura_di_Collatz 6) Facoltativo, solo per i più ardimentosi: implementazione in C della determinazione dei numeri pratici inferiori a 1000 https://it.wikipedia.org/wiki/Numero_pratico Quando pronto, consegnare il proprio lavoro su Classroom. Classi seconde Per chi ha il giudizio sospeso (debito in informatica): Nella verifica (scritta) di agosto sarà richiesto di implementare in linguaggio C: - una funzione relativa ad un algoritmo di ordinamento tra insertionSort, selectionSort, bubbleSort; - due funzioni di elaborazione di stringhe (tipicamente modifica inplace oppure valutazione di una funzione di una stringa); - scrittura del programma principale, che deve richiedere i parametri da tastiera (scanf/fgets) e richiamare le varie funzioni. Tempo 55 min. Per chi è stato ammesso alla classe successiva, ma con lettera: Ripassare la teoria di array (unidimensionali) e stringhe, utilizzando i booklet del docente pubblicati su Classroom durante l'anno, o qualunque testo di linguaggio C. Ripassare gli esercizi svolti dal docente, che sono stati pubblicati su Classroom durante l'anno. Per tutti: Circa un mese prima del rientro a scuola, suggerisco di svolgere i seguenti: 1) risolvere una quindicina di esercizi sugli array. Trovate parecchi testi sul mio sito internet, ad esempio: https://school.cdoctor.it/vol2p060.txt https://school.cdoctor.it/es_array.html e se non dovessero bastarvi, scrivetemi e ve ne mando altri. 2) risolvere una quindicina di esercizi sulle stringhe (senza utilizzare gli array) utilizzando esclusivamente i puntatori. Trovate diversi esempi di come trasformare le soluzioni da array a puntatore sul booklet delle stringhe che vi ho consegnato durante l'anno; 3) per i più volonterosi: chi lo desidera, può cominciare a guardare gli esercizi sul sito delle Olimpiadi di Informatica, sezione correttore: https://correttore.olimpiadi-informatica.it/. Una volta eseguito il login, selezionare “Esercizi Facili” e risolvete tutti quelli che volete. Quando pronto, consegnare il proprio lavoro su Classroom. Classe terza Per chi ha il giudizio sospeso (debito in informatica): Nella verifica (scritta) di agosto sarà richiesto di implementare in linguaggio C: - alcune funzioni di elaborazione di liste semplicemente concatenate; - una funzione di elaborazione/modifica di una stringa utilizzando esclusivamente i puntatori (no array); - una funzione di elaborazione/modifica di un file di testo. Tempo: 55 min. Per chi è stato ammesso alla classe successiva, ma con lettera: Ripassare la teoria sulle stringhe, le liste e i file, utilizzando i booklet del docente pubblicati su Classroom durante l'anno, o qualunque testo di linguaggio C. Ripassare gli esercizi svolti dal docente, che sono stati pubblicati su Classroom durante l'anno. Per tutti: Dalla piattaforma delle Olimpiadi di informatica, andare sul correttore: https://correttore.olimpiadi-informatica.it/, eseguire il login, poi selezionare “Prove regionali” e risolvere i seguenti problemi (difficoltà 1). Tutti gli esercizi richiedono la lettura di un file di testo input.txt e la scrittura di un file di testo output.txt: 2005 Codice Segreto 2008 Codici e pizzini 2009 Essenza per profumi 2010 Quasi-palindromi 2010 Sequenza per tamburello 2011 Nanga Parbat 2012 Grand Prix 2013 Gita a Gardaland 2014 La congettura di Collatz 2015 La spartizione di Totò 2016 Crittografia LWF La modalità che vi suggerisco è la seguente: dalla piattaforma scaricate il testo del problema, lo risolvete sul vostro computer con DevC++, e quando avete finito caricate il vostro file sorgente sul correttore online. Il correttore compilerà il vostro programma, lo eseguirà con cinque diversi file di input e vi verrà detto se funziona in tutti i casi oppure solamente in alcuni, in modo che possiate eventualmente correggerlo. Ripetete fino a quando il correttore vi dà esito positivo. Se qualcuno si trovasse in difficoltà o non riuscisse a trovare la soluzione, vi dico che se siete bravi a cercare su internet, le soluzioni si trovano… :-) Se invece non vi fosse chiara la modalità, per fare pratica potete eventualmente cominciare con uno o due problemi più semplici, presi dalla sezione “Esercizi Facili” o dalla sezione “Esercizi Intermedi”. Per i più temerari invece, dopo aver risolto tutti gli esercizi di difficoltà 1 (non prima), vi invito a provare a risolvere anche qualche problema di difficoltà 2 (sempre tratti dalle prove regionali). Nota: Al ritorno dalle vacanze (fine mese di settembre) come prima verifica vi somministrerò uno di questi 11 esercizi (per cui se li avete fatti tutti siete tranquilli). Quando pronto, consegnare il proprio lavoro su Classroom. Classi quarte Per chi ha il giudizio sospeso (debito in informatica): Nella verifica (scritta) di agosto sarà richiesto di implementare in linguaggio C++ una o più classi, facendo uso: - del polimorfismo (funzioni virtuali) - dell'operator overloading - di STL Sarà anche necessaria la scrittura di alcune query in linguaggio SQL Tempo: 90 min. Per chi è stato ammesso alla classe successiva, ma con lettera: Ripassare la programmazione ad oggetti, in particolare: - l'incapsulamento - l'ereditarietà - il polimorfismo (in particolare le funzioni virtuali) - l'operator overloading - i template e la (libreria) STL Per tutti: richiedo un solo esercizio: implementare una classe che gestisca le matrici di double (o in alternativa un template, a vostra discrezione). Tale classe deve implementare almeno i seguenti metodi: • costruttori vari • double& operator()(unsigned row, unsigned col); accessors (lettura elementi matrice) e mutators (modifica elementi matrice). • friend std::ostream& operator<<(std::ostream& os, const matrix& m); streaming output (visualizzazione contenuto matrice) • std::vector solve(std::vector rhs) risoluzione di un sistema lineare avente rhs come colonna dei termini noti • double det(); determinante (prodotto elementi sulla diagonale principale dopo aver ridotto la matrice in forma triangolare) • double tr(); traccia (somma elementi sulla diagonale principale) • std::vector caratteristico() - elenco coefficienti del polinomio caratteristico https://it.wikipedia.org/wiki/Polinomio_caratteristico Nota: gli zeri del polinomio caratteristico forniscono informazioni molto precise sulla qualità della soluzione ottenuta. Questa classe sarà fondamentale l’anno prossimo. Se volete, potete anche svolgerlo a coppie, ma ognuno di voi DEVE avere questa classe funzionante sin dal primo giorno del prossimo anno scolastico. Quando pronto, consegnare il proprio lavoro su Classroom