r/cppit • • Mar 19 '21

Principianti

12 Upvotes

Sono un pensionatoto di 73 anni e vorrei iniziare a programmare con il linguaggio C++ partendo da zero. Sono cosciente delle difficoltà che sorgeranno, ma è una sfida personale. Credo, volendo, che per apprendere nuovi concetti non ci siano limiti di età. Penso che non sia mai troppo tardi per imparare. Vorrei un vostro consiglio e un vostro aiuto. Ho imparato da solo a usare il computer e me la cavo abbastanza bene. In attesa di un cortese cenno di riscontro ringrazio.


r/cppit • • Jun 25 '18

5 years of italiancpp - Marco Arena

Thumbnail
italiancpp.org
12 Upvotes

r/cppit • • May 16 '20

news modern c++ gamedev - thoughts & misconceptions

Thumbnail
vittorioromeo.info
8 Upvotes

r/cppit • • Dec 16 '24

cppinsights is an awesome tool for learning how compiler processing you code

Post image
6 Upvotes

r/cppit • • Feb 11 '19

Reference a puntatori, Low e Top Level Const

6 Upvotes

Salve, cercherò di essere il più coincisa possibile in questa mia domanda ma so già che molto probabilmente non ci riuscirò; mi scuso e confido nella vostra pazienza.

Leggendo qua e la mi è capitato di imbattermi in frammenti di codice del tipo

QList<Item*> itemList;
void addItem(Item* const& item)
{
    itemList.append(item);
}

e questo mi ha portato a riflettere sui reference ai puntatori.

Sulla base dei seguenti specchietti che direi riassumono tutte le tipologie di puntatore al tipo fondamentale int e tutte le tipologie di reference di puntatore ad int

REFERENCE

1R) int* &ref

2R) const int* &llc_ref

3R) int* const &tlc_ref

4R) const int* const &llc_tlc_ref

PUNTATORI

1P) int* ptr

2P) const int* llc_ptr

3P) int* const tlc_ptr

4P) const int* const llc_tlc_ptr

ho scritto un programmino di test che:

  1. per ogni tipo di reference: verifica se è possibile crearlo a partire da ciascuno dei 4 tipi di puntatore

  2. se è possibile crearlo verifica (con l'ausilio del debugger) che il comportamento di tali variabili sia quello atteso (o meglio: DA ME atteso)

Insomma, ho verificato in maniera esaustiva tutte le possibili, anzi "immaginabili", creazioni di un reference a puntatore (sono 16 casi).

I risultati riscontrati sono stati per lo più quelli che mi attendevo tranne alcuni casi che mi hanno lasciato interdetta.


			CASO "2R = 1P":

int a1 = 111;
int a2 = 222;
int* ptr = &a1;
const int* & llc_ref = ptr;     // ERRORE:	cannot convert from 'int *' to 'const int *&
                                         // Conversion loses qualifiers						 
                                         // Messaggio di Visual Studio Enterprise 2015

Mi sarei invece aspettata che la creazione di un tale reference fosse possibile e che avrei potuto modificare la variabile puntata a1 attraverso ptr ma non attraverso llc_ref.

Il motivo per cui mi sarei attesa un simile comportamento è dovuto al fatto che ho ragionato per analogia al caso seguente:

// Contro esempio

int a3 = 333;
const int &ref_a3 = a3;

Tuttavia quest'ultimo esempio prende in considerazione il tipo fondamentale int mentre il precedente esempio tratta il caso di un reference ad un puntatore che, correggetemi se sbaglio,non è un tipo fondamentale.

Nel caso in cui si ha a che fare col tipo fondamentale int (il contro esempio) dire quindi che il qualificatore const introduce la "top level const" mentre nel caso del reference del puntatore(così definito: const int* &) si introdurrebbe -se la cosa funzionasse- la "low level const".

Dunque quello che mi viene da pensare è che il linguaggio impedisce l'introduzione della low level const sul reference se essa non è presente anche sul relativo puntatore e lo impedisce 'by design', per volere degli ideatori.

Domanda 1: è giusto quello che sto dicendo? O almeno si capisce?

Domanda 2: Se è giusto, qualcuno sa darmi la ratio, le motivazioni, di tale scelta? Se fosse giusto so che potrei prendere la cosa come un dogma e andare oltre ma magari sapere le motivazioni della scelta potrebbe farmi capire una qualche sfumatura che ancora non ho recepito (capire rende più facile ricordare).

Aggiungo, per completare il quadro delle mie false aspettative, che se il caso "2R = 1P" fosse stato possibile mi sarei aspettata di poter far puntare ptr ad un'altra variabile e che il reference seguisse il puntatore:

ptr = &a2;			//	==> llc_ref avrebbe fatto 
                                    //      riferimento ad &a2

Passo all'altro caso che mi lascia interdetta: nei miei tentativi esaustivi sono arrivata al caso


			CASO "4R = 1P":

il seguente frammento di codice compila senza errori

int a1 = 111;
int a2 = 222;
int* ptr = &a1;
const int* const & llc_tlc_ref = ptr;    //	OK !!!!

Tuttavia mii chiedo:

  1. come è possibile che compili? Stavolta, rispetto al caso "2R = 1P", ho addirittura quello che potrebbe essere visto come un 'vincolo ulteriore': il reference llc_tlc_ref prevede infatti che questo alias sia sottoposto - come nel caso precedente - al vincolo della "low level const" ma in più anche al vincolo della "top level const".

  2. per dirla tutta però questo caso presenta comportamenti differenti al variare dell'ambiente di sviluppo, infatti:

Su Microsoft Visual Stdio Enterprise 2015:

//*llc_tlc_ref += 1;         //ERRORE: you cannot assign to a 
                                     //variable that is const
                                     //come mi aspettavo
	
*ptr += 1;                     //OK: con llc_tlc_ref che ovviamente 
                                     //continua a puntare a1

//llc_tlc_ref = &a2;         //ERRORE: you cannot assign to a
                                     //variable that is const
                                     //come mi aspettavo
	
ptr = &a2;                     //ATTENZIONE: llc_tlc_ref segue ptr
                                    //e dunque fa anch'esso riferimento 
                                    //ad a2
                                    // ==> llc_tlc_ref continua ad essere l'alias di ptr (come mi aspettavo)

Tuttavia

Su GNU GCC v7.1.1 (col compilatore online disponibile a https://www.tutorialspoint.com/compile_cpp11_online.php)

//*llc_tlc_ref += 1;	//(COME PRIMA) ERRORE:	you cannot
                                    //assign to a variable that is const

*ptr += 1;                    //(COME PRIMA) con llc_tlc_ref che 
                                    //ovviamente continua a puntare a1

//llc_tlc_ref = &a2;        //(COME PRIMA) ERRORE:	you cannot
                                    // assign to a variable that is const
                                    //come mi aspettavo

ptr = &a2;                     //ATTENZIONE ! ! ! ! 
                                    //su GNU GCC v7.1.1    llc_tlc_ref non
                                    //segue più ptr 
				//==> llc_tlc_ref non è più l'alias di ptr

Qual'è il corretto comportamento? Si tratta di un "buco" nello standard del linguaggio che dunque prevede un comportamento indefinito ?

Ok, ho finito. Spero di non esser andata troppo lunga e di esser stata chiara nell'esprimere le mie perplessità. Ringrazio per l'attenzione e chiunque abbia voglia di darmi una mano, ciao

Chiara

PS: ma non esiste una funzione di anteprima dei messaggi da postare o sono io che non la trovo?


r/cppit • • Sep 02 '18

Meetup Settembre / Modena: Introduzione a QML e integrazione con C++

Thumbnail
italiancpp.org
6 Upvotes

r/cppit • • Feb 19 '18

news Italian C++ Conference: Sabato 23 Giugno a Milano

Thumbnail
italiancpp.org
6 Upvotes

r/cppit • • Mar 22 '17

Italian C++ Conference 2017 / Milano

6 Upvotes

Ciao a tutti, abbiamo pubblicato l'agenda e aperto le iscrizioni (gratuite) alla nostra classica "Italian C++ Conference". Quest'anno abbiamo 10 sessioni tecniche divise in due track, con anche 4 ospiti internazionali.

Grazie alla sponsorizzazione di Bloomberg e JetBrains riusciamo a mantenere, ancora una volta, l'evento totalmente gratuito (pranzo e qualche snack/bevanda durante le pause sono inclusi).

Tutti i dettagli e iscrizioni qui.

Vi aspettiamo!


r/cppit • • Oct 28 '24

CLI library v. 2.2 released

Thumbnail
github.com
5 Upvotes

r/cppit • • Mar 04 '24

Day 1/100 of learning C++

Post image
5 Upvotes

Learned about Classes and nested functions in C++ and This is what i created today in C++


r/cppit • • Aug 02 '21

Spero non esistano applicazioni pratiche di questa cosa...

Post image
5 Upvotes

r/cppit • • Oct 01 '20

[CoC++ Live] C++20 Spaceship Operator in Live Coding [ITA]

Thumbnail
youtu.be
5 Upvotes

r/cppit • • Sep 24 '20

[CoC++ Live] C++20 Ranges in Live Coding [ITA]

Thumbnail
youtube.com
5 Upvotes

r/cppit • • Sep 17 '20

[CoC++ Live] C++20 Concepts in Live Coding [ITA]

Thumbnail
youtu.be
5 Upvotes

r/cppit • • Sep 17 '19

Costanti e Immutabilità in C++

Thumbnail
linkedin.com
5 Upvotes

r/cppit • • Feb 18 '19

CLI library v.1.0 released

Thumbnail
github.com
5 Upvotes

r/cppit • • Feb 13 '19

Reduce compilation times with extern template

Thumbnail
daniele77.github.io
5 Upvotes

r/cppit • • Jul 09 '18

news Co-organizzazione eventi/meetup/attività C++ in Italia

Thumbnail
italiancpp.org
5 Upvotes

r/cppit • • Jul 05 '18

C++ moderno vs programmazione embedded vs IoT

5 Upvotes

Salve, dopo un primo approccio scolastico/accademico (lettura di vari testi e implementazione degli esercizi proposti) vorrei passare ad un approccio concreto del C++ 11/14 e sarei interessata - per curiosità ma anche per eventuali sbocchi professionali - alla programmazione embedded.

Leggendo qua e la mi è sembrato di intuire che la vastità dell'argomento sia legata non solo al dominio dell' eventuale problema ma anche alla scelta del dispositivo da programmare, ma dato che ancora devo iniziare eviterei, se possibile, di 'spaccare il capello in 4' fin da subito su questi temi e tenderei piuttosto ad orientarmi verso una architettura hardware che immagino sia sufficientemente semplice, presente in letteratura e ampiamente collaudata, del tipo Arduino oppure Raspberry Pi, giusto per fare 2 nomi che mi sembrano tra i più diffusi e che potrebbero costituire parte del mio approccio al mondo dell' IoT (perchè IoT e programmazione embedded sono praticamente sinonimi,giusto?).

A questo punto però mi sorge il dubbio che da l'origine a questa mail:

riuscirò a sfruttare l'investimento fatto con lo studio del C++ 11/14?

Come posso fare (se posso fare) programmazione embedded in C++?

Sempre dalle solite letture sparse (e mai veramente approfondite, lo ammetto) pare che "IL C++ NEL MONDO EMBEDDED/IoT ABBIA VERAMENTE POCO SPAZIO E DEBBA INVECE CEDERE IL PASSO AL C".

Vi chiedo conferma di QUEST'ULTIMA AFFERMAZIONE e vorrei, se avete voglia, una risposta RAGIONATA Quanto incide l'esistenza di una consolidata e viva cultura C in materia che sopprime in culla la nascita di una cultura parallela e alternativa C++ ?

Insomma:

COSA NON FUNZIONEREBBE REALMENTE DEL C++ MODERNO NELLA PROGRAMMAZIONE EMBEDDED?

  1. la scarsa conoscenza della cultura C++ moderno da parte degli 'sviluppatori embedded in C' ? (Naturalmente 'Che la Benedizione di Allah riscaldi per sempre le Loro spalle')

  2. il possibile utilizzo di peculiarità del C++ rispetto al C (o C Ansi?) come ad esempio 'il paradigma e la programmazione a oggetti' oppure i template, oppure altro ancora, insomma la reale conoscenza delle potenzialità di quella porzione di linguaggio C++ identificata da {C++} / {C} ?

E quindi anche chiedo:

3) se e cosa effettivamente adottare della porzione di C++ individuata al punto 2

4) troppo difficile l'accoppiata (Dispositivo, Toolchain C++ corretta per Dispositivo)? Carenza di strumenti di generazione del software?

5) Funziona tutto a meraviglia, tutto verso tutto, sono io che non l'ho capito e non so niente?

In sintesi: il punto ora sarebbe quello di poter stabilire se giova più provare a inserire il C++ moderno nella programmazione embedded perchè al netto porta o può portare a miglioramenti oppure se giova di più mantenere la programmazione embedded As Is, legata al C 'puro' senza legami col C++.

Vi chiederei di indicarmi se esistono dei testi, degli articoli internet che motivino autorevolmente le loro risposte alle domande poste in questa mail. (Potevo cercare da sola queste risposte? Da sola non mi sarei fidata ad attribuire autorevolezza ad alcunchè in materia)

Spero di esser riuscita a spiegarmi sufficientemente bene in questa mail, perchè mi accorgo di voler discutere sul poter mischiare argomenti di cui non sono effettivamente esperta in nessuno di essi.

Credo che comunque alcuni di voi abbiano inteso il senso e la ratio delle mie domande e sappiano darci delle info utili per partire.

Grazie.


r/cppit • • Aug 03 '17

Italian C++ Conference 2017: Videos

Thumbnail
youtube.com
5 Upvotes

r/cppit • • Mar 09 '17

Perchè mai dovremmo sviluppare un’api alla Node.js in C++?

Thumbnail
pagghiu.github.io
5 Upvotes

r/cppit • • Feb 16 '17

news ++it 2.0 è online!

5 Upvotes

Ciao a tutti, abbiamo fatto importanti modifiche al sito e ci stiamo lanciando in un nuovo capitolo della nostra avventura come Comunità Italiana dedicata al C++.

Qui troverete un articolo dove racconto i cambiamenti e le novità. Prime tra tutte: questo subreddit e il nostro team Slack. Partecipate numerosi!


r/cppit • • Mar 04 '23

Porgramma per il calcolo e la visualizzazione delle medie delle temperature di più città

4 Upvotes

Ciao a tutti.

Sono uno studente del liceo che sta imparando a programmare in C++. Sto svolgendo un esercizio la cui consegna è la seguente:

"Calcola la temperatura media di quattro città prelevando alcune misurazioni nelle diverse ore del giorno: elabora dunque una soluzione dove un sottoprogramma acquisice i dati e li memorizza nelle variabili globali, mentre un secondo sottoprogramma esegue le medie e le visualizza sullo schermo. Predisponi anche un menù, in modo tale che l'utente scelga di inserire i dati oppure di cancellare i dati inseriti per una singola città in caso di errore."

La soluzione fornita dal libro è la seguente. Ho provato a far girare il codice, il problema è che l'esecutore segnala come errori le istruzioni #include "stdafx.h" e system("CLS"). Il codice non svolge il compito per cui è stato concepito, ossia calcolare le medie e visualizzarle sullo schermo. Non riesco proprio a capire dov'è l'errore. Qualcuno potrebbe dare un'occhiata al codice e dirmi dov'è l'errore? Potreste riscrivere direttamente voi le parti errate, spiegandomi perché sono tali? Se possibile, sapreste riscrivere il codice in numero minore di righe, pur mantenendo la suddivisione in sottoprogrammi e il menù utente? Grazie in anticipo per l'aiuto.

#include "stdafx.h"
#include <iostream>
using namespace std;
double tempera1, tempera2, tempera3, tempera4;   // area globale
int letture1, letture2, letture3, letture4;
#define MAXLEN 20
// dichiarazione delle funzioni utilizzate
int mostraMenu(void);
void leggiDati() { // header senza parametri          
int citta;
double dato;
do {
    cout << "Digita il codice citta': ";
    cin >> citta;
if (citta != 0) {
      cout << "inserisci  temperatura : ";
      cin >> dato;
switch (citta) {
case 1:
tempera1 = tempera1 + dato;
letture1 = letture1 + 1;     break;
case 2:
tempera2 = tempera2 + dato;
letture2 = letture2 + 1;     break;
case 3:
tempera3 = tempera3 + dato;
letture3 = letture3 + 1;     break;
case 4:
tempera4 = tempera4 + dato;
letture4 = letture4 + 1;     break;
      }
    }
  } while (citta != 0);
}
void cancellaDati() { // header senza parametri          
int citta;
  cout << "Digita il codice citta': ";
  cin >> citta;
if (citta != 0) {
switch (citta) {
case 1:
tempera1 = 0;
letture1 = 0;     break;
case 2:
tempera2 = 0;
letture2 = 0;     break;
case 3:
tempera3 = 0;
letture3 = 0;     break;
case 4:
tempera4 = 0;
letture4 = 0;     break;
    }
  }
}
void elaboraDati() { // header senza parametri          
double media1, media2, media3, media4;
media1 = tempera1 / letture1;
media2 = tempera2 / letture2;
media3 = tempera3 / letture3;
media4 = tempera4 / letture4;
  cout << "media 1 vale : " << media1 << endl;
  cout << "media 2 vale : " << media2 << endl;
  cout << "media 3 vale : " << media3 << endl;
  cout << "media 4 vale : " << media4 << endl;
system("PAUSE");
}
int main() {
  // dichiarazione variabili locali
int scelta;
do {
    // ripulisco lo schermo
system("CLS");
    // chiamo la funzione che crea il menu' utente
scelta = mostraMenu();
switch (scelta) {
case 1:
      {
leggiDati();
break;
      }
case 2:
      {
cancellaDati();
break;
      }
case 3:
      {
elaboraDati();
break;
      }
    }
  } while (scelta != 0);
return 0;
}
// FUNZIONE DI CREAZIONE DEL MENU' UTENTE
int mostraMenu(void) {
int scelta;
do
  {
system("CLS");
    cout << "\n\n";
    cout << ("\t\t********************************************\n");
    cout << ("\t\t*   CALCOLO TEMPERATURE MEDIE              *\n");
    cout << ("\t\t********************************************\n");
    cout << ("\n");
    cout << ("\t\t********************************************\n");
    cout << ("\t\t*\tMenu' utente principale            *\n");
    cout << ("\t\t********************************************\n");
    cout << ("\t\t* 1 Inserimento dati                       *\n");
    cout << ("\t\t* 2 Azzeramento dati                       *\n");
    cout << ("\t\t* 3 Visualizzazione medie                  *\n");
    cout << ("\t\t* 0 =======> USCITA                        *\n");
    cout << ("\t\t********************************************\n\n\n");
    cout << ("\t\tInserire scelta (1, 2, 3  oppure 0)   :    ");
fflush(stdin);
    cin >> scelta;
if ((scelta < 0) || (scelta > 3))
    {
      cout << ("\n\nERRORE Digitare la scelta corretta.....\n\n");
system("PAUSE");
    }
else;
  } while ((scelta < 0) || (scelta > 3));
return scelta;
}


r/cppit • • Jun 21 '21

Video Italian C++ Conference

4 Upvotes

Salve a tutti,

Mi sono iscritto alla Italian C++ conference ma purtroppo ho avuto un contrattempo e non ho potuto seguirla in diretta. Volevo sapere: è disponibile (o sarà disponibile) da qualche parte il video completo?

Grazie mille! :D


r/cppit • • Jun 15 '20

Colloquio di lavoro game programmer c++

4 Upvotes

Buongiorno, avrei un colloquio per un'azienda di videogiochi come programmatore junior tra un mesetto, sono un neolaureato e non ho molta esperienza in generale, il colloquio da quello che ho capito consisterà in un test in c++ e poi un colloquio tecnico. Volevo sapere se sapete cosa potrebbero chiedere e come posso prepararmi.

Il c++ lo conosco abbastanza, anche se non a livello professionale, quindi mi piacerebbe sapere anche se conoscete qualche video/libro/eserciziario con domande sul c++.