Difference between revisions of "Esercizi a caso del Prof."

From Sistemi Operativi
Jump to navigation Jump to search
Line 17: Line 17:
  
 
* [Python] beccatevi questo (da Federico A. e Alessio G.):
 
* [Python] beccatevi questo (da Federico A. e Alessio G.):
*; La prima versione con due variabili : a='a=%r;b=%r;print a%%(a,b)';b='b=%r;print a%%(a,b)';print a%(a,b)
+
*; La prima versione con due variabili : <syntaxhighlight lang="python"> a='a=%r;b=%r;print a%%(a,b)';b='b=%r;print a%%(a,b)';print a%(a,b) </syntaxhighlight>
*; Per capire meglio la logica del format ci siamo sbizzarriti: a = 'a = %r ; b = %r ; c = %r ; print a%%(a,b,c) ' ; b = 'b = %r ; c = %r ; print a%%(a,b,c) ' ; c = 'c = %r ; print a%%(a,b,c) ' ; print a%(a,b,c)
+
*; Per capire meglio la logica del format ci siamo sbizzarriti: <syntaxhighlight lang="python"> a = 'a = %r ; b = %r ; c = %r ; print a%%(a,b,c) ' ; b = 'b = %r ; c = %r ; print a%%(a,b,c) ' ; c = 'c = %r ; print a%%(a,b,c) ' ; print a%(a,b,c) </syntaxhighlight>
 +
 
 +
* [C] beccatevi anche questo (da Alessio G. e Federico A.):
 +
Usando la stessa logica del programma in "pitone" lo abbiamo rielaborato in C:
 +
<syntaxhighlight lang="C">
 +
/*Printf stampa la stringa s e sostituisce ad ogni occorrenza di %c i caratteri ascii corrispondenti ai numeri: 9 = \t , 10 = \n , 34 = \"  .
 +
Il %s corrisponde alla stringa.*/
 +
#include <stdio.h>
 +
char s[] = "#include <stdio.h>%c%cchar s[]=%c%s%c;%cvoid main(void){%c%cprintf(s,10,9,34,s,34,10,9,10,9,10);%c%c}%c";
 +
void main(void){
 +
      printf(s,10,9,34,s,34,10,10,9,10,9,10); 
 +
}
 +
</syntaxhighlight>
  
 
=== Programmi semplici ===
 
=== Programmi semplici ===

Revision as of 16:44, 31 October 2013

Cominciamo da una sfida:

Il programma che stampa se stesso

scrivere un programma che produca in output se stesso: i.e. non prevede input e l'output deve essere identico al sorgente.

Vince chi produce il programma piu' compatto (in ogni linguaggio).

Però non dovete fare come in questo tentativo. il programma deve stampare se stesso senza leggere il proprio sorgente! (è proprio quella la sfida divertente!, rd 20131027). Per il Pyhton il programma vuoto non vale, è una soluzione banale.

  • [Python v3.3.2] Credo che la soluzione piu' compatta sia questa:
    source code
    print(__file__)
    filename
    print(__file__)
    command line
    python "print(__file__)"
    • L'istruzione visualizza sul terminale il nome del file sorgente. Il nome del file sorgente coincide con l'istruzione.


  • [Python] beccatevi questo (da Federico A. e Alessio G.):
    La prima versione con due variabili
     a='a=%r;b=%r;print a%%(a,b)';b='b=%r;print a%%(a,b)';print a%(a,b)
    
    Per capire meglio la logica del format ci siamo sbizzarriti
     a = 'a = %r ; b = %r ; c = %r ; print a%%(a,b,c) ' ; b = 'b = %r ; c = %r ; print a%%(a,b,c) ' ; c = 'c = %r ; print a%%(a,b,c) ' ; print a%(a,b,c)
    
  • [C] beccatevi anche questo (da Alessio G. e Federico A.):

Usando la stessa logica del programma in "pitone" lo abbiamo rielaborato in C:

/*Printf stampa la stringa s e sostituisce ad ogni occorrenza di %c i caratteri ascii corrispondenti ai numeri: 9 = \t , 10 = \n , 34 = \"  .
Il %s corrisponde alla stringa.*/
#include <stdio.h>
	char s[] = "#include <stdio.h>%c%cchar s[]=%c%s%c;%cvoid main(void){%c%cprintf(s,10,9,34,s,34,10,9,10,9,10);%c%c}%c";
void main(void){
       printf(s,10,9,34,s,34,10,10,9,10,9,10);  
	}

Programmi semplici

riscrivere le funzioni strcpy, strcmp, strncmp etc... (quelle elencate da "man 3 string") in C e in Python.

scrivere una funzione che controlli se una stringa e' palindroma (C python)

Una miniera di esercizi

Rosetta Stone. Tantissimi problemi risolti con tantissimi linguaggi.