Anteprima
Vedrai una selezione di 4 pagine su 12
Riassunto Fondmenti C++ Pag. 1 Riassunto Fondmenti C++ Pag. 2
Anteprima di 4 pagg. su 12.
Scarica il documento per vederlo tutto.
Riassunto Fondmenti C++ Pag. 6
Anteprima di 4 pagg. su 12.
Scarica il documento per vederlo tutto.
Riassunto Fondmenti C++ Pag. 11
1 su 12
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

Strutture di controllo in programmazione

La programmazione prevede l'utilizzo di diverse strutture di controllo per gestire il flusso del codice. Le principali sono:

if-else

La struttura if-else permette di deviare il codice verso due o più possibili direzioni, a seconda che una condizione sia vera o falsa.

if (condizione) {
   // Codice da eseguire se la condizione fosse vera
} else {
   // Codice da eseguire se la condizione fosse falsa
}

if

Quando non è necessario specificare cosa accade se la condizione è falsa, è possibile utilizzare la struttura if senza il blocco else.

if (condizione) {
   // Codice da eseguire se la condizione fosse vera
}

switch

La struttura switch permette l'esecuzione condizionata di codice, sulla base del valore di un'espressione intera.

switch (espressione) {
   case const_espressione_1:
      // Blocco di istruzioni 1
      break;
   case const_espressione_2:
      // Blocco di istruzioni 2
      break;
   case const_espressione_n:
      // Blocco di istruzioni n
      break;
   default:
      // Blocco di istruzioni di default
}

L'espressione è un'espressione intera e le const_espressione_i sono costanti intere. Se l'espressione è uguale a const_espressione_i, il programma salta all'inizio del blocco di istruzioni_i. Se l'espressione è diversa da tutte le costanti, viene eseguito il blocco di istruzioni di default.

const_espressione_i salta all'inizio del blocco_istruzioni. Poi esegue tutte le istruzioni fin quando incontra l'espressione break.
#include <iostream>
using namespace std;
int main () {
    // Local variable declaration:
    int a = 10;
    // do loop execution
    do {
        if( a == 15) {
            // skip the iteration.
            a = a + 1;
            continue;
        }
        cout << "value of a: " << a << endl;
        a = a + 1;
    } while( a < 20 );
    return 0;
}
BREAK L'istruzione break determina l'interruzione immediata di un ciclo (for, while, do) o dell'istruzione switch. CONTINUE L'istruzione continue fa passare immediatamente alla prossima iterazione di un ciclo (for, while, do). GOTO L'istruzione goto manda direttamente all'istruzione identificata da un'etichetta: #include <iostream> using namespace std; int main () { // Local variable declaration: int a = 10; // do loop execution loop:do { // label if( a == 15) { // skip

the iteration.
12 a = a + 1;
13 goto loop;
14 }
15 cout << "value of a: " << a << endl;
16 a = a + 1;
17 }
while( a < 20 );
19 return 0;
}

COSTANTI non verranno più cambiate dal programma
const tipo NOME es: const int MIN = 0, MAX = 120;

LEGGERE DALL' INPUT:
#include <iostream>
using namespace std;
int main() {
char letterin; // dichiaro variabile carattere letterin
cout << "Please enter a lower case letter: ";
cin >> letterin; // inserisco ciò che digito nella variabile letterin

FUNZIONI tipo nome_funzione (tipo1 arg1, tipo2 arg2 /*, ecc...*/ ){
... qui il codice ...
return (valore restituito);
}

Devono essere dichiarate prima di essere utilizzate:
tipo nome_funzione (tipo1, tipo2 /*, etc... )

Le funzioni sono richiamate dal programma con il loro nome e lista argomenti.
nome_funzione(arg1, arg2 /*, ecc...*/)
#include <iostream>
using namespace std;
int power(int, int); // DICHIARO LA FUNZIONE POWER
int main() {


const int b = 2;
for (int i = 0; i < 10; i++)
    cout << power(b,i) << '\n'; // RICHIAMO L FUNZIONE POWER CON I DUE ARGOMENTI
return 0;
}

int power(int x, int n){ // SCRIVO COSA DEVE FARE LA FUNZIONE
    int ret = 1;
    for(int i=1; i <= n; i++)
        ret = ret * x;
    return ret;
}

ALLE FUNZIONI VENGONO PASSATE DELLE COPIE DELLE VARIABILI DEL PROGRAMMA PRINCIPALE, QUINDI SE
CAMBIO LE VARIBILI ALL'INTERNO DELL FUNZIONE NON CAMBIERA' NIENTE NEL PROGRAMMA PRINCIPALE.

POSSO USARE & PER PASSARE DIRETTAMENTE LE VARIABILI DAL PROGRAMMA ALLE FUNZIONI SENZA CREARE UNA
COPIA: tipo Nomefunzione (tipo1& arg1, tipo2& arg2 /*, ecc...*/ ){ ... qui il codice .. return (valore di ritorno); }

CONST tipo variabile lo uso per evitare che avvengano modifiche involontarie della variabile

SCAMBIARE DUE VARIABILI uso VOID= la funzione non restituisce nulla (in questo caso scambia solo)

#include <iostream>
using namespace std;

void swap(int&, int&);

uso & per passare i valori di int direttamente dentro la funzione. Dichiaro la funzione swap.

int main(){
    int a = 5, b = 7;
    cout << "a = " << a << "\tb ="<< b << "\n swap \n";
    swap(a,b); // Richiamo la funzione swap
    cout << "a = " << a << "\tb ="<< b << endl; // mando in output a e b dopo aver fatto la funzione
    return 0;
}

void swap (int& x, int& y) { // dico cosa deve fare la funzione swap ( in questo caso scambia a e b)
    int z; // x e y prendono direttamente i valori di a e b, z è variabile temporanea per scambiare
    z = x;
    x = y;
    y = z;
}

LA FUNZIONE è VOID QUINDI NON METTO RETURN ALLA FINE

ARRAY permettono di memorizzare un gran numero di valori in una lista. Un array di dimensione n, è indicizzato da 0 a (n - 1), dove n è una const int:

tipo nome_array[n]
int evn[2]={2,4}

La dimensione deve essere nota subito.

prima che il programma parta!PUNTATORI variabili che contengono l'indirizzo di una variabile.

Dichiarare un puntatore :

int c = 5; // Dichiarazione di un intero
int *p1; // Dichiarazione di un puntatore ad un intero (p1)
p1 = &c; // p1 viene puntato a c

FORMA COMPATTA:

int *p2 = &c; // Si dichiara un puntatore ad un intero (p2) e lo si punta a c
&p1 mi restituisca l'indirizzo di memoria in cui è salvata la variabile c
*p1 mi restituisce il contenuto dell'indirizzo di c (area puntata) quindi 5

MUOVERSI CON UN PUNTATORE IN UN ARRAY

I puntatori possono essere incrementati per muoversi lungo gli array di i blocchi. Poi si può accedere al contenuto con *(pb+i)

ESEMPIO ALFABETO AL CONTRARIO

#include <iostream>
using namespace std;
int main(){
char b[] = "abcdefghijklmnopqrstuvwxyz"; // DICHIARO UN ARRAY b
char *ipc = &b[0]; // PUNTO UN PUNTATORE AL PRIMO ELEMRNTO DELL'ARRAY b[0]
for(int i = sizeof(b) - 2; i>=0; i--) // MI MUOVO CON

UN CICLO FOR: i VA DA 0 ALLA DIMENSIONE DI b E DECREMENTO7 cout << *(ipc+i); SCRIVO LA VARIABILE A CUI PUNTO INCREMENTATA DI 1 OGNI VOLTA8 cout << endl ; sizeof(b) MI LEGGE LA DIMENSIONE DI b9 } L’ULTIMO CARATTERE DI UNA STRINGA E’ /0 QUINDI DEVO METTERE UN -2 PER LEGGERE SOLO LE LETTERESizeof(b)-2ALLOCAZIONE MEMORIASingola Variabile: new tipo; delete puntatoreArray: new tipo array[n]; delete [] nome array#include <iostream>using namespace std;int main()6 {7 int n = 4; //DICHIARO LA DIMENSIONE n8 char* A; //CREO UN PUNTATORE AD UN CARATTERE9 A = new char[n]; //ALLOCO UNA MEMORIA DI GRANDEZZA n (4 bytes)11 for(int i = 0; i < n; i++)12 {13 A[i] = (char)('a' + i); }16 for(int i = 0; i < 4; i++)17 {18 cout << A[i] << endl; }21 delete [] A; LIBERO LA MEMORIA ALLOCATA23 return 0; }STRINGHETipo di classe (variabile). La dichiaro così string nome; le posso sommare così string nome=nome +nome;#include <cstring>2

#include <iostream>
using namespace std;

int main() {
    string a, b;
    a = "Hi there";
    b = "how are you doing";
    string c = a + ", " + b;
    cout << c << endl;

    #include <iostream>
    #include <string>
    #include <cstring>
    using namespace std;

    void toLower(string*);

    int main() {
        string str;
        cout << "Insert one string: ";
        getline(cin, str);
        toLower(&str);
        cout << "String converted to lower case: " << str << endl;
        return 0;
    }

    void toLower(string *s) {
        for (int i=0; i < s->size(); i++){
            if ((...
        }
    }
}
>at(i) >= 'A'&& (s->at(i) <= 'Z' ) ) SE IL CARATTERE è MAIUSCOLO32 s->at(i) += 32; TRASFORMA IN MINUSCOLE34 }35 }ARRAY DI PUNTATORI, ORDINAREQUESTA FUNZIONE ORDINA IN ORDINE ALFABETICO L'ARRAY DI STRINGHE#include <iostream>2 #include <cstring>3 #include <algorithm>using namespace std;int main() {8 string wordlist[6] = {"cat","dog","caterpillar","fish","catfish"}; ARRAY DI STRINGHR9 wordlist[5] = "bat"; ULTIMO ELEMENTO ARRAY11 for(bool swapped=false; !swapped; swapped = !swapped)12 for(int i = 1; i < 6; i++)13 if (wordlist[i-1] > wordlist[i]) { SE L'ELEMENTO I-1 è MAGIORE DI I ALLORA NON SONO IN ORDINE, QUINDI LI SCAMBIO14 swap(wordlist[i-1],wordlist[i]);15 swapped = true; }18 for(int i = 0 ; i<6; i++) cout << wordlist[i] << endl;19 return 0; }ARRAY MULTIDIMENSIONALESTATICO const int n, m; definisce costanti intere lenamespace std; int main() { const int n = 2, m = 2; char A[n][m]; for (int i = 0; i < n; i++) { for(int j = 0; j < m; j++) { A[i][j] = (char)('a' + i*m +j); } } for (int i = 0; i < n; i++) { for(int j = 0; j < m; j++) { cout << setw(2) << A[i][j]; } cout << endl; } return 0; }

namespace std;
int main()
{
    int n = 2, m = 2;
    char **A;
    A = new char*[n];
    for(int i = 0; i < n; i++)
    {
        A[i] = new char[m];
    }
}

Dettagli
Publisher
A.A. 2021-2022
12 pagine
2 download
SSD Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher landguido di informazioni apprese con la frequenza delle lezioni di Fondamenti di informatica e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Bologna o del prof Teodori Francesco.