PDA

View Full Version : C++:printf o cout<<???????????


cisc
22-01-2003, 16:31
Sto cercando d'imparare il C++, ma , leggendo i primi manuali trovati in rete, mi trovo di fronte ad un dubbio!!! C'è chi usa le funzioni printf e scanf come funzioni di I/O, e chi usa cout&lt;&lt; e cin&gt;&gt;. Quali devo usare? Perchè?


AAAAAAAIIIIIIIIIIIUUUUUUUUUTTTTTTTTOOOOOOOO!!!!!!!!!!!!

/\/\@®¢Ø
22-01-2003, 17:04
Puoi usare indifferentemente l'uno o l'altro, o addirittura mescolare insieme le due forme.
Io uo cin e cout, perche' in generale permettono un maggiore controllo sugli errori (invece di crashare il programma, l piu' tida un errore entre compili ).

cionci
22-01-2003, 17:12
Diciamo che printf e scanf sono fornite più per avere una certa compatibilità con il C, ma in generale se si vuole programmare con un certo stile è sempre meglio usare cin, cout...senza contare che tramite la redifinizione dell'operatore di ouput (&lt;&lt;) si possono fare cose molto utili...

pitagor
26-01-2003, 01:23
scusate,ma com'è che programmo da ottobre in C e sono arrivato fino alle liste dinamiche,fra una settimana finisco info1 e com'è che né il libro di testo né il professore hanno mai parlato di cin e cout? Se sono preferibili cin e cout,perchè in ambito accademico insegnano a usare solo printf e scanf?

Kleidemos
26-01-2003, 09:04
Originally posted by "pitagor"

scusate,ma com'è che programmo da ottobre in C e sono arrivato fino alle liste dinamiche,fra una settimana finisco info1 e com'è che né il libro di testo né il professore hanno mai parlato di cin e cout? Se sono preferibili cin e cout,perchè in ambito accademico insegnano a usare solo printf e scanf?

ma cin o cuot sono in C++ nn in C

pitagor
26-01-2003, 12:29
ah....ops...... :p ,non ho ancora capito la differenza,anzi,diciamo che non mi sono posto mai più di tanto il problema,ho capito che c++ era una versione più avanzata del C,tipo per librerie, funzioni,etc,ma non pensavo ci fossero differenze rilevanti.

Kleidemos
26-01-2003, 12:41
Originally posted by "pitagor"

ah....ops...... :p ,non ho ancora capito la differenza,anzi,diciamo che non mi sono posto mai più di tanto il problema,ho capito che c++ era una versione più avanzata del C,tipo per librerie, funzioni,etc,ma non pensavo ci fossero differenze rilevanti.

il C++ ha anche classi, templates, funz virtuali, STL e molte anltr funzioni!
Chiedi pure a cionci le dif

pitagor
26-01-2003, 13:09
quindi ci si può fare un casino in più! Mi informerò su cosa sono le classi,le funz virtuali.Probabilmente ce lo faranno fare in info2

cionci
26-01-2003, 15:13
Originally posted by "pitagor"

quindi ci si può fare un casino in più! Mi informerò su cosa sono le classi,le funz virtuali.Probabilmente ce lo faranno fare in info2
Il C è un linguaggio funzionale...cioè si basa sulle funzioni... Il C++ è un linguaggio di programmazione orientato agli oggetti che deriva dal C...

Le cose che ci si possono fare sono le stesse...soltanto che si fanno in modo diverso :)

pitagor
26-01-2003, 17:35
spero di non scrivere una bestemmia,ma mi sembra di aver capito che una struct che ha diversi campi,per esempio un int e un char,può già essere considerata un oggetto,quindi col C si può fare una pseudo-programmazione ad oggetti.....è errato?

Kleidemos
26-01-2003, 18:22
Differenze tra C e C++:

http://www.stat.unipg.it/~asterix/m...e/lab2/cppc.doc

cionci
26-01-2003, 18:29
Una struct è una struct... L'oggetto è diverso...
L'oggetto è un insieme di proprietà (variabili) e di metodi (funzioni) che è possibile raggruppare in un entità per lo più autonoma...
E' possibile definire operatori che lavorano sull'oggetto (che in un certo senso fanno anche parte di esso) e che permettono di interfacciarlo con altri tipi di dati...
Ad esempio se definisco l'oggetto "coordinata" è possibile definire anche la somma o la differenza di coordinate (proprio con gli operatori + e -)...
E' possibile derivare un oggetto da un altro ed aggiungerci funzionalità...in questo modo è anche possibile creare una gerarchia di classi...
Ad esempio in un programma di disegno vettoriale l'oggetto base può essere la Forma (generica)...Cerchio è derivato Forma...Rettangolo è derivato da Forma...CerchioColorato è derivato da Cerchio...

I vantaggi quali sono ? Un dei princiapali è la riutilizzabilità del codice... Essendo l'oggetto (o una gerarchia di oggetti) un'entità autonoma è possibile riutilizzare il codice senza metterci mano (e fregandosi di come è fatto internamente)... Un'altro dei principali vantaggi è la riduzione del numero di righe di codice...
Ad esempio ritornando al programma vettoriale...basta una sola funzione per cancellare qualsiasi oggetto derivato da Forma... Al momento della programmazione non sappiamo a quale oggetto della gerarchia verrà applicata il metodo chiamato...ma noi programmiamo la nostra funzione lavorando su Forma...
Ad esempio è possibile fare collection di oggetti di cui non sappiamo il contenuto reale e lavorare su di essi senza distinguere il cerchio dal rettangolo...

pitagor
29-01-2003, 19:41
capisco,comunque tutto ciò per me verrà più avanti,lavorandoci piano piano a ogni cosa(dai linguaggi di programmazione al saldare una resistenza sulla mobo) dovrei riuscire a farmi un bel bagaglio culturale,anche con l'aiuto di queto sito.

A proposito di linguaggi, un amico mi ha consigliato di dare un'occhiata a linguaggi come datalog-prolog(che non ho capito se sono due versioni differenti dello stesso linguaggio o due linguaggi proprio),prima di cominciare a dedicarmici mi puoi dare un parere?

cionci
30-01-2003, 00:10
Conosco un po' di Prolog...
IMHO evita... E' un linguaggio di programmazione di tipo logico utilizzato soprattutto per la creazione di sistemi esperti (l'interprete Prolog è per definizione un sistema esperto)...e generalmente molto lontano dal mercato e da quello che normalmente uno vuol fare programmando...
Serve ad esempio per la creazione di sistemi di valutazione automatica (ad esempio quiz), chat bot e roba del genere...

pitagor
31-01-2003, 08:12
la curiosità veniva proprio da lì, dal fatto che è un linguaggio logico e matematico,che getta pure le basi(sempre per quello che ho capito) per passare a dare un'occhiata a lisp che serve per l'intelligenza artificiale, alla fine che non sia richiesto dal mercato non è così importante,programmare è un piacere!

cionci
31-01-2003, 08:23
Originally posted by "pitagor"

la curiosità veniva proprio da lì, dal fatto che è un linguaggio logico e matematico,che getta pure le basi(sempre per quello che ho capito) per passare a dare un'occhiata a lisp che serve per l'intelligenza artificiale, alla fine che non sia richiesto dal mercato non è così importante,programmare è un piacere!
Più logico che matematico...
Praticamente funziona a predicati...
Ok, è un piacere, ma se non ci guadagni che piacere è ? ;)

Qualsiasi linguaggio va bene per l'intelligenza artificiale... Ad esempio in C++ si fanno alla grande reti neurali (ci ho fatto un riconoscitore ottico di simboli)...

M86
31-01-2003, 14:54
io ho cominciato a studiare il C++ da poco, e non facendo ancora l'università non ho professori; sarà che sono appena all'inizio ma a me non sembra così complicato; voi che dite dovrei prendere anche un manuale di C se non per studiarlo almeno per capire di che si tratta?

cionci
31-01-2003, 14:58
Dipende come si fa il C++...stai facendo anche le classi, classi virtuali e derivazione ?

M86
31-01-2003, 19:41
Originally posted by "cionci"

Dipende come si fa il C++...stai facendo anche le classi, classi virtuali e derivazione ?
classi e classi virtuali sul libro ci sono (1300 pagine e passa!!!!), per la derivazione no...

cionci
31-01-2003, 19:45
Sì, ma se sei al punto che ho visto nell'altro thread sei ancora all'inizio :) Il difficile deve ancora venire...

La derivazione c'è di sicuro ;)

M86
01-02-2003, 13:15
ho capito

Pakoprog
01-02-2003, 18:57
solitamente in c++ si usano cin e cout,ciao

jimmytf
02-02-2003, 11:03
con cin e cout puoi rispettivamente acquisire direttamente stringhe e visualizzare direttamente stringhe cosa che con scanf e printf non puoi fare!

linciatemi se ho cazziato... :D

ah già...poi mi sembra che non ci sia il problema degli spazi tra le parole che affligge invece lo scanf...

ciao! ;)

cionci
02-02-2003, 19:03
Sia cone cin che con scanf si può leggere una stringa solamente fino ad un carattere di spazio o di invio...
Ma non è un problema...è una cosa voluta...altrimenti quando si va a leggere una stringa da un file si leggerebbe tutta la stringa e non fino allo spazio...e in C/C++ (e questo è derivato direttamente da Unix) tutto l'input/output è considerato un file...sia quello su video che da tastiera...

Per leggere una riga intera (fino a \n o fino a EOF) c'è gets anche se sconsiglio l'uso sia di gets che di scanf che di cin per prendere una stringa in input (a meno di casi particolari)...può dare grossi problemi di sicurezza...basta che la stringa sia più lunga del buffer e POOF...il nostro programma è piantato (ma non solo, potrebbe permettere anche l'esecuzione di codice sul sistema)...

Meglio usare una routine che legge carattere per carattere...

/\/\@®¢Ø
03-02-2003, 13:32
Originally posted by "cionci"


Per leggere una riga intera (fino a \n o fino a EOF) c'è gets anche se sconsiglio l'uso sia di gets che di scanf che di cin per prendere una stringa in input (a meno di casi particolari)...può dare grossi problemi di sicurezza...basta che la stringa sia più lunga del buffer e POOF...il nostro programma è piantato (ma non solo, potrebbe permettere anche l'esecuzione di codice sul sistema)...



Meglio usare una routine che legge carattere per carattere...
Piu' semplice :

string s;
getline( cin , s );

la cosa carina e' che si puo' anche specificare il carattere di terminazione.
ad esempio con


string s;
getline( cin , s , ',' );


si possono leggere campi delimitati da virgole (che vengono automaticamente eliminate)

cionci
03-02-2003, 16:12
Bene a sapersi...getline non l'avevo mai usata :)

3DDragon
05-02-2003, 18:29
Originally posted by "M86"

io ho cominciato a studiare il C++ da poco, e non facendo ancora l'università non ho professori; sarà che sono appena all'inizio ma a me non sembra così complicato; voi che dite dovrei prendere anche un manuale di C se non per studiarlo almeno per capire di che si tratta?

ti consiglio un-infarinatura di C e passare al C++ appena puoi....
certo il tutto e- rapportato a cosa devi fare....
se andrai in un posto di lavoro e vogliono usare solo C e non programmazione ad oggetti in C++, beh allora...

ma personalmente, anche se programmo in C per questioni lavorative. e ormai mi son quasi "fossilizzato" su questo.....,penso il C++ sia piu potente e ti aiuta un pelo di piu a non fare castronerie e incasinamenti con la memoria...

concordate..
se ho detto ca%%ate... uccidetemi pure..

M86
06-02-2003, 13:33
c'è qualche buona guida su internet e se si dove?

mjordan
11-02-2003, 12:35
Originally posted by "cionci"


Il C è un linguaggio funzionale...cioè si basa sulle funzioni... Il C++ è un linguaggio di programmazione orientato agli oggetti che deriva dal C...

Le cose che ci si possono fare sono le stesse...soltanto che si fanno in modo diverso :)

Casomai procedurale o strutturato... Funzionale sono LISP, Caml ecc ecc. Tutto un altro approccio.

cionci
11-02-2003, 15:07
Hai ragione...ho tirato uno sfondone ;)

mjordan
11-02-2003, 23:40
Originally posted by "cionci"

Hai ragione...ho tirato uno sfondone ;)

:D :D Hey cionci, che per caso hai vecchio materiale sull'MC68000, che ho scoperto che la mia calcolatrice Texas Instruments ha proprio questo processore e vorrei divertirmici un pochino :) Se non sbaglio le mie vecchie dispense finirono al posto della Diavolina per accendere il camino :D Errori di gioventù :D :D :D :D

cionci
12-02-2003, 07:46
No...mi dispiace, ma magari ti serve qualche sito sulla Ti89...a meno che tu non voglia programmarla in assembler :)

cionci
12-02-2003, 08:05
Credo che tutto quello che c'è da sapere sia qui : http://e-www.motorola.com/webapp/sps/site/prod_summary.jsp?code=MC68000&amp;nodeId=018rH3YTLC4622

M86
12-02-2003, 13:03
scusate ma a che cavolo serve il lisp...
no perchè ne ho già sentito parlare in occasione di una discussione sulle Reti neurali...

mjordan
12-02-2003, 17:19
Originally posted by "M86"

scusate ma a che cavolo serve il lisp...
no perchè ne ho già sentito parlare in occasione di una discussione sulle Reti neurali...

Esatto. Uno dei campi in cui è + utilizzato il Lisp è proprio l'intelligenza artificiale, ma non solo. E' molto usato anche per effettuare pesanti operazioni su stringhe. C'è addirittura chi lo usa come linguaggio di estensione. :)

mjordan
12-02-2003, 17:20
Originally posted by "cionci"

No...mi dispiace, ma magari ti serve qualche sito sulla Ti89...a meno che tu non voglia programmarla in assembler :)

Si si in assembler. Però non ho il cavetto :cry: :cry: :cry:

cionci
12-02-2003, 17:23
Originally posted by "mjordan"

Si si in assembler. Però non ho il cavetto :cry: :cry: :cry:
Prova a fartelo...io per l'HP me o sono fatto (ho utilizzato il connettore per il CD delle schede a 8 bit)...

Provo a cercare qualcosa...

mjordan
12-02-2003, 17:24
Originally posted by "cionci"


Prova a fartelo...io per l'HP me o sono fatto (ho utilizzato il connettore per il CD delle schede a 8 bit)...

Provo a cercare qualcosa...

Ci proverò. Avevo trovato un articolo su come realizzarlo. Devo rispulciare qualche motore di ricerca. :)

cionci
12-02-2003, 17:24
http://www.jemi.dk/92files/fargoabout.html#cable
http://www.inf.tu-dresden.de/~aw4/ti85

cionci
12-02-2003, 17:28
Hai visto il link sul 68000 ? C'è un libro intero sulla programmazione in assembler...

/\/\@®¢Ø
12-02-2003, 17:38
Originally posted by "M86"

scusate ma a che cavolo serve il lisp...
no perchè ne ho già sentito parlare in occasione di una discussione sulle Reti neurali...

Serve a programmare :D. Battute a parte, per molti anni e' stato utilizzato come linguaggio per l'IA, secondo me non tanto perche' fosse piu' adatto degli altri, ma probabilmente perche' non c'erano molte alternative decentemente diffuse tra i linguaggi di alto livello. L'eccezione forse e' il fatto che il lisp e' un linguaggio interpretato e dalla sintassi molto semplice ( basta che scrivi un po' di parentesi... :D:p ), ed e' quindi risulta abbastanza semplice utilizzarlo per fare programmi automodificanti (niente che non si possa realizzare con altri linguaggi, intendiamoci). Tra le altre caratteristiche (oltre appunto la fatto di essere di alto livello e interpretato) aggiunggerei la "lazyness" (detta male vuol dire che i calcoli non vengono fatti finche' necessari), e che si tratta di un linguaggio funzionale (con tutte le conseguenze del caso)

M86
13-02-2003, 12:01
che cos'è la programmazione funzionale?
Non è che qualcuno ha un link ad un documento (magari in italiano) in cui si evidenziano le differenze fra ogni tipo di programmazione?

/\/\@®¢Ø
13-02-2003, 14:44
Link in italiano non ne ho trovati, un po' di materiale (in inglese pero :( ) ne trovi su www.haskell.org (ma non solo, appena no trovo di altri te li posto). Se vuoi posso provare a spiegarti qualcosa io appena ho un attimo di tempo

/\/\@®¢Ø
13-02-2003, 15:12
Vediamo se riesco a dire qualcsa di sensato... l'argomento e' tanto vasto !

Un linguaggio di programmazione funzionale e' un linguaggio che (come dice appunto il nome) mette l'enfasi sulle funzioni.
Ha una impostazione decisamente piu' matematica e questo si vede soprattutto nelle cose piu' fondamentali:
Innanzi tutto (con le debite eccezioni) quando dichiari una variabile e le assegni un valore questo non cambia piu',
perche' qualcosa del tipo
x=3;
x=4;
ha senso in C, ma dal punto di matematico no (x e' 3 oppure 4 :D ), quindi niente cicli
Questo fa si' che il risultato di una funzione sia solo il suo valore di ritorno, e che questo dipenda solo dai parametri della chiamata.
Il tutto comporta una piu' semplice analisi del codice (anche da parte del compilatore) e una piu' bassa percentuale di errore .
La gestione della memoria e' necessariamente del tutto automatica (sia allocazione che deallocazione).
Le funzioni sono considerate dati a tutti gli effetti e quindi puoi passarle come argomento di altre funzioni e soprattutto costruire nuove funzioni da ritornare (cosa impossibile nei linguaggi tradizionali se non con grande fatica).
In generale si basa molto sulla ricorsione e sulle liste.
Il risultato ? Il seguente e' il confronto tra l'implementazione di un quick-sort in C e in haskell:

Codice C

qsort( a, lo, hi ) int a[], hi, lo;
{
int h, l, p, t;

if (lo &lt; hi) {
l = lo;
h = hi;
p = a[hi];

do {
while ((l &lt; h) &amp;&amp; (a[l] &lt;= p))
l = l+1;
while ((h &gt; l) &amp;&amp; (a[h] &gt;= p))
h = h-1;
if (l &lt; h) {
t = a[l];
a[l] = a[h];
a[h] = t;
}
} while (l &lt; h);

t = a[l];
a[l] = a[hi];
a[hi] = t;

qsort( a, lo, l-1 );
qsort( a, l+1, hi );
}
}


Codice Haskell, un linguaggio funzionale

qsort [] = []
qsort (x:xs) = qsort elts_lt_x ++ [x] ++ qsort elts_greq_x
where
elts_lt_x = [y | y &lt;- xs, y &lt; x]
elts_greq_x = [y | y &lt;- xs, y &gt;= x]


Quando uno ci fa la mano alla sintassi diventa molto leggibile, in particolare la costruzione "al volo" della lista degli elementi minori di x (elts_lt_x) e quella degli elementi maggiori o uguali (l'altra)

Va comunque osservato che il codice C e' piu' veloce e fa l'ordinamento in loco rispetto a quello Haskell

M86
14-02-2003, 13:02
Originally posted by "/\/\@®¢Ø"

Vediamo se riesco a dire qualcsa di sensato... l'argomento e' tanto vasto !

Un linguaggio di programmazione funzionale e' un linguaggio che (come dice appunto il nome) mette l'enfasi sulle funzioni.
Ha una impostazione decisamente piu' matematica e questo si vede soprattutto nelle cose piu' fondamentali:
Innanzi tutto (con le debite eccezioni) quando dichiari una variabile e le assegni un valore questo non cambia piu',
perche' qualcosa del tipo
x=3;
x=4;
ha senso in C, ma dal punto di matematico no (x e' 3 oppure 4 :D ), quindi niente cicli
Questo fa si' che il risultato di una funzione sia solo il suo valore di ritorno, e che questo dipenda solo dai parametri della chiamata.
Il tutto comporta una piu' semplice analisi del codice (anche da parte del compilatore) e una piu' bassa percentuale di errore .
La gestione della memoria e' necessariamente del tutto automatica (sia allocazione che deallocazione).
Le funzioni sono considerate dati a tutti gli effetti e quindi puoi passarle come argomento di altre funzioni e soprattutto costruire nuove funzioni da ritornare (cosa impossibile nei linguaggi tradizionali se non con grande fatica).
In generale si basa molto sulla ricorsione e sulle liste.
Il risultato ? Il seguente e' il confronto tra l'implementazione di un quick-sort in C e in haskell:

Codice C

qsort( a, lo, hi ) int a[], hi, lo;
{
int h, l, p, t;

if (lo &lt; hi) {
l = lo;
h = hi;
p = a[hi];

do {
while ((l &lt; h) &amp;&amp; (a[l] &lt;= p))
l = l+1;
while ((h &gt; l) &amp;&amp; (a[h] &gt;= p))
h = h-1;
if (l &lt; h) {
t = a[l];
a[l] = a[h];
a[h] = t;
}
} while (l &lt; h);

t = a[l];
a[l] = a[hi];
a[hi] = t;

qsort( a, lo, l-1 );
qsort( a, l+1, hi );
}
}


Codice Haskell, un linguaggio funzionale

qsort [] = []
qsort (x:xs) = qsort elts_lt_x ++ [x] ++ qsort elts_greq_x
where
elts_lt_x = [y | y &lt;- xs, y &lt; x]
elts_greq_x = [y | y &lt;- xs, y &gt;= x]


Quando uno ci fa la mano alla sintassi diventa molto leggibile, in particolare la costruzione "al volo" della lista degli elementi minori di x (elts_lt_x) e quella degli elementi maggiori o uguali (l'altra)

Va comunque osservato che il codice C e' piu' veloce e fa l'ordinamento in loco rispetto a quello Haskell
ma, non per questo può dirsi più semplice da apprender del C++ o sbaglio?

mjordan
14-02-2003, 17:50
Originally posted by "cionci"

Hai visto il link sul 68000 ? C'è un libro intero sulla programmazione in assembler...

Si si bellissimo! :) Me gusta anche la sezione sui tools. Credevo che anche Motorola si fosse scordata dell'M68000 :D hihihiihihi

/\/\@®¢Ø
14-02-2003, 19:09
Originally posted by "M86"


ma, non per questo può dirsi più semplice da apprender del C++ o sbaglio?
Infatti ! Anzi, per certi versi e' parecchio piu' difficile perche' richiede un approccio diverso. Ad esempio non e' possibile usare i cicli "for" nel modo usuale, e anche l'I/O va trattato in modo differente.
I vantaggi sono piuttosto codice piu' facile da capire (piu' conciso ed espressivo) e soprattutto da mantenere: niente problemi di puntatori persi, e soprattutto di variabili che ti cambiano di valore quando non te lo aspetti etc.

Un'altra cosa: il fatto che non siano ammessi "effetti collaterali" per le funzioni fa si' che il risultato di (ad esempio) f(5) e' sempre lo stesso e quindi puo' essere calcolato quando si vuole, e in particolare solo quando serve. Questo vuol dire che , almeno a livello teorico 1- valori non necessari non vengono calcolati effettivamente e 2- E' possibile manipolare strutture dati che altrimenti risulterebbero troppo grosse da utilizzare direttamente o addirittura di dimensione infinita dal punto di vista logico :eek:. La cosa puo' sembrare un po' criptica in effetti, se vuoi posso farti un paio di esempi

mjordan
14-02-2003, 21:02
Originally posted by "M86"

che cos'è la programmazione funzionale?
Non è che qualcuno ha un link ad un documento (magari in italiano) in cui si evidenziano le differenze fra ogni tipo di programmazione?

A questo link
http://caml.inria.fr/tutorial/index.html
trovi un tutorial sulla programmazione funzionale utilizzando il linguaggio CAML, una variante del linguaggio ML. Utilizza uno stile del tipo "io uso questo linguaggio ma è solo per spiegarti i concetti".
Non penso riusciresti a trovare qualcosa in italiano, questo è un classico argomento del tipo "specific task", nel senso che se ti serve l'argomento, vuol dire che capisci l'inglese, nel tipico modo di vedere degli informatici.

Per spiegare concetti della programmazione funzionale, comunque, non si può far a meno di entrare nel campo della matematica, anche in maniera un pochino rigorosa. Sono richieste quindi un minimo di conoscenze nel campo algebrico (composizione di funzione, nozione di astrazione funzionale, teoria degli insiemi numerici) e di logica matematica (proposizioni, predicati, calcolo su predicati, deduzione naturale) ed anche di informatica teorica (lambda calcolo, semantica operazionale, denotazionale). Bada bene, per CAPIRE i concetti della programmazione funzionale, non per IMPARARE un linguaggio funzionale, anche se in questo campo il concetto è spesso irrinunciabile :muro:
Molti possono confermare come imparare un linguaggio e programmare qualcosa siano due cose nettamente separate, specie a livello formale.

/\/\@®¢Ø
14-02-2003, 22:11
Hai ragione ... io quando rispondo ho sempre in mente come interlocutore qualcuno che abbia cominciato l'universita' e spesso invece non e' cosi'. Secondo me chiunque arrivi all'universita' puo' riuscire a programmarci, non occorre una matematica eccessivamente complicata. A livello di superiori invece il discorso e' piu' impegnativo, ma non impossibile. Piuttosto il tipo di programmi con cui uno si diletta a quell'eta' la rendono inutile :D (non perche' piu' facili ! Proprio perche' inadatti !)