PPX1 Introduzione .

PPX1 Introduzione .

SPERIMENTO SU VS STUDIO E RIVEDO REGISTRAZIONI

TIPI DI PROGRAMMAZIONE

  • Il tipo imperativo risulta molto meccanico e poco flessibile:
    • notion image
  • il tipo procedurale è l’opzione più efficiente, consiste nel decomporre la soluzione in diversi passaggi logici autonomi (procedure). Le funzioni in go sono un esemio di programmazione procedurale.
    • notion image
  • la programmazione procedurale ha dei svantaggi tra cui nell’ultima riga spiega il caso di procedure che modificano variabili del programma senza che noi siamo riusciti a prevederli, può capitare
    • notion image
  • OBIETTIVO DEL CORSO: imparare altri paradigmi di programmazione per risolvere questi problemi
    • penultimo caso parla di individuare in un set di problemi da risolvere i casi ricorrenti e implementarli in modo standard per non essere ripetitivo
    • l’ultimo caso parla di PARALLELIZZAZIONE: risolvere calcoli su più dati in contemporanea
      • notion image
  • ARGOMENTI DEL CORSO → 3 PARADIGMI
    • FOCUS OOP: sapere cosa fa un pezzo di programma in modo immediato senza dover necessariamente analizzarlo riga per riga
    • FOCUS SOFTWARE ENGENEERING: come strutturare codice complesso
    • FOCUS PROGRAMMAZIONE FUNZIONALE: scomporre e parallelizzare un intero programma
      • notion image
      • PK non menziona quella imperativa e procedurale?
        • la prima non serve e la sappiamo già usare
        • anche questa la sappiamo già usare infatti nella sua forma fondamentale si riferisce all’uso di parametri nelle funzioni. Non bisogna confonderla con altri paradigmi: è considerata una delle forme più fondamentali di programmazione e può essere vista come la base su cui si costruiscono gli altri paradigmi (quindi era implicito)

DECOMPOSIZIONE

Concetto fondamentale della programmazione che implica individuare il problema e suddividerlo quindi in sotto-problemi.
CARATTERISTICHE:
notion image

COME OPERO LA DECOMPOSIZIONE?

  • Col processo di ASTRAZIONE
    • individuare le caratteristiche rilevanti del problema, slegate dalla loro effettiva implementazione
    • ad es. le operazioni matematiche sono slegate dalla loro implementazione
💡
l'astrazione serve specificatamente a scomporre un problema in problemi più semplici e che può essere utile in vari paradigmi di programmazione

4 TIPI DI ASTRAZIONE

notion image
ASTRAZIONE PER PARAMETRIZZAZIONE
  • la variabile in entrata di una funzione si chiama appunto parametro quindi è un esempio di astrazione per parametrizzazione
ASTRAZIONE PER SPECIFICA
spiego in modo chiaro come utilizza un oggetto astratto (ovvero un parametro)
  • quando vedo una funzione devo capire da subito come usarlo correttamente senza dover leggere il codice riga per riga
    • DESCRIVO IL CODICE CON I COMMENTI
    • USO NOMI APPROPRIATI A VARIABILI/FUNZIONI
notion image
ASTRAZIONE TIPI DI DATI
  1. definisco nuovi tipi di dato (come le struct)
    1. hanno funzionalità simile alle struct in go (ci metto qualsiasi tipo di dato e ci do un nome)
    2. la differenza è che i tipi di dato dell’OOP hanno anche dei comportamenti (funzionalità aggiuntive che dipendono dal tipo di dato scelto)
  1. uso l’astrazione per parametrizzazione per generalizzare il suo comportamento, in questo modo tutte i valori al suo interno avranno quel comportamento
ASTRAZIONE DI ITERAZIONE
  • L'iterazione è un processo che ti permette di ripetere un'azione più volte. Nel contesto della programmazione, significa eseguire una serie di operazioni ripetutamente su ciascun elemento di una sequenza di dati, come un array, una lista o una stringa.
  • L'astrazione di iterazione ti permette di scorrere una lista di cose (come una lista di nomi) senza sapere come sono memorizzati esattamente quei nomi (in un array, in una lista collegata, ecc.). [procedura slegata dall’implementazione]
  • Grazie a questa astrazione, definisci delle regole generali su come passare al prossimo elemento e su come capire se ci sono ancora altri elementi.
  • Non hai bisogno di sapere esattamente come tutto questo viene implementato nel computer, solo di sapere che funziona.
  • SPIEGAZIONE PRATICA: a livello sintattico, puoi creare una procedura (o una funzione) per l'iterazione che può essere utilizzata con strutture dati diverse che seguono lo stesso meccanismo di iterazione. Questo approccio ti consente di scrivere codice più pulito e riutilizzabile, evitando di duplicare logica di iterazione per ogni tipo di struttura dati.
GERARCHIA DEI TIPI DI DATI
aggiungere delle capacità a QUALSIASI tipo di dato partendo da tipi di dato esistenti
  • in che senso a partire da tipi di dato esistenti?
    • ci si riferisce all'idea di utilizzare classi già definite come base per creare nuove classi. Questo implica che puoi "prendere in prestito" comportamenti (metodi) e attributi (variabili) da classi già esistenti e arricchirli con nuove funzionalità.