-->
  • Home
    • WorldInformatic's history
  • Operative Systems
    • Mac
    • Windows
  • Some guide
  • Programming language
    • C
    • Java
    • HTML
  • Smartphone
    • Apple iOS
    • Android
  • Games
    • Smartphone Games
    • Web Games
    • PC e Console
  • News
    • Apple News
    • Android/Google News
  • Enjoy!
  • Contact us

C: corso completo

- Parte 01: Introduzione
- Parte 02: Fasi, variabili, operatori e software
- Parte 03: Tipi di dato, direttive e 1° programma
- Parte 04: Tipi di formato, printf e scanf
- Parte 05: Istruzioni condizionali e di iterazione
- Parte 06: Funzioni e progetti su più file
- Parte 07: Puntatori e passaggio dei parametri
- Parte 08: Array, stringhe e strutture
- Parte 09: Gestione file: file di testo
- Parte 10: Gestione file: file binari
- Parte 11: Allocazione dinamica della memoria
- Parte 12: Creare ed utilizzare le liste nel C
- Parte 13: Ordinamento di array e strutture
- Parte 14: Esercizi sul linguaggio C

C: corso completo

26 febbraio 2013

Immagine
In questa ottava parte del corso completo di C tenuto su questo sito, vi parlo di array, stringhe e strutture: pilastri fondamentali del C.


ARRAY DI INTERI
Un array è una collezione finita di n variabili dello stesso tipo, ognuna identificata da un indice, che va da 0 a n-1. Si possono definire due dimensione per ogni array:
  • La dimensione fisica (n), che è decisa in maniera statica al momento della definizione della variabile di tipo array; quindi un array è formato da queste n celle di memoria.
  • Non è però detto che ognuna di queste cella debba per forza essere occupata, perciò la dimensione logica di un array può essere inferiore alla sua dimensione fisica.

Per predisporre spazio in memoria per un array di interi, si può agire in diversi modi:
1) int arrayNum[4]; 
2) int* arrayNum; (Questa notazione la vedremo più avanti)
Per riempire un array si può procedere così:
1) int arrayNum[] = {1,2,3,4};
2) Dopo la dichiarazione, scrivere arrayNum[0] = 1; arrayNum[1] = 2; ecc...
LE STRINGHE (ARRAY DI CHAR)
Il tipo stringa non esiste in C, e questa è una grave mancanza, ma si può ovviare a questa mancanza costruendosi da soli questo tipo di formato, utilizzando gli array di caratteri. Le stringhe si possono definire e riempire in questo modo:
1) char nome[20];
2) char *nome;   nome = "Matteo";
3) char nome[] = "Matteo";
4) Dopo la dichiarazione, nome[0] = "M"; nome[1] = "a"; ecc...
E' importantissimo dire che qualsiasi array di caratteri (stringa) deve finire con uno speciale simbolo terminatore: " \0 ", che denota appunto la fine della stringa, e se viene omesso provoca tanti errori; se per esempio voglio inserire in una stringa il nome "Mario", che è composto da 5 lettere, nella dichiarazione dovrò scrivere:
char nome[6]; 
In sostanza, se riempio la mia stringa nome con "Mario", ho questa situazione:
nome[0] = "M";
nome[1] = "a";
nome[2] = "r";
nome[3] = "i";
nome[4] = "o";
nome[5] = "\0";
Con gli array si possono fare tantissime cose molto utili per i nostri programmi; adesso vi mostro un esempio di utilizzo degli array:
Immagine
Se lanciato, questo è il risultato:
Immagine
Gli array di interi si possono confrontare con gli operatori "==, <=, >=, <, >, !=", mentre le stringhe ovviamente no; per confrontare le stringhe, o si procede scandendo ad uno ad uno ogni elemento dell'array, o si utilizzano certe funzioni già messe a disposizione dalle librerie del C. La libreria in questione è la <string.h>, che comprende tra le altre funzioni:
  • strlen(const char*): ritorna la lunghezza della stringa;
  • strcmp(const char*, const char*): ritorna 0 se le stringhe sono uguali, un valore >0 se la prima stringa segue la seconda, o un valore <0 se la prima stringa precede la seconda;
  • strcpy(char*, const char*); copia una stringa in un'altra.
STRUTTURE
Una struttura è una collezione finita di dati anche eterogenei (non necessariamente dello stesso tipo), ognuna identificata da un nome; si definisce così:
Immagine
Faccio adesso un esempio di come utilizzare strutture per creare insiemi di dati differenti organizzati bene, e accessibili in modo estremamente facile; una struttura può essere assegnata ad un'altra, e le strutture vengono sempre passate per valore. Però prima di fare l'esempio, voglio brevemente introdurre il "typedef", che semplifica e velocizza la gestione delle strutture; invece di assegnare un'etichetta alla struttura, si scrive typedef struct { .. } ecc..
Immagine
Se viene lanciato con i seguenti dati, il risultato è questo:
Immagine
Ovviamente la potenzialità delle strutture la si vede quando si creano array di strutture, senza ad esempio sapere la mole di registrazioni che bisognerà effettuare; ma questi discorsi li riprenderemo quando parleremo di allocazione dinamica della memoria. Ora vi faccio solo vedere brevemente come dichiarare un array di strutture non dinamico, e poi esercitatevi voi ad utilizzarli al meglio! (Supponiamo che la struct si chiami persona).
persona arrayPersone[4];      Consiglio: per il nome del primo, arrayPersone[0].nome ecc...

Vi lascio qui il codice dell'esercizio sugli array e sulle strutture:
array_e_strutture.zip
File Size: 2 kb
File Type: zip
Download File

Se volete esercitarvi con degli esercizi, andate qui: 
  • Esercizi sugli array;
  • Esercizi sulle stringhe;
  • Esercizi sulle strutture.

                                                                                                                             Pumo
Per adesso è tutto,
Pumo Matteo


Tweet
    Condividi



comments powered by Disqus

Social
Aiutate a diffondere il sito, cliccando qui




Segui @WInformatic

Autore
Salve a tutti!
Mi chiamo Pumo Matteo.
Per saperne di più: Biografia


Categorie
  • -> Mac
  • -> Windows
  • -> Apple iOS
  • -> Android
  • -> Programmazione
  • -> Guide varie
  • -> Hardware
  • -> Games
  • -> News



Social Network

Follow us on Social Network:

Topics

Windows
Smartphone games

If you want, make a donation

TO CONTACT US, USING THE PAGE IN THE TOP

Author

Immagine
I'm Matteo Pumo. University of Bologna - Faculty of computer Engeneering.
- My Biography

Italian version of site


Site made by Pumo Matteo © Copyright 2013 - Bologna, Italy - All rights reserved - It's prohibit all reproduction form, partial or total, of materials.