Per iniziare

Impara con un esempio

Uno dei modi migliori per imparare a programmare in una nuova lingua è cercare in tantissimi programmi di esempio. La cosa migliore da fare è copiare e incollare ogni programma riportato di seguito in un file di testo e compilarlo. Dopodiché, prova a eseguire gli esperimenti. Proseguendo con questi programmi di esempio, acquisirai familiarità con diversi aspetti di C++ e ti sentirai più sicuro quando arriverà il momento di scrivere programmi zero.

Esempio 1: fai funzionare il tuo compilatore.

Se non l'hai ancora fatto, copia e incolla il seguente programma classico in un file di testo e compilarlo. Sono disponibili le istruzioni per la compilazione qui

Probabilmente hai approfondito i dettagli di questo programma nel tutorial. pertanto non forniremo una descrizione riga per riga. Ci sono alcuni aspetti da notare, tuttavia, per quanto riguarda la leggibilità. Si riferisce ai commenti e formattazione che semplificano la lettura, la comprensione e la gestione dei programmi.

  • Ogni programma che scriviamo inizia con un commento nell'intestazione, in cui è presente il nome dell'autore, i relativi dati di contatto, una breve descrizione e (se pertinenti). Ogni funzione inizia con un commento su operazione e utilizzo.
  • Aggiungiamo commenti esplicativi utilizzando frasi complete, ogni volta che il codice non documentarsi, ad esempio se l'elaborazione è complicata, non ovvia interessante o importante.
  • Utilizza sempre nomi descrittivi: le variabili sono separate da parole minuscole. per _, come in my_variable. I nomi delle funzioni utilizzano lettere maiuscole per contrassegnare parole, come in MyExcitingFunction(). Le costanti iniziano con una "k" e utilizza lettere maiuscole per contrassegnare le parole, ad esempio kDaysInWeek.
  • Il rientro è in multipli di due. Il primo livello è di due spazi; se oltre il rientro è necessario, utilizziamo quattro spazi, sei spazi e così via.
// hello.cpp: Maggie Johnson
// Description: a program that prints the immortal saying "hello world"

#include <iostream>
using namespace std;

int main() {
  cout << "Hello World!" << endl;
  return 0;
}

Alcuni esperimenti da provare:

  • La cosa più importante è assicurarsi di poter compilare ed eseguire questo programma.
  • Modifica il programma riportato sopra in modo che stampi "Hello World!". 4 volte su un riga per 6 righe, ciascuna delle quali è stampata in un campo di 17 spazi. Usa le loop for per eseguire questa operazione. Fai clic qui per scopri di più sulla formattazione dell'output con cout. Fai clic qui per per vedere la soluzione.
  • Utilizzando il programma che hai appena completato, scopri come stampare "Ciao Mondo!" allineata a sinistra nei campi di 17 spazi (il valore predefinito è allineata a destra). Fai clic qui per vedere la soluzione.

Esempio 2: ottenere qualche input

È facile ottenere un input dalla tastiera in C++ usando cin. Ecco un esempio:

// get_input.cpp: Maggie Johnson
// Description: Illustrate the use of cin to get input.

#include <iostream>
using namespace std;

int main() {
  int input_var = 0;
  // Enter the do while loop and stay there until either
  // a non-numeric is entered, or -1 is entered. Note that
  // cin will accept any integer, 4, 40, 400, etc.
  do {
    cout << "Enter a number (-1 = quit): ";
    // The following line accepts input from the keyboard into
    // variable input_var.
    // cin returns false if an input operation fails, that is, if
    // something other than an int (the type of input_var) is entered.
    if (!(cin >> input_var)) {
      cout << "You entered a non-numeric. Exiting..." << endl;
      break;
      // exit the do while loop
    }
    if (input_var != -1) {
      cout << "You entered " << input_var << endl;
    }
  } while (input_var != -1);
  cout << "All done." << endl;
  return 0;
}

Un esperimento:

  • Quando si verifica un errore di input, lo stream "si interrompe" resi cin false e il programma si interrompe. È molto importante fare attenzione a questi errori come nel programma precedente. E se volessimo correggere l'errore, anziché interrompere il programma? Il ripristino da un errore:
    1. Cancella l'errore con cin.clear().
    2. Rimuovi i caratteri errati dallo stream. Un modo per farlo è tramite cin.ignore().

Scrivi un programma che esegua il ripristino da un input errato seguendo questi due passaggi. Utilizza le funzionalità di Google per cercare come funzionano questi metodi. La nostra soluzione è disponibile qui.

Esempio 3: Che risultati fornisce questo programma?

#include <iostream>
using namespace std;

int main() {
  cout << " 1\t2\t3\t4\t5\t6\t7\t8\t9" << endl << "" << endl;
  for (int c = 1; c < 10; c++) {
    cout << c << "| ";
    for (int i = 1; i < 10; i++) {
      cout << i * c << '\t';
    }
    cout << endl;
  }
  return 0;
} 

Esempio 4: la scomposizione rende tutto più semplice...

È ora di iniziare a scrivere giochi per computer. Questa prima domanda sarà un po' semplice, ma è un inizio. Il nostro compito è scrivere un programma che implementi delle ipotesi per giocare. Il nostro programma genera un numero casuale compreso tra 0 e 100. Il player deve indovina il numero segreto. Il programma fornisce suggerimenti come "Troppo alto" o "ovvero troppo basso" finché il giocatore non indovina il numero segreto.

Lavoreremo su questo gioco in tre passaggi. 

  1. Scoprire come generare un numero casuale in un determinato intervallo di valori.
  2. Creare una funzione principale che elabori una ipotesi dal player e fornisca indizi.
  3. Aggiungi ciò di cui abbiamo bisogno per consentire più ipotesi finché il giocatore non indovina il numero.

Questo processo di sviluppo è chiamato decomposizione, il che significa interrompere un'attività in attività secondarie, ognuna delle quali facile da eseguire.

A partire dal passaggio 1, esegui una ricerca su Google per scoprire come generare un numero casuale utilizzando C++. Prova a cercare "rand C++". Qui è la nostra soluzione.

Per il passaggio 2, dobbiamo ricevere un input intero dal player (con i valori appropriati controllo degli errori su cin) e confrontarlo con il numero segreto. Prova a scrivere questa parte del gioco prima di controllare le nostre soluzione.

Infine, dobbiamo aggiungere un loop che continui a raccogliere ipotesi dal giocatore finché non indovineranno il numero segreto. Dopo aver completato questa parte puoi consultare la nostra soluzione.

La decomposizione è una delle competenze più importanti che un programmatore può apprendere. Essere in grado di suddividere un'attività in parti gestibili per poi completarne una contemporaneamente è fondamentale, a prescindere dalle dimensioni del progetto. Ecco alcuni esempi e altre opportunità per esercitarti con la decomposizione.

  • Molte attività quotidiane offrono l'opportunità di sviluppare competenze in decomposizione. Potrebbe sorprenderti scoprire che la tua mente funziona così.

    Ad esempio, se devo pulire una cucina molto disordinata (ad esempio bambine hanno appena preparato una torta), scomposto i compiti per preparare un piano, e per evitare di dover ripetere il lavoro in un secondo momento. non voglio lavare i piano se ci sono oggetti da pulire e tutti i tipi di oggetti da pulire - probabilmente doverò di nuovo la parola più tardi. Magari metto tutti gli ingredienti prima di allontanarti; tutti i piatti nel lavandino; pulisci i contatori; lavare i piatti; e infine a pulire il pavimento. Esistono altri modi per eseguire questa attività, ma pensandola prima, mi aiuta a definire un piano non richiederanno rielaborazioni.

    Usa le attività quotidiane come esempi per sviluppare le tue capacità di decomposizione. Chissà, potrebbe anche renderti più efficiente in casa!

  • Il massimo comun divisore di due numeri interi è il numero più alto li divide entrambi equamente. Ad esempio, mcd(12, 18) = 6, mcd(−4, 14) = 2. Il modo più efficiente per calcolare MCD è utilizzare l'algoritmo euclideo. Scrittura un programma con una funzione per calcolare MCD per due numeri interi. Prova a eseguire la senza prima la ricorsione, ti aiuterà a capire in che modo l'algoritmo funziona.

    Definisci in modo esplicito le tue attività secondarie, ad esempio trova il codice per algoritmo; creare una funzione non ricorsiva per l'algoritmo; e così via. Qui è la nostra soluzione.

Esempio 5: puzzle matematici

Una delle potenzialità dell'informatica è quella di eseguire una ricerca forzata di a un problema. I tentativi e gli errori funzionano correttamente per alcuni problemi. In effetti, i computer possono essere particolarmente bravi in questi problemi. Considera quanto segue:

I cavalli costano 10 $, i maiali 3 $e i conigli costano solo 0, 50 $. Un agricoltore ne acquista 100 animali per 100 $. Quanti di ogni animale ha comprato? 

Esiste una soluzione molto semplice a questo problema. Verifica se riesci a trovare prima di dare un'occhiata ai nostri.

Eccone un altro da provare:
In quanti modi puoi organizzare 6 libri diversi, da sinistra a destra, su uno scaffale?

Questa volta ti forniremo solo la soluzione e ti consentiremo di scrivere il programma: 720.

Esempio 6: stringhe da considerare

Che cosa restituisce il seguente programma?

#include <iostream>
using namespace std;

int main() {
  string str1 = "To be or not to be, that is the question";
  string str2 = "only ";
  string str3 = str1.substr(6, 12);
  str1.insert(32, str2);
  str1.replace(str1.find("to be", 0), 5, "to jump");
  str1.erase(9, 4);
  cout << str1 << endl;
  for (int i = 0; i < str3.length(); i++)
    cout << str3[i]; cout << endl;
}

Clic qui per ricevere assistenza.

Esempio 7: Passaggi successivi con la decomposizione - Il tuo primo giorno di lavoro

Hai appena ottenuto un posto come venditore per l'azienda ExerShoe, specializzata in scarpe da ginnastica di fascia alta al prezzo di circa 225 $al paio. Il tuo capo ti ha concesso tre opzioni di compenso, che devi scegliere prima di iniziare il tuo primo giorno:

  1. Stipendio diretto di 600 € a settimana;
  2. Uno stipendio di 7,00 $l'ora più una commissione del 10% sulle vendite;
  3. Nessuno stipendio, ma commissioni del 20% e $20 per ogni paio di scarpe vendute

In qualità di programmatore C++ esperto, immagina di poter scrivere un programma per aiutare a decidere la migliore scelta per il compenso.

Un approccio comune nella decomposizione in un programma più ampio è creare una funzione principale che funge da schema per risolvere il problema. Poi, scriviamo le funzioni per svolgere ciascuna attività.

Ecco una prima tessera del programma principale:

  GetInput(WeeklySales);
  CalcMethod1(WeeklySales);
  CalcMethod2(WeeklySales);
  CalcMethod3(WeeklySales); 

Scopri se puoi implementare ognuna di queste funzioni, prima di dare un'occhiata ai nostri soluzione.

Esempio 8: cosa è disponibile dove?

Qual è l'output del seguente programma?

// scope.cpp, Maggie Johnson
// Description: A program to illustrate different scopes

#include <iostream>
using namespace std;

int a = 18;
int b = 6;

int function1(int a, int b) {
  return a - b;
}

int function2() {
  int c;
  c = a + b;
  return c;
}

int main() {
  int b = 12;
  int c = 0;
  a = function1(b, a);
  c = function2();
  cout << "a: " << a << " b: " << b << " c: " << c << endl;
}

Una volta trovata la risposta, consulta la versione commentata del codice qui.

Esempio 9: elaborazione dei file

L'elaborazione dei file in C++ viene eseguita utilizzando fstream. Per salvare file in un file, dichiarare un ofstream e aprirlo utilizzando il comando "out" . Seleziona questa opzione nell'esempio che segue.

// file.cpp, Maggie Johnson
// Description: An illustration of file processing
#include <fstream>
#include <iostream>
using namespace std;

int main() {
  char first_name[30], last_name[30]; int age;
  char file_name[20];
  // Collect the data.
  cout << "Enter First Name: "; cin >> first_name;
  cout << "Enter Last Name: "; cin >> last_name;
  cout << "Enter Age: "; cin >> age;
  cout << endl << "Enter the name of the file: "; cin >> file_name;

  // Create an ofstream called People, open the stream for output.
  ofstream People(file_name, ios::out);
  // Write the output to the stream.
  People << first_name << endl << last_name << endl << age << endl; return 0;
} 
  • Cerca di capire come aprire il file appena creato e di visualizzarlo i dati.Ecco la nostra soluzione.
  • Ora controlla se puoi modificare questo programma per consentire all'utente di inserire di dati utilizzando un loop. Vogliamo anche rileggere tutti i dati, registrare alla volta.Ecco la nostra soluzione.

Ora sei pronto a provare alcuni esercizi e progetti in autonomia.

Cosa significa essere un software engineer in Google

Leggi com'è lavorare in Google in questo sito web.

Esercizi e progetti

I seguenti esercizi saranno ti consentirà di esercitarti con il C++ di base. Non forniamo soluzioni a questi esercizi e progetti, perché vorremmo che lavorassi con altri studenti più avanti in questo corso.

  1. Il comune cricket da campo emette un suono in proporzione diretta alla temperatura attuale. Sommando 40 al numero di volte in cui un cricket suona in un minuto, per poi dividere quel valore per 4 ci dà la temperatura. Scrivi un programma che prenda come input il numero di cicalini in un minuto e stampa la temperatura attuale. Per un esempio,
    Number of chirps: 120
    The temperature is: 40.0 degrees. 
  2. Scrivi un programma che calcolerà il voto finale di un corso di programmazione che stai seguendo. Ecco lo schema di valutazione:
    Final grades will be based on the following:
    40% Assignments   15% Midterm Examination
    35% Final Examination
    10% Class Participation Grade 

    Il tuo programma dovrebbe chiedere all'utente i quattro punteggi dei compiti: voti finali e di sezione. Successivamente, viene calcolato e stampato il punteggio finale. Per eseguire i calcoli, calcola la media dei punteggi dei quattro compiti insieme e poi moltiplicarlo per 0,4 (40%). Quindi moltiplichiamo il punteggio di medio termine entro lo 0,15, il finale di 0,35 e il voto di partecipazione di 0,1. Poi somma tutti i risultati di queste moltiplicazioni.

    Utilizza le funzioni ovunque nel programma. Puoi creare una funzione per ottenere l'input passando come parametro la stringa da visualizzare in un incontro esplicativo. Ecco un esempio di esecuzione:

    Enter the score for the first assignment. 75
    Enter the score for the second assignment. 85
    Enter the score for the third assignment. 82
    Enter the score for the fourth assignment. 94
    Enter the score for the midterm. 81
    Enter the score for the final. 89
    Enter the score for the section grade. 100
    The final grade is: 86.9
  3. Man mano che i cronometri elettronici diventano più economici e precisi, non i dubbi sono sommersi da misurazioni del tempo incredibilmente accurate. Scrivi un programma che prende come input un periodo di tempo specificato in secondi e restituisce il numero di ore, minuti e secondi che rappresenta. Ad esempio,
    Number of seconds: 3662
    Hours: 1
    Minutes: 1
    Seconds: 2     
  4. Di seguito, esegui la decomposizione prima di scrivere il programma. Se possibile, utilizza le funzioni per creare programmi ben strutturati.

  5. Supponiamo di voler stampare un banner per:

    "BREEZE FREEZY FANNO CONgelare TRE ALBERI"

    Vogliamo che le lettere siano abbastanza grandi poiché questo è un banner:

    FFFFF
    F
    FFF
    F
    F
    
    EEEEE
    E
    EEE
    E
    EEEEE
    
    ecc.

    Essendo un buon decompositore di problemi, probabilmente avrai notato che invece di tutte le cout nella funzione principale, sarebbe molto più efficiente per metterle in funzioni. Quindi potremmo avere una "printE" funzione e "printZ" funzione e così via.

    Scrivere un programma con funzioni che creino il banner di una parola o di una frase con molte lettere ripetute. Ecco alcune possibilità:

    FREEZY BREEZE MAKES FLEAS
    SNEEZE TWEETLE BEETLE PADDLE BATTLE
    SIX SICK CHICKS KICK
    SUE SEWS SUE'S SOCKS
    BEN BENDS BIM'S BROOM 
  6. Ecco un "numero magico" problema: chiedi a un utente di inserire un numero numero la cui prima cifra è maggiore della sua ultima. Il programma annullerà il numero e sottrai l'inversione dal numero originale. Infine, invertire il numero risultante e aggiungerlo alla sua forma non inversa. Restituisci come output il come risultato finale. Il numero originale inserito dall'utente deve essere un numero intero (non tre caratteri). Pensa a come scrivere una funzione che prende un intero come input e restituisce il contrario. Esempio:
    input number: 901
    reverse it: 109
    subtract: 901 - 109 = 792
    reverse it: 297
    add: 297 + 792 = 1089   
  7. La legge impone ai produttori di prodotti alimentari di stabilire una data di scadenza sui loro prodotti, ma esiste una falla nella normativa: non richiede la data di scadenza in un determinato formato. Pertanto, può essere scritto in swahili pur rimanendo legale.

    Cugino terzo di Ralph Nader, Nadine è una spia di qualità alimentare autonome. Ha imparato che molti produttori di prodotti alimentari hanno iniziato a codificare le date di scadenza dei prodotti per impedire ai clienti di sapere cose del genere.

    Ma la codifica consente ai negozi di alimentari di stabilire le date di scadenza se, per qualche motivo, lo vogliano.

    Un metodo di codifica molto diffuso:

    • codifica i mesi da gennaio a dicembre come "A" alla "L"
    • codifica ogni cifra della data come "Q" alla "Z"
    • codifica l'anno come "A" alla "Z" Significato da 1 a 26, quindi aggiunta al 1995.

    Nadia ha trovato una pagnotta particolarmente discutibile con questa data: ARZM. Scrivi un programma per stabilire la data.

  8. Si tratta di un'analogia numerica con un famoso trucco con carta. Chiedi all'utente di accedere un numero di tre cifre. Pensa al numero come all'ABC (dove A, B e C sono i tre cifre del numero). Ora, trova i resti dei numeri formati ABC, BCA e CAB se divisi per 11. Chiameremo questi rimanenti X, Y, Z. Sommali come X+Y, Y+Z, Z+X. Se una delle somme è dispari, aumenta diminuiscilo di 11 (a seconda di quale operazione risulti in un numero positivo minore) maggiore di 20; nota che se la somma è 9, segnalalo e interrompi il processo). Infine, dividi ciascuna delle somme a metà. Le cifre risultanti sono A, B e C. Scrittura un programma che implementa questo algoritmo.

Applicazione: visualizzazione di musica con animazione

Gli ingegneri informatici creano un'ampia varietà di applicazioni spesso interessanti e innovative. In ogni modulo di questo corso presentiamo un'applicazione diversa che gli ingegneri progettata e implementata per aiutarti a comprendere tutte le diverse aree in cui gli ingegneri.

Ecco un argomento interessante creata per visualizzare la musica.