• Soluzioni Tramite Algoritmi ‘Brute Force’, o per Ricerca Esaustiva
  • Iterazioni: Invarianti di Ciclo

Esercizio:
Considerare la seguente funzione Python, dove E,B sono interi in input. Scrivere qual’è lo stato iniziale prima del while, individuare l’invariante del while, e dedurre quindi cosa calcola la funzione f, nell’istruzione return R.
[python]
def f(E,B):
# Siano E e B >= 0
R = 1
while (E > 0):
if (E % 2 == 1):
R = R * B
E = E – 1
else:
B = B * B
E = E / 2
return R
[/python]

Linguaggio C:

  • Espressioni: pre e post incremento e decremento.
  • if: problema dell’if pendente. espressione condizionale
  • costrutto switch ..case.. esempio con getchar()
  • for: scope (spazio di visibilità) della variabile di iterazione dichiarata nel for.

[cpp]
// Esempio:
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
int main(void)
{
int d;
int vocale = 0, spaces = 0, others = 0;
int righe = 0;
while ( (d = getchar()) != EOF)
switch (d)
{
case ‘a’: case ‘e’: case ‘i’:
case ‘o’: case ‘u’:
vocale++; break;
case ‘\n’:
righe++; break;
case ‘ ‘: case ‘\t’:
spaces++; break;
default:
others++;
}
printf("Il tuo file contiene "
"%d righe, %d vocali, %d spazi e %d consonanti\n",
righe, vocale, spaces, others);
return 0;
}
[/cpp]
Esercizio: Scrivere un programma C, che legge come nel programma sopra un programma Python e:

  • Usando la funzione putchar(x), lo stampa sull’output. Provare quindi ad usare tale programma per copiare un file Python eseguendo:
    >copia.exe < input.py >nuovo.py
  • Scrivere una seconda versione che conta il numero di assegnamenti, il numero di righe, e nel ricopiare il file elimina tutti i commenti. (attenzione, cosa succede se il carattere # è dentro una stringa)

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *