Cos'è un programma: Un software eseguito da un elaboratore per risolvere problemi, costituito da una lista di istruzioni. Richiede traduzione dal linguaggio assembly o di alto livello in linguaggio macchina. Componenti hardware come la CPU e il suo Instruction Set sono fondamentali per l'esecuzione.
Cos'è un linguaggio di programmazione: Un linguaggio formale che specifica istruzioni per produrre dati in output, controllando il comportamento di una macchina. È definito da lessico, sintassi e semantica, includendo variabili, espressioni, istruzioni e strutture di controllo del flusso.
Interprete vs. Compilatore: Un interprete esegue il codice sorgente traducendo le istruzioni in tempo reale. Un compilatore traduce il codice sorgente in linguaggio macchina una sola volta, producendo un eseguibile (es. file .exe). Entrambi sono concetti di implementazione.
Classificazione dei linguaggi: I linguaggi si dividono in "high-level" e "low-level". I linguaggi di basso livello (es. assembler) sono più vicini all'hardware e spesso più veloci, mentre quelli di alto livello (es. PHP, Java, C++) sono più astratti e complessi da tradurre.
Cos'è un algoritmo: Un procedimento per risolvere un problema attraverso un numero finito di passi elementari, chiari e non ambigui, in un tempo ragionevole. È un concetto cardine della programmazione, rappresentando la logica di elaborazione prima della sua codifica in un linguaggio specifico.
Programmazione Dinamica: Un approccio che ottimizza la risoluzione di problemi complessi suddividendoli in sottoproblemi sovrapposti e riutilizzando i risultati intermedi. È illustrata dalla successione di Fibonacci, mostrando la maggiore efficienza di un approccio "bottom-up" (O(n)) rispetto a uno ricorsivo "top-down" (O(2^n)).
Applicazioni e vantaggi: L'approccio iterativo della programmazione dinamica rivela sottoproblemi identici, ordina le operazioni per il riutilizzo, e costruisce una tabella di risultati intermedi. Questo è cruciale per problemi di ottimizzazione in bioinformatica, come l'algoritmo di Needleman-Wunsch, che calcola tutti i percorsi possibili per l'allineamento di sequenze una sola volta, conservando i risultati intermedi per trovare il "percorso migliore" in modo efficiente.
Siamo nati da poco ma abbiamo già migliaia di appunti nella nostra community!
Completa il tuo profilo
Adesso sei dei nostri!
Ottieni i primi crediti!
Carica i tuoi file
Il modo più veloce per guadagnare crediti è caricare materiale.
Ci sono tante tipologie di materiale e siamo certi che hai tanto valore da condividere con la community!
Accidenti, ancora non abbiamo il tuo corso di laurea!
Se ti va puoi inserirlo tu in pochi click — anche solo il corso di laurea, oppure completo di tutti i corsi!
Aggiungilo subito
e faremo del nostro meglio per popolarlo di materiale interessante.
Nel frattempo inizia a guadagnare crediti invitando i tuoi amici, così appena saremo attivi potrai subito accedere al materiale disponibile.
Bastano 3 amici verificati per attivare l'abbonamento…
Consiglia ai tuoi amici
Scrivi ai tuoi vecchi amici o ai tuoi nuovi colleghi di studio. Ogni email che inserisci rappresenta un mattone importante per la community.
Per ogni amico che porti otterrai nuovi crediti!