Algoritmi e Strutture Dati
42 Questions
0 Views

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to Lesson

Podcast

Play an AI-generated podcast conversation about this lesson

Questions and Answers

Quale tra le seguenti affermazioni descrive correttamente una variabile?

  • Rappresenta sempre un valore costante.
  • È una scatola identificata da un nome, il cui contenuto può essere modificato. (correct)
  • Il suo nome e il suo contenuto possono cambiare.
  • Viene utilizzata esclusivamente per operazioni aritmetiche.

Il simbolo di assegnazione in un algoritmo è rappresentato da '==' e non da '='.

False (B)

Che cosa succede quando si esegue l'assegnazione 'a = 200'?

Il valore 200 viene assegnato alla variabile a, sostituendo il valore precedente.

Le variabili e le __________ sono le due classi di oggetti che consentono di fare riferimento ai dati da elaborare negli algoritmi.

<p>costanti</p> Signup and view all the answers

Abbina il termine con la sua descrizione:

<p>Variabile = Contenuto modificabile durante l'esecuzione Costante = Valore fisso non modificabile Assegnazione = Operazione di modifica del valore di una variabile Identificatore = Nome che identifica una variabile</p> Signup and view all the answers

Quale delle seguenti affermazioni descrive meglio un algoritmo?

<p>Un insieme finito e ordinato di passi eseguibili e non ambigui. (C)</p> Signup and view all the answers

Un algoritmo può non terminare mai.

<p>False (B)</p> Signup and view all the answers

Qual è la funzione principale di un algoritmo?

<p>Trasformare dati iniziali in dati finali.</p> Signup and view all the answers

Una primitiva ha una sintassi e una __________.

<p>semantica</p> Signup and view all the answers

Le primitive di un linguaggio di programmazione sono:

<p>Componenti fondamentali con regole di combinazione. (C)</p> Signup and view all the answers

Le istruzioni in un algoritmo possono essere ambigue.

<p>False (B)</p> Signup and view all the answers

Abbina i termini seguenti con le loro definizioni:

<p>Algoritmo = Insieme finito e ordinato di passi Primitiva = Componente fondamentale di un algoritmo Linguaggio di programmazione = Insieme di primitive e regole Istruzione = Comando impartito all'esecutore</p> Signup and view all the answers

Che cosa significa che un algoritmo è deterministico?

<p>Significa che lo stato raggiunto permette di stabilire in modo univoco le azioni da svolgere.</p> Signup and view all the answers

Qual è il primo passo nella risoluzione di un problema?

<p>Capire il problema (A)</p> Signup and view all the answers

Il tipo di dato intero può rappresentare valori con parte decimale.

<p>False (B)</p> Signup and view all the answers

Quali sono i due compiti principali nello sviluppo di un programma?

<p>Individuare l'algoritmo e rappresentarlo sotto forma di programma.</p> Signup and view all the answers

I dati di tipo ______ possono essere solo veri o falsi.

<p>logico</p> Signup and view all the answers

Accoppia i tipi di dato con la loro definizione:

<p>Stringa = Sequenza di caratteri Intero = Valore numerico senza decimali Reale = Valore numerico con parte decimale Logico = Due valori: vero o falso</p> Signup and view all the answers

Qual è una metodologia per affrontare un problema?

<p>Scomporre il problema in sottoproblemi (A)</p> Signup and view all the answers

La rappresentazione delle informazioni è indipendente dai tipi di dato.

<p>False (B)</p> Signup and view all the answers

Che cosa significa 'raffinamento a più passi'?

<p>È una metodologia che procede dal generale allo specifico scomponendo il problema.</p> Signup and view all the answers

Qual è la principale funzione del pseudocodice?

<p>Rappresentare un algoritmo in modo indipendente da un linguaggio di programmazione (C)</p> Signup and view all the answers

I diagrammi di flusso sono utili solo per visualizzare algoritmi semplici.

<p>False (B)</p> Signup and view all the answers

Qual è la funzione delle procedure in un programma?

<p>Risolvere sottoproblemi e riutilizzare algoritmi.</p> Signup and view all the answers

Quale dei seguenti simboli rappresenta il connettivo 'and'?

<p>&amp;&amp; (B)</p> Signup and view all the answers

Il connettivo 'or' restituisce falso solo se entrambe le condizioni sono false.

<p>True (A)</p> Signup and view all the answers

Il diagramma di flusso è anche conosciuto come __________.

<p>diagramma a blocchi</p> Signup and view all the answers

Come viene rappresentato un ciclo con contatore nei flow chart?

<p>Con un rettangolo e un contatore che aumenta ad ogni iterazione.</p> Signup and view all the answers

Abbina i seguenti blocchi con la loro descrizione corretta:

<p>Blocco di Input/Output = Rappresenta l'input e l'output dell'algoritmo Blocco di selezione = Determina quale percorso seguire in base a una condizione Blocco finale = Indica la conclusione del programma Blocco di dichiarazione = Dichiara le variabili utilizzate</p> Signup and view all the answers

Quale di questi elementi è un blocco principale di un diagramma di flusso?

<p>Blocco di input/output (D), Blocco di selezione (A)</p> Signup and view all the answers

Il simbolo '||' è usato per il connettivo ______.

<p>or</p> Signup and view all the answers

Le procedure possono avere nomi e parametri per aumentare la loro generalità.

<p>True (A)</p> Signup and view all the answers

Abbina i seguenti simboli ai loro significati:

<p>|| = Connettivo or &amp;&amp; = Connettivo and for = Ciclo con contatore while = Ciclo pre-condizionale</p> Signup and view all the answers

Il pseudocodice utilizza __________ per rappresentare strutture sintattiche e semantiche.

<p>notazioni concise e coerenti</p> Signup and view all the answers

Quale delle seguenti affermazioni descrive un ciclo iterativo con controllo in testa?

<p>La sequenza di istruzioni viene eseguita finché la condizione è vera. (D)</p> Signup and view all the answers

Il ciclo post-condizionale assicura che la sequenza di istruzioni venga eseguita almeno una volta.

<p>True (A)</p> Signup and view all the answers

Chi sono gli autori del teorema di Böhm-Jacopini?

<p>Corrado Böhm e Giuseppe Jacopini</p> Signup and view all the answers

Il famoso articolo di Dijkstra è intitolato '_____ statement considered harmful'.

<p>Goto</p> Signup and view all the answers

Quale affermazione sui cicli iterativi è corretta?

<p>Il ciclo pre-condizionale può non eseguire le istruzioni se la condizione iniziale è falsa. (A)</p> Signup and view all the answers

Abbina i concetti con le loro descrizioni:

<p>Ciclo pre-condizionale = Esegue le istruzioni solo se la condizione è vera Ciclo post-condizionale = Esegue le istruzioni almeno una volta Teorema di Böhm-Jacopini = Utilizza sequenza, selezione e iterazione Articolo di Dijkstra = Critica l'uso indiscriminato di goto</p> Signup and view all the answers

Le espressioni condizionali composte sono disponibili in tutti i linguaggi di programmazione.

<p>True (A)</p> Signup and view all the answers

Qual è uno dei principali problemi causati dall'uso indiscriminato del goto?

<p>Problema dello spaghetti code</p> Signup and view all the answers

Flashcards

Algoritmo

Insieme finito e ordinato di passi eseguibili e non ambigui che giunge certamente a terminazione.

Passi eseguibili

Passi che possono essere completati senza ambiguità.

Passi non ambigui

Passi con un significato univoco, che non permettono interpretazioni diverse.

Algoritmo deterministico

Algoritmo in cui ogni passo determina univocamente lo stato successivo.

Signup and view all the flashcards

Problema risolto da un algoritmo

Trasformazione di dati iniziali in dati finali.

Signup and view all the flashcards

Primitive

Componenti fondamentali di un algoritmo, descritte precisamente per evitare ambiguità.

Signup and view all the flashcards

Linguaggio di programmazione

Insieme di primitive e regole per combinarle.

Signup and view all the flashcards

Istruzioni

Comandi impartiti ad un esecutore utilizzando un linguaggio di programmazione.

Signup and view all the flashcards

Sviluppo programma

Comprende individuare l'algoritmo che risolve il problema e rappresentarlo come programma.

Signup and view all the flashcards

Risoluzione di un problema

Coinvolge comprendere il problema, ideare una procedura, formulare l'algoritmo e valutare il risultato.

Signup and view all the flashcards

Metodologia top-down

Scomporre un problema in sottoproblemi più semplici da risolvere.

Signup and view all the flashcards

Tipi di dato

Classificano le informazioni in base ai valori rappresentabili e le operazioni effettuabili su di essi.

Signup and view all the flashcards

Tipo stringa

Qualsiasi sequenza di caratteri, anche vuota.

Signup and view all the flashcards

Tipo intero

Valori numerici interi, positivi o negativi.

Signup and view all the flashcards

Tipo reale

Valori numerici con parte decimale.

Signup and view all the flashcards

Tipo logico

Valori vero o falso.

Signup and view all the flashcards

Variabili

Scatole che contengono dati in un algoritmo. Il nome della scatola rimane uguale, ma il contenuto può cambiare.

Signup and view all the flashcards

Costanti

Scatole in un algoritmo che contengono dati che non cambiano durante l'esecuzione.

Signup and view all the flashcards

Identificatore di variabile

Il nome che identifica una variabile in un algoritmo.

Signup and view all the flashcards

Assegnazione

Istruzione che modifica il contenuto di una variabile in un algoritmo.

Signup and view all the flashcards

Simbolo di assegnazione

Il simbolo '=' o '←' che indica l'operazione di assegnazione in un algoritmo.

Signup and view all the flashcards

Pseudocodice

Un linguaggio descrittivo, meno formale rispetto ai linguaggi di programmazione, utile per rappresentare algoritmi in modo intuitivo e indipendente dal linguaggio che si userà.

Signup and view all the flashcards

Diagramma di flusso

Rappresentazione grafica di un algoritmo tramite blocchi connessi da frecce, utile per visualizzare il flusso di istruzioni.

Signup and view all the flashcards

Blocco iniziale

Il punto di partenza del diagramma di flusso, indica l'inizio dell'esecuzione dell'algoritmo.

Signup and view all the flashcards

Blocco finale

Il punto di arrivo del diagramma di flusso, indica la fine dell'esecuzione dell'algoritmo.

Signup and view all the flashcards

Blocco di dichiarazione

Un blocco che definisce le variabili utilizzate nell'algoritmo, come il tipo di dati che possono contenere.

Signup and view all the flashcards

Blocco di input/output

Un blocco che gestisce l'interazione con l'utente o con un file, per ricevere dati di ingresso (input) o per visualizzare risultati (output).

Signup and view all the flashcards

Blocco di assegnazione

Un blocco che assegna un valore a una variabile.

Signup and view all the flashcards

Procedure

Sottoprogrammi che risolvono un sottoproblema dell'algoritmo principale, possono essere riutilizzate e rendono il codice più organizzato.

Signup and view all the flashcards

Connettivo OR (||)

Operatore logico che restituisce "vero" se almeno una delle condizioni è vera, altrimenti restituisce "falso".

Signup and view all the flashcards

Connettivo AND (&&)

Operatore logico che restituisce "vero" solo se entrambe le condizioni sono vere, altrimenti restituisce "falso".

Signup and view all the flashcards

Ciclo con contatore

Un ciclo che esegue un blocco di codice un numero prestabilito di volte, incrementando o decrementando un contatore ad ogni iterazione.

Signup and view all the flashcards

Flowchart: Ciclo con contatore

Rappresentazione grafica di un ciclo con contatore in un diagramma di flusso.

Signup and view all the flashcards

Condizioni in un ciclo

Espressione logica che determina se il ciclo continua o termina.

Signup and view all the flashcards

Ciclo iterativo

Un meccanismo che ripete una sequenza di istruzioni finché una condizione è vera.

Signup and view all the flashcards

Controllo in testa

La condizione viene verificata prima di eseguire le istruzioni.

Signup and view all the flashcards

Controllo in coda

La condizione viene verificata dopo l'esecuzione delle istruzioni.

Signup and view all the flashcards

Teorema di Böhm-Jacopini

Qualsiasi algoritmo può essere costruito usando solo sequenza, selezione e iterazione.

Signup and view all the flashcards

Programmazione strutturata

Metodo di programmazione che enfatizza l'uso di strutture di controllo come sequenza, selezione e iterazione.

Signup and view all the flashcards

Goto

Un'istruzione che trasferisce il controllo del programma a un'altra riga di codice.

Signup and view all the flashcards

Spaghetti code

Codice difficile da leggere e modificare a causa di un uso eccessivo di goto.

Signup and view all the flashcards

Espressioni condizionali composte

Combinazioni di condizioni logiche per creare condizioni più complesse.

Signup and view all the flashcards

Study Notes

Algoritmi e Strutture Dati

  • Un algoritmo è un insieme finito e ordinato di passi eseguibili e non ambigui che giunge certamente a terminazione.
  • L'algoritmo deve avere un ordine di esecuzione ben definito, con una prima istruzione e la possibilità di stabilire la successiva.
  • I passi devono essere eseguibili e portati a termine.
  • I passi devono essere non ambigui, in modo da raggiungere uno stato univoco e completo durante l'esecuzione. Questo lo rende deterministico.

Problemi e Algoritmi

  • Un algoritmo risolve un problema trasformando dati iniziali in dati finali.
  • I dati iniziali sono i dati di input, mentre i dati finali sono i dati di output.
  • Lo stato iniziale degli oggetti rappresenta lo scenario iniziale del problema, mentre lo stato finale rappresenta lo scenario finale dopo l'esecuzione dell'algoritmo.

Rappresentazione degli Algoritmi

  • Un algoritmo è rappresentato tramite primitive.
  • Le primitive sono componenti fondamentali definite precisamente per eliminare ambiguità.
  • Ogni primitiva ha una sintassi (rappresentazione simbolica) e una semantica (significato).
  • Linguaggio di programmazione: un insieme di primitive e regole che spiegano come combinarle.
  • Le istruzioni sono comandi impartiti all'esecutore utilizzando un linguaggio di programmazione.

Pseudocodice

  • Il pseudocodice è un linguaggio meno formale e più intuitivo per descrivere un algoritmo.
  • Permette di rappresentare l'algoritmo indipendentemente dal linguaggio di programmazione usato.
  • Consiste di notazioni concise e coerenti.

Diagrammi di Flusso

  • Un diagramma di flusso è una rappresentazione grafica a blocchi di un algoritmo.
  • È stato uno strumento di progettazione ideato agli albori dell'informatica negli anni '50.
  • Utile per visualizzare l'algoritmo ed è importante per algoritmi più semplici, ma può diventare complesso per algoritmi molto complessi.
  • I principali blocchi di un diagramma di flusso includono: blocchi iniziali, blocchi finali, blocchi di dichiarazione, blocchi input/output (leggere e scrivere dati), blocchi di assegnazione, blocchi di selezione (decisioni), blocchi di iterazione (ripetizioni cicliche).

Procedure (Sottoprogrammi)

  • Le procedure sono unità di programma identificate che risolvono un sottoproblema del problema complessivo.
  • Sono algoritmi riutilizzabili per scomporre problemi più grandi in parti più piccole.
  • Possono dipendere da parametri per essere più generali.

Scoperta di Algoritmi

  • Lo sviluppo di un programma consiste in due attività: individuare l'algoritmo che risolve il problema e rappresentarlo sotto forma di programma.
  • La risoluzione di un problema implica: comprendere il problema, sviluppare un'idea di una procedura algoritmica, formulare l'algoritmo, rappresentare l'algoritmo come un programma, valutare la precisione del programma e la sua applicabilità a problemi simili.

Trovare un Punto di Partenza

  • Per affrontare un problema, è efficace provare ad affrontarlo al contrario, smontare un oggetto o cercare problemi simili più semplici.
  • Scomporre il problema in sottoproblemi più piccoli facilita la risoluzione.
  • La metodologia top-down procede dal problema generale ai sottoproblemi più specifici.

Rappresentare le Informazioni: Tipi di Dato

  • Le informazioni sono rappresentate da dati con significato.
  • I dati appartengono a vari tipi, con caratteristiche diverse.
  • I dati hanno un'ampia gamma di tipi per descrivere i dati.
  • I tipi di dato includono stringhe (sequenze di caratteri), interi (numeri interi), reali (numeri con decimali), logici (vero/falso).

Variabili, Costanti, Espressioni

  • Le istruzioni degli algoritmi spesso manipolano dati, usando variabili e costanti.
  • Variabile: una scatola identificata da un nome (l'identificatore) e contenente un valore. Il valore può cambiare.
  • Costante: un valore che non cambia durante l'esecuzione del programma.

Espressioni ed Assegnazioni

  • Un'espressione è una formula che combina variabili, costanti e operatori.
  • Un'assegnazione assegna il risultato di un'espressione ad una variabile.
  • La compatibilità dei tipi è cruciale: un'espressione deve avere lo stesso tipo della variabile a cui viene assegnata.

Schemi di Composizione delle Istruzioni

  • Gli algoritmi, spesso, non sono descritti con una sola sequenza di istruzioni. Sono composti da sequenze, selezioni e iterazioni.
  • Ogni schema di composizione può essere considerato una singola istruzione.

Sequenza

  • Istruzioni eseguite una dopo l'altra nell'ordine.

Selezione

  • L'esecuzione di una parte di codice dipende dal valore di una condizione.

Iterazione

  • Un'istruzione o un blocco di istruzioni viene eseguita ripetutamente finché una condizione è vera.

Il Teorema di Böhm-Jacopini

  • Ogni algoritmo può essere costruito con sole tre strutture: sequenza, selezione e iterazione.
  • Gli algoritmi devono essere strutturati.

Espressioni Condizionali Composte

  • I linguaggi di programmazione hanno operatori logici per creare condizioni composte.
  • Gli operatori logici includono "or" (||) e "and" (&&).

Ciclo con Contatore

  • Un ciclo che si ripete un numero predeterminato di volte.

Studying That Suits You

Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

Quiz Team

Related Documents

Description

In questo quiz esplorerai i concetti fondamentali sugli algoritmi e le strutture dati. Imparerai a capire la loro definizione, la loro rappresentazione e come risolvono problemi trasformando dati di input in output. Metti alla prova le tue conoscenze su questi argomenti essenziali della programmazione!

Use Quizgecko on...
Browser
Browser