Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Mi sono deciso, ho installato su VS 2017 community il C++
Mi sembra che gli esempi che si trovano in rete sono di molteplici ambienti, e solitamente chi li divulga dimentica spesso di dire quale usa e quali librerie occorrono per farli funzionare.
Scusate se le domande vi sembrano banali o non correttamente poste, ma sto cercando di orizzontarmi.
Sono partito con una semplice consoleapplication.
1) std::cout in VS non è supportato? ci vuole una libreria?
nessun problema con printf che funziona egregiamente.
2) dove si può reperire l'elenco delle istruzioni usabili con le librerie "standard"?
3) ho cercato e trovato esempi per sapere di quanti elementi è composto un vettore, ma nessuno funziona su VS, le librerie che ho provato sono: <vector> <set> <stdio.h> <stdlib.h> <iostream> "stdafx.h"
vari tentativi:
Codice sorgente - presumibilmente C++
int v[]={ 10,23,42 };
int elementi;
elementi = v.size;
int elementi;
elementi = v.size();
int elementi =(int)v.size;
int elementi =(int)v.size();
l'errore segnalato è: l'espressione deve avere il tipo di classe
Il bello è che se vado con il cursore sopra al vettore v, l'intellisense candidamente dice v[3]
Ultima modifica effettuata da Carlo il 23/06/2018 alle 1:38
Andare a caso è il metodo peggiore per imparare il c/c++
Prendi un libro e studia dalla prima pagina, lascia stare google e internet almeno per ora
Impara le basi altrimenti farai solo confusione
Nel caso indicato v è un semplice vettore del C e non un oggetto quindi userai l'operatore sizeof
int elementi = sizeof(v)/sizeof(int)
Ultima modifica effettuata da nessuno il 23/06/2018 alle 7:43
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti (uno dei padri fondatori del moderno Calcolo delle probabilità) chiamava il gioco del Lotto Tassa sulla stupidità.
Andare a caso è il metodo peggiore per imparare il c/c++
Prendi un libro e studia dalla prima pagina, lascia stare google e internet almeno per ora
Impara le basi altrimenti farai solo confusione
Nel caso indicato v è un semplice vettore del C e non un oggetto quindi userai l'operatore sizeof
int elementi = sizeof(v)/sizeof(int)
Funziona, grazie anche della spigazione del perché.
La scelta di usare VS 2017 per il C++ è azzeccata?
Cosa consigli di leggere, che sia indirizzato a VS 2017?
Di cout che mi dici?
grazie.
Primo programma test, postato da Mattiz2001, e ampliato, tanto per provare
Codice sorgente - presumibilmente C++
//#include <iostream>
//#include <vector>
#include "stdafx.h"
//#include <stdio.h>
//#include <stdlib.h>
#include <set> // contiene system
usingnamespace std;
int funzione_sommadis(int vettore[])
{
int somma =0;
for(int k =0; k<20; k++)
{
if(!(vettore[k]% 2 == 0))
{
somma = somma + vettore[k];
}
}
return somma;
}
int funzione_sommapar(int vettore[])
{
int somma =0;
for(int k =0; k<20; k++)
{
if(vettore[k]% 2 == 0)
{
somma = somma + vettore[k];
}
}
return somma;
}
int main()
{
int somma;
int vettoreinput[]={ 1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0 };
//std::cout <<"La somma dei valori dispari e': "<<somma<<endl;
printf("Vettore: ");
for(int i =0; i<20; i++)
{
printf("%d", vettoreinput[i]);
}
printf("\nVettore: ");
for(int i =0; i<20; i++)
{
printf("%d,", vettoreinput[i]);
}
int elementi =sizeof(vettoreinput)/sizeof(int);
printf("\nElementi nel vettore : %d\n", elementi);
somma = funzione_sommadis(vettoreinput);
printf("\nLa somma dei valori dispari e': %d\n", somma);
somma = funzione_sommapar(vettoreinput);
printf("La somma dei valori pari e': %d\n", somma);
Visual Studio è prima di tutto un potente IDE con compilatore e debugger per C e C++.
Se intendi programmare con Windows è il migliore (soprattutto per il debugger). Se vorrai programmare in C/C++ con Linux non potrai utilizzarlo.
Fai attenzione alle differenze tra il C e il C++. Studia prima da qualche libro classico come il K&R e solo dopo passa alle classi/oggetti. Il C presuppone una buona conoscenza dei meccanismi di base di funzionamento di un computer (non dare per scontato che li conosci), il C++ presuppone che tu conosca la OOP e molto bene.
cout è un oggetto di classe ostream statico ed esiste ovviamente. Devi usare l'header
#include <iostream>
Puoi usare la dichiarazione
using namespace std;
per evitare di anteporre std::
Ti ripeto però che stai procedendo in maniera sbagliata. Sei troppo interessato al lato pratico per far partire del codice piuttosto che quella teorica molto importante per il C++
Ultima modifica effettuata da nessuno il 23/06/2018 alle 9:24
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti (uno dei padri fondatori del moderno Calcolo delle probabilità) chiamava il gioco del Lotto Tassa sulla stupidità.
Visual Studio è prima di tutto un potente IDE con compilatore e debugger per C e C++.
Se intendi programmare con Windows è il migliore (soprattutto per il debugger). Se vorrai programmare in C/C++ con Linux non potrai utilizzarlo.
Fai attenzione alle differenze tra il C e il C++. Studia prima da qualche libro classico come il K&R e solo dopo passa alle classi/oggetti. Il C presuppone una buona conoscenza dei meccanismi di base di funzionamento di un computer (non dare per scontato che li conosci), il C++ presuppone che tu conosca la OOP e molto bene.
cout è un oggetto di classe ostream statico ed esiste ovviamente. Devi usare l'header
#include <iostream>
Puoi usare la dichiarazione
using namespace std;
per evitare di anteporre std::
Ti ripeto però che stai procedendo in maniera sbagliata. Sei troppo interessato al lato pratico per far partire del codice piuttosto che quella teorica molto importante per il C++
Avevo provato ad includere iostream, ma in fase di compilazione ricevo l'errore:
'cout': identificatore non dichiarato
'endl': identificatore non dichiarato
std:: lo avevo messo quando ancora non usavo il namespace std;
Ancora non sto procedendo, sto vedendo se mi prende la voglia, la somiglianza con C# è ingannevole, ma utile.
Per la conoscenza a basso livello dei microprocessori, sicuramente mi devo aggiornare, anche se non parto da zero.
Ultima modifica effettuata da Carlo il 23/06/2018 alle 9:48
Quello che veramente serve e' capire bene come lavora la memoria e l'indirizzamento di essa.
A differenza del C#, la gestione della memoria non è automatica. Non esiste un garbage collettor (anche se in rete quanlche progetto mi pare ci sia).
Spesso, ti troverai ad utilizzare i puntatori che sono uno dei pilastri del linguaggio. Uno scoretto uso di essi è una delle principali cause di malfunzionamenti dei programmi.
Il K&R è un ottimo libro per iniziare. Se puoi vuoi approfondire bene il C++, uno dei più consigliati è il
C++. Linguaggio, libreria standard, principi di programmazione - Bjarne Stroustrup (Meglio in inglese se non ti è d'ostacolo la lingua).
Come IDE, ti consiglio anche di dare un'opportunita' a Code::Blocks.
Open source, multipiattaforma (Windows-Linux-Mac).
Tieni presente una cosa. Visual Studio e Code::Block hanno compilatori differenti, quindi per certe funzioni specifiche che non rientrano nelle librerie standard, potresti avere piccole differenze.
Quello che veramente serve e' capire bene come lavora la memoria e l'indirizzamento di essa.
A differenza del C#, la gestione della memoria non è automatica. Non esiste un garbage collettor (anche se in rete quanlche progetto mi pare ci sia).
Spesso, ti troverai ad utilizzare i puntatori che sono uno dei pilastri del linguaggio. Uno scoretto uso di essi è una delle principali cause di malfunzionamenti dei programmi.
Il K&R è un ottimo libro per iniziare. Se puoi vuoi approfondire bene il C++, uno dei più consigliati è il
C++. Linguaggio, libreria standard, principi di programmazione - Bjarne Stroustrup (Meglio in inglese se non ti è d'ostacolo la lingua).
Come IDE, ti consiglio anche di dare un'opportunita' a Code::Blocks.
Open source, multipiattaforma (Windows-Linux-Mac).
Tieni presente una cosa. Visual Studio e Code::Block hanno compilatori differenti, quindi per certe funzioni specifiche che non rientrano nelle librerie standard, potresti avere piccole differenze.