Ragazzi visto che la sezione dedicata alla programmazione è un pò morta ho deciso di ravvivarla,
un pò.
Ciò che mi farebbe piacere è che tutti quelli interessati lascino un post in questa discussione.
Per chiunque di voi sia interessato, sarò a disposizione per qualsiasi chiarimento in ambito di programmazione, non voglio fare il guru ma mi piacerebbe che in questa sezione del forum si creasse un pò di sinergia su quella che sta diventando un impiego piuttosto che una forma mentis.
Per cui chiunque potrebbe essere di aiuto agli altri,
e tutti saranno aiutati dagli altri.
Intendo iniziare un vero e proprio master online, quindi se c'è qualcuno con qualche esigenza si faccia avanti, io do la mia disponibilità postando quotidianamente, e con costanza, cercando di rispondere alle esigenze di chiunque ne abbia bisogno.
Sarei molto contento se questa iniziativa venisse apprezzata anche da qualcun altro.
Vorrei organizzare veri e propri corsi online in questa sezione.
In fondo la volontà c'è basta solo organizzarsi.
:):):):):):)
Nononono DEVE rimanere primaditutto una forma mentis e poi al limite diventare anche un impiego... :)
Io sono a disposizione ma non so nulla quindi devi cominciare da zero con me :D
la volontà ci sarebbe anche da parte mia..ma mi manca il tempo..:rolleyes:
Ne riparliamo dopo che mi sono laureato! :cool:
Allora ragazzi io aspetterò un altro pò di tempo, per qualche ritardatario.
In ogni caso ho deciso di iniziare dagli albori sul c++.
ma sarò sempre disponibile per problematiche relative ad altri linguaggi.
Quindi anche se nessun altro posterà questa sezione verrà continuamente aggiornata.
Il corso partira probabilmente lunedi sera.
:D :D :D :D :D :D
Benissimo ;)
Ci simo...... dunque come precedentemente anticipato si parte da nozioni base sulla programmzazione in generale, per poi approfondire alcuni concetti sul c++.
Ci simo...... dunque come precedentemente anticipato si parte da nozioni base sulla programmzazione in generale, per poi approfondire alcuni concetti sul c++.
Chissà perché mi era sfuggita questa discussione...cmq pure io sono interessata a queste "lezioni" speriamo bene :)
Provando a dare una descrizione mnemonica della programmazione allora potrei ricondurvi su wikipedia oppure su altri dizionari, ma preferisco in questo contesto andarmene per concetti più che usare delle definizioni.
Per dare una semplice spiegazione del concetto di programmazione si può prendere in esempio un qualsiasi momento della vostra esistenza...
per esempio supponiamo di dover assemblare un pc....
programmare tale attività significa in realtà descrivere passo per passo tutte le operazioni da eseguire per fare in modo, che il pc assemblato funzioni.
L'insieme di tali descrizioni viene comunemente definito come algoritmo.
Un algoritmo rappresenta l'insieme di operazioni da eseguire per risolvere un determinato problema.
Un buon modo di risolvere un problema di grosso calibro è di scomporlo in tanti piccoli sottoproblemi dalla semplice risoluzione, questo tipo di approccio viene comunemente definito con il nome di programmazione strutturata.
Fin qui ok ;)
Ricapitolando abbiamo espresso il concetto di porgrammazione accennando la definizione di algoritmo.
Per essere più chiari sul concetto di algoritmo passiamo ad un tipo di approccio più pratico.
Prendiamo in considerazione un problema:
Lo scopo del nostro algoritmo dovrà essere la somma di due numeri.
In questo caso mi propongo per fare l'esempio di un algoritmo che risolva la npstra problematica.
Molti libri di testo spiegano gli algoritmi usando la pseudocodifica,io per rendere l'approccio più semplice mi limito a scrivere il mio banale algoritmo in italiano.
Per sommare due numeri, che per comodita chiamo numero1 e numero2 dovrò fare:
assegno al valore somma il valore di numero1
aggiungo al valore somma il valore di numero2
trasformando il tutto in pseudocodifica si avrà:
// dichiarazione variabili
numero1,numero2,somma := integer;
// assegnazione di un valore
somma := numero1;
// aggiungo all'attuale valore di somma
// di numero2:
somma := somma + numero2
// ora in somma ho il valore di numero1 + numero2
Spero con questre semplici nozioni di essere stato chiaro sul concetto di algoritmo.
Per capacitarmi della mia chiarezza chiedo alle persone interessate di scrivere un algoritmo per calcolare la somma di cinque numeri.
A disposizione per chiarimenti.
Ah dimenticavo, le righe startate con i caratteri // sono commenti.
Excuse me.
Se per qualcuno qualcosa dovesse risultare poco chiaro, si esponga e faccia domande.
Io sono a disposizione per qualsiasi tipo di chiarimento in merito a qualsiasi problematica sulla programmazione.
Sia sugli argomenti descritti in questa discussione, sia su problematiche diverse.
A disposizione per chiarimenti.
USARE LE VARIABILI
In genere un programmatore non viene valutato in base alla soluzione di un problema (anche se è sempre un bene che il problema venga risolto), ma in base al modo e ai mezzi che vengono usati per arrivare alla soluzione.
In realtà c'è un proverbio che dice "Tutte le strade portano a Roma", ed è vero, io per andare a Milano potrei scegliere di passare prima per Palermo.
Oppure potrei partire con cinque amici con cinque macchine diverse, a Milano ci arrivo comunque.
Un algoritmo per essere valido deve effettuare una stima del tempo di esecuzione calcolata in base alla complessità del problema.
Per effettuare un'addizione o una sottrazione risulta sicuramente più semplice che risolvere un'equazione differenziale.
Spesso e soprattutto oggi (come ho accennato nella mia introduzione) che i programmatori campano di programmazione non si guarda più alla pulizia del codice, oppure all'efficienza dell'algoritmo ma si guarda solamente alla funzionalità, cosa a mio avviso errata.
Un buon modo per rendere un programma leggibile, manutenibile ed efficiente e capire in che modo devono essere usate le variabili, come esse vanno dichiarate, e come devono essere assegnati i valori.
Un buon programmatore cerca sempre di usare il miglior numero di variabili possibile in quanto ogni variabile occupa una parte di memoria.
:):):):):)
TIPI DI VARIABILI
Si possono avere diversi tipi di variabili, ognuno dei quali ha uno scopo e una valenza ben preciso.
In C++ abbiamo i seguenti tipi:
bool ==> rappresenta i tipi booleani (vero/falso)
int ==> rappresenta i numeri interi
char ==> rappresenta i caratteri
wchar_t ==> rappresenta i caratteri unicode estesi non rappresentabili sulla tavola ascii
float ==> rappresenta i reali a singola precisione
double ==> rappresenta i reali a doppia precisione
enum ==> rappresenta un tipo enumerato
void ==> null.
Per qualsiasi domanda in merito ai tipi di variabile io rimango a disposizione, in quanto ritengo queste nozioni importantissime ai fini di una programmazione pulita ed efficiente.
Qesta discussione è molto interessante ho fatto un corso per progammatori ma devo dire che in sei mesi ho appreso praticamente nulla ti seguo e ti faccio i miei complimenti :)
ehehhe bravo bravo... continua così e sappi che mi dovrai aiutare per il progetto di algoritmi ;):D
Oggi il mio grande amico Glide ha dato un utile tocco tecnico alla corrente discussione, ringrazio Glide e soprattutto ringrazio tutti quelli che come voi stanno dando un pò di importanza a quello che io sto facendo.
Questo per me oltre ad essere un ottimo antistress (ed io ne accumulo abbastanza), è anche un buon modo per rivivere e far riaffiorare concetti acquisiti molto tempo fa.
Per cui ripeto, rimango a disposizione di tutti quelli che ne hanno bisogno.
Per quanto riguarda af624726 sappi che non solo potrai contare su qualche mia consulenza, ma se spulcio un pò i miei residui bellici (universitari) dovrei avere anche del materiale che potrebbe esserti utile.
Grazie ancora a tutti.
:););):);)
Questo messaggio è stato aggiornato da marcoff il 26/10/2006 alle ore 20:58:07
IL TIPO DI VARIABILE.
Abbiamo accennato finora quali siano i tipi di variabili comunemente usati in un linguaggio di programmazione come il c++.
Ora vediamo di analizzare le peculiarità di ogni tipo,
un pò più nel dettaglio.
In un linguaggio come il c++ ogni variabile che viene utilizzata è caratterizzata da un type (tipo).
Il tipo descrive in modo categorigo quale è la modalità di memorizzazione della variabile e quali sono le operazioni possibili su di essa.
*-- IL TIPO BOOL --*
Il tipo bool occupa un byte, e viene usato per rappresentare valori quali true e false.
Talvolta esso viene trattato come un tipo particolare di intero in quanto può assumere i valori 0 e 1, dove
0 = false e 1 = true.
Esempio:
//dichiarazione variabile;
bool var;
//inizializzazione della variabile
var = false;
//uso della variabile
if (a > 2)
var = true;
analogamente:
//dichiarazione variabile;
bool var;
//inizializzazione della variabile
var = 0;
//uso della variabile
if (a > 2)
var = 1;
*-- IL TIPO INT --*
Il tipo int (intero) occupa dai 2 ai 4 byte, e viene usato per rappresentare numeri interi
Il tipo intero è un type un po' più articolato per il linguaggio di programmazione in quanto la sua dichiarazione può essere variabile a seconda dell'uso che se ne vuol fare
Nel linguaggio c++ per rappresentare il tipo intero si usano le seguenti parole chiave con relative combinazioni e per ognuna di esse cambia il tipo di dichiarazione.
LONG INT
occupa 32 bit e può rappresentare un range variabile da -2147483648 a 2147483647
SHORT INT
occupa 16 bit e può rappresentare un range variabile da -32768 a 32767
UNSIGNED LONG
occupa 32 bit e può rappresentare un range da da 0 a 4294976295
CHAR
occupa 8 bit e può rappresentare un range da -128 a 127
UNSIGNED CHAR
occupa 8 bit e può rappresentare un range da 0 a 255
E' facile notare che con la clausola UNSIGNED una variabile può assumere solo valori positivi.
avevo sbagliato discussione, è questa qiella che mi interessa, anche perchè più recente.
non riprende più?
Marcoff io stavo seguendo questo corso, quando hai un po' di tempo continualo please ;)
CitazioneOggi il mio grande amico Glide ha dato un utile tocco tecnico alla corrente discussione, ringrazio Glide e soprattutto ringrazio tutti quelli che come voi stanno dando un pò di importanza a quello che io sto facendo.
Questo per me oltre ad essere un ottimo antistress (ed io ne accumulo abbastanza), è anche un buon modo per rivivere e far riaffiorare concetti acquisiti molto tempo fa.
Per cui ripeto, rimango a disposizione di tutti quelli che ne hanno bisogno.
Per quanto riguarda af624726 sappi che non solo potrai contare su qualche mia consulenza, ma se spulcio un pò i miei residui bellici (universitari) dovrei avere anche del materiale che potrebbe esserti utile.
Grazie ancora a tutti.
:););):);)
Questo messaggio è stato aggiornato da marcoff il 26/10/2006 alle ore 20:58:07
vai moooooolto bene :D :);):h
Ragazzi mi sono assentato un pò da questa sezione, sono stato un pò intasato, ma non intendo sospenderla anche perchè mi fa piacere portare avanti la discussione.
Gradisco molto il vostro interessamento, non so se stasera faccio in tempo, vado avanti, altrimenti rimando a domani.
Scusatemi per l'interruzione.:(:(:(:(
PS: in ogni caso avevo chiesto agli interessati di scrivere un esempio di algoritmo per la somma di numeri,
ma non c'è stata risposta. :(:(:(
Questo messaggio è stato aggiornato da marcoff il 13/11/2006 alle ore 20:54:04
numero1,numero2,numero3,numero4,numero5,somma := integer;
somma := numero1;
somma := somma + numero2;
somma := somma + numero3;
somma := somma + numero4;
somma := somma + numero5;
//oppure in modo più compatto
numero1,numero2,numero3,numero4,numero5,somma := integer;
somma := numero1+numero2+numero3+numero4+numero5;
*-- IL TIPO DOUBLE -- *
Il tipo double rappresenta dati numerici in doppia precisione, con doppia precisione si intende che possono essere rappresentati valori per un totale di 64 bit
(8 byte), con 15 cifre decimali.
Il range rappresentabile per il tipo double varia da un minimo negativo pari a -308 a un picco positivo pari a 1.7e.
Aggiungendo il modificatore di tipo long
"long double", si ottiene una rappresentazione in virgola mobile in doppia precisione estesa, rappresentando quindi un range a partire da un picco minimo pari a -4932 ad un picco massimo pari a 1.2e.
Un esempio di uso del tipo double è il seguente:
// dichiarazione variabili
double var;
int numero;
//operazione
var = numero / 2;
in questo caso se il numero è pari il double assumerà un valore le cui cifre decimali saranno valorizzate a 0, mentre se dispari i decimali verrano valorizzati con le cifre significative per il dato contenuto in numero.
Avendo già esposto le caratteristiche del tipo double sul tipo float non rimane molto da dire.
*-- IL TIPO FLOAT --*
Il tipo float rappresenta valori in virgola mobile in singola precisione, per singola precisione si intende che sono rappresentabili valori per un totale di 32 bit
(4 byte) precisamente la metà del tipo double.
Il float rappresenta un massimo di 7 cifre decimali.
Per il tipo float si ha un range di rappresentazione che va da un minimo pari a -38 ad un massimo pari a 3.4e.
:):):)
In genere il criterio di sclta per dichiarare una variabile double o float si basa sull'entità dei dati da gestire.
*-- IL TIPO CHAR --*
Il tipo char rappresenta caratteri o interi di 8 bit
(1 byte).
Per esempio:
char a;
a = "g";
Con il tipo char sono ammessi i modificatori di tipo unsigned e signed:
signed: caratteri da -128 a 127
unsigned: caratteri da 0 a 127.
Per fare un esempio sto implementando un piccolo programmino per il calcolo dei caratteri del codice ascii.
A breve posterò.
Ecco il file in allegato.
:D :D :D(https://www.forumzone.it/images/misc/attach_legacy.gif) (https://www.forumzone.it/attachment_legacy.php?dir=marcoff&file=2006111522452_ASCII.zip)
Edit:
Dimenticavo per la rappresentazione ascii esiste un tipo di variabile wchar_t, con un dato di questo tipo è possibile rappresentare caratteri estesi, cioè per rappresentarre i caratteri internazionali.
E' stato introdotto da poco nello standard ANSI-C++, infatti non tutti i compilatori lo accettano.
:D :D :D :D
Questo messaggio è stato aggiornato da marcoff il 15/11/2006 alle ore 22:48:56
Ho dato un occhiata al programmino che hai pubblicato,.... bestiale....
Potresti spiegarmi come si fa a referenziare il tipo wchar_t ho modificato il tuo programma sostituendo la variabile
unsigned char carattere con
unsigned wchar_t carattere ma ottengo un errore di compilazione.
Quanti linguaggi di programmazione conosci, solo il c++?
:h :h :h :h :h
Molto probabilmente stai usando un compilatore un pò obsoleto, è per questo che ti da errori di compilazione referenziando il tipo wchar_t, comunque si referenzia come un semplice tipo char, come tu hai fatto.
Esempio:
wcahr_t variabile;
Prova un pò ad usare questo compilatore:
http://download.html.it/software/vedi/1903/bloodshed-devc/
Comunque conosco diversi linguaggi, Visual Basic, Java, Cobol, Pascal, PhP, Pyton, C, C++.
A disposizione per chiarimenti.
hai ragione il mio compilatore era un pò vecchiotto, però con questo funziona.
Andiamo avanti con i tutorial?
Quando si prosegue?
vorrei sapere qualcosa di + sull'uso delle stringhe...:):):)
Sono contento che hai risolto la questione del wchar_t.
Per quanto riguarda l'uso delle stringhe affronteremo il discorso a tempo debito, in quanto è un argomento che va curato molto dettagliatamente.
Dai tempo al tempo.
Se ti va puoi seguire questo corso che avra sempre un seguito, ti consiglio però di non inserire OT, per non creare confusione, se hai domande in merito ad argomenti non ancora trattati apri pure un nuovo topic.
Sono contento del tuo interessamento, anche perchè a quanto pare questo corso all'interno del forum non è molto apprezzato.
Rimango comunque dell'idea che chi mi ama mi segue.:)
Allora che ne dite continuiamo?;);)
Ciao finito il corso?
ciao marcoff io ho un problema con una semplice applicazione client server in C..potresti aiutarmi?:o :o
certo dimmi tutto....:D
Ok marcoff ti ringrazio per qualsiai consiglio tu possa darmi! :)
CitazioneCiao marcoff,ti ringrazio per la disponibilità fin da ora! Lo scenario del mio problema è questo: ho 2 buffer uno per memorizzare il contenuto di un file e uno che contiene la parola da ricercare all'interno del file.Devo ritornare il numero di occorrenze della parola al client...il mio problema è la funzione strstr (visto che il prof vuole che io faccia questo controllo solo mediante questa funzione)..potresti darmi delle spiegazioni su come utilizzare questa funzione? Strstr punta all'inizio del buffer qualora la parola è nel file?perchè sto scaricando diverse slide ma ho trovato in alcune di esse discrepanze....Ti ringrazio anche se non hai tempo da dedicarmi spero di non averti annoiato troppo!!!!
Allora per quanto riguarda la funzione strstr().
La funzione strstr serve per cercare la prima occorreza di una stringa all'interno di un'altra, operazione che viene detta pattern matching.
Se la stringa str_da_cercare viene trovata la funzione restituisce la parte di stringa str_dove_cerc che segue la prima occorrenza trovata. Qualora str_da_cercare non venga trovata la nostra funzione restituirà FALSE.
Per quanto riguarda la sintassi il prototipo è questo:
strstr(str_dove_cerc, str_da_cercare);
Quindi nel tuo caso tu devi leggere il file fino a fine file, e devi richiamare la funzione ripetutamente, ricercando sempre str_da_cercare nella stringa restituita dalla funzione strstr.
Spero di essere stato chiaro, ora però ti faccio un esempio:
stringa = "nancy82@strstr.it"
str_da_ricerca = "@"
strstr(stringa,str_da_ricerca);
In questo caso la funzione strstr restituirà la stringa "strstr.it", nel caso in cui la stringa "@" non fosse stata trovata la funzione avrebbe restituito false.
:)
Per quanto riguarda invece il risultato da inviare al client puoi usare un contatore, richiami la funzione strstr, passandole come parm la stringa che ti viene restituita until strstr = false.
Puoi usare la socket di windows per comunicare con il client.;)
Questo messaggio è stato aggiornato da marcoff il 26/09/2007 alle ore 09:51:25
Ti ringrazio adesso modifico un pò il mio programma..con la speranza che sia la volta buona!L'esame è dopodomani!
Per l'avvio dell'applicazione a dire il vero il prof vuole che mando gli eseguibili dalla shell di linux..l'esame è sulle reti di calcolatori
Grazie ancora!:o
di niente.
Io continuo a leggerti,anke se non ho molto tempo a disposizione
ciao e grazie
ciao a tutti sono un nuovo utente con la passione dell'informatica,anche non essendo per niente a conoscenza di programmazioni ecc,ecc...ma consigliatomi da un amico,ho deciso di intraprendere questa lettura,e di frequentare questo "corso online di programmazione",è molto interessante anche se ormai da mesi non si ripropone una lezione,ne approfitto per invitare marcoff a continuare,anche perchè per come si esprime oltre che ad essere molto chiaro è anche bello da leggere...
:okduo:
Io ci sono.... chiedi pure se vuoi..:blade:
ciao marcoff
non scrivi più??
faccio c++ a scuola e mi interessa leggere questa discussione ho modo di apprendere alcune cose che magari a scuola non mi vengono spiegate...
se hai tempo ti chiedo un paio di cose sul codice del programma ASCCI.....
1) cin.get() se ho capito bene quando schiacci invio va avanti...(a parte essere geniale sta cosa :D) puoi spiegarmi un po' come funziona sta cosa...
esempio...se tra parentesi metto 'a' il programma passa alla "pagina successiva quando schiaccio a??
2) vedo che usi iostream.h
questione dibattuta anche a scuola....visual c++ 2008 non accetta "iostream.h" ma vuole una cosa di questo genere
#include <iostream>
using namespace std;
//qui tutto il resto del programma
come mai queste differenze?...visto che a scuola usiamo visual c++ 6.0 (del 98 ma ancora solido come programma :D) che accetta la iostream.h
ciao grazie della discussione...ottima!:okduo::beerbeer:
p.s. geniale...non avevo mai pensato di creare una funzione per la spaziatura...
Citazione di: max10891;156102ciao marcoff
non scrivi più??
Ho segnalato la discussione al diretto interessato. Attendiamo...:)
Ciao ciao
sul programma ASCII puoi chiedermi tutto quello che vuoi.....:okduo:
per quanto riguarda invece la funzione cin.get() quello che c'è da dire è ben poco, il problema è che con gli operatori di estrazione >> e << si viene effettuato un controllo sui dati di input.
Mi spiego meglio:
se tu per esempio hai bisogno di prendere in input una stringa, un char, o un numero, con tali operatori l'immissione si interromperebbe al primo carattere non valido.
Per esempio se come stringa passi un cognome del tipo De Amicis usando l'istruzione cin>>Cognome riusciresti a memorizzare solo il De in quanto il blank risulterebbe come carattere terminatore.
Per quanto riguarda invece le funzioni gets o cin.get() l'unico carattere terminatore è il new line, cioè invio.
Con questo penso di aver risposto anche alla tua osservazione sul cin.get('a');
Per il resto chiedi tutto quello che vuoi, sono qui per questo.