Cada llenguatge de programació té les seves pròpies regles d'escriptura: com se separen les instruccions, com s'agrupen blocs de codi, com es nomenen les coses. A aquestes regles les anomenem, en conjunt, sintaxi. En aquesta lliçó aprendràs les regles de sintaxi fonamentals del C# —majúscules i minúscules, punt i coma, claus, comentaris, convencions de nomenclatura i identificadors vàlids— que faràs servir en absolutament tot el codi que escriguis a partir d'ara. Dominar bé aquestes regles t'estalviarà bona part dels errors de compilació que solen frustrar qui comença a programar.

Contingut

  1. Sensibilitat a majúscules i minúscules
  2. Punt i coma, claus i blocs de codi
  3. Comentaris: //, /* */ i ///
  4. Convencions de nomenclatura: PascalCase i camelCase
  5. Estructura general d'un fitxer C#
  6. Identificadors vàlids

Sensibilitat a majúscules i minúscules

El C# és un llenguatge case-sensitive (sensible a majúscules i minúscules). Això significa que laMevaVariable, LaMevaVariable i LAMEVAVARIABLE es consideren tres noms diferents pel compilador. Això afecta tot: noms de variables, de mètodes, de classes, i també les mateixes paraules clau del llenguatge.

Console.WriteLine("Aixo compila correctament");
// console.writeline("Aixo NO compila"); // 'console' amb minuscula no existeix

Aquest detall és molt important perquè és una font habitual d'errors per a qui ve d'altres contextos (per exemple, alguns sistemes de fitxers o llenguatges que no distingeixen majúscules de minúscules). En C#, sempre cal respectar exactament les majúscules i minúscules de cada paraula clau i de cada nom que facis servir.

Punt i coma, claus i blocs de codi

El punt i coma ;

En C#, (gairebé) tota instrucció acaba amb un punt i coma ;. El punt i coma indica al compilador "aquí acaba aquesta instrucció, la següent és independent":

Console.WriteLine("Primera instruccio");
Console.WriteLine("Segona instruccio");

Oblidar el punt i coma és, probablement, l'error de sintaxi més comú en començar a programar en C#. El compilador t'avisarà amb un missatge d'error indicant la línia exacta.

Les claus { } i els blocs de codi

Les claus delimiten blocs de codi: un conjunt d'instruccions que es tracten com una unitat. Ja hem vist a la lliçó anterior que un espai de noms, una classe i un mètode són, cadascun, un bloc delimitat per claus. El mateix passarà, més endavant en el curs, amb els blocs de les estructures de control (if, bucles, etc. — Mòdul 2).

{
    // Tot el que hi ha aqui dins pertany a aquest bloc
    Console.WriteLine("Dins del bloc");
}

Una convenció molt estesa (i la que seguirem en aquest curs) és la indentació: sagnar (afegir espais o tabulacions) el codi que és dins d'un bloc, perquè sigui visualment evident què pertany a què. El C# no obliga a indentar el codi perquè compili —a diferència de Python, per exemple— però un codi ben indentat és molt més fàcil de llegir i mantenir.

// Codi correctament indentat (recomanat)
if (true)
{
    Console.WriteLine("Bloc indentat correctament");
}

// Codi sense indentar (compila igual, pero es dificil de llegir)
if (true) {
Console.WriteLine("Bloc sense indentar");
}

No et preocupis encara pel significat de l'if; l'estudiarem amb detall al Mòdul 2. Aquí només ens interessa la forma, no el contingut.

Comentaris: //, /* */ i ///

Els comentaris són fragments de text que el compilador ignora completament: serveixen únicament perquè les persones que llegeixin el codi (inclòs tu mateix, en el futur) entenguin què fa o per què s'ha fet d'una determinada manera. El C# ofereix tres tipus:

Tipus Sintaxi Ús habitual
Comentari d'una línia // text Aclariments breus al costat d'una línia de codi
Comentari de bloc /* text */ Comentaris que ocupen diverses línies, o desactivar temporalment un fragment de codi
Comentari de documentació /// text Documentar classes i mètodes de manera que eines externes (com el mateix editor) puguin mostrar aquesta documentació com a ajuda

Comentari d'una línia

// Aquest es un comentari d'una linia
Console.WriteLine("Hola"); // Tambe es pot comentar al final d'una linia de codi

Comentari de bloc

/*
   Aquest comentari ocupa
   diverses linies de text.
   Molt util per a explicacions llargues.
*/
Console.WriteLine("BiblioTech");

Comentari de documentació

/// <summary>
/// Mostra un missatge de benvinguda al sistema BiblioTech.
/// </summary>
Console.WriteLine("Benvingut a BiblioTech!");

Els comentaris de documentació (///) fan servir una sintaxi especial basada en etiquetes XML, com <summary>. Encara que en aquest mòdul no escrivim encara mètodes ni classes pròpies (això arriba al Mòdul 3), és important que reconeguis aquesta sintaxi: molts editors mostren automàticament el contingut d'aquests comentaris com a ajuda emergent quan uses un mètode, i en projectes professionals és una pràctica molt valorada documentar així el codi públic.

Convencions de nomenclatura: PascalCase i camelCase

Una convenció de nomenclatura és un acord (no una regla obligatòria del compilador) sobre com escriure els noms de les coses al codi, perquè sigui coherent i fàcil de llegir per a qualsevol persona familiaritzada amb el llenguatge. En C#, la comunitat i el mateix equip de .NET segueixen, de forma molt consistent, aquestes dues convencions:

Convenció Regla Exemple S'usa per a
PascalCase Cada paraula comença amb majúscula, sense separadors TitolLlibre, NombrePagines, Program Noms de classes, mètodes, propietats
camelCase La primera paraula en minúscula, les següents amb majúscula inicial titolLlibre, nombrePagines Noms de variables locals i paràmetres

Exemple comparant tots dos estils sobre dades de BiblioTech:

// camelCase: variables locals
string titolLlibre = "Cent anys de solitud";
int numeroPagines = 471;
bool estaDisponible = true;

// PascalCase: s'usara per a classes i metodes (Modul 3), i ja ho veiem en 'Program' i 'Console'
Console.WriteLine(titolLlibre);

Encara que el compilador no t'obliga a seguir aquestes convencions (compilaria igual si fessis servir majúscules i minúscules d'una altra manera), seguir-les és una pràctica professional fonamental: fa que el teu codi sigui reconeixible i coherent amb la resta de l'ecosistema .NET, incloses totes les biblioteques estàndard (Console, WriteLine, etc., ja segueixen PascalCase).

Altres recomanacions habituals

  • Els noms han de ser descriptius: millor numeroPagines que n o np.
  • S'evita, en general, l'ús de guions baixos _ com a separador dins del nom (per exemple, es prefereix titolLlibre a titol_llibre), encara que sí que s'utilitza de vegades un guió baix com a prefix en certs contextos (per exemple, en camps privats d'una classe, cosa que veurem al Mòdul 3).
  • No s'usen accents, ñ ni caràcters especials en els noms de variables, per evitar problemes de compatibilitat entre teclats, editors i sistemes.

Estructura general d'un fitxer C#

Recordant el que hem vist a la lliçó anterior, un fitxer .cs típic (en la seva forma clàssica) segueix aquesta estructura general, de fora cap a dins:

using System;                 // 1. Directives using

namespace BiblioTechConsola   // 2. Espai de noms
{
    class Program              // 3. Declaracio de tipus (classe)
    {
        static void Main(string[] args)  // 4. Membre (metode)
        {
            // 5. Instruccions
            Console.WriteLine("Benvingut a BiblioTech!");
        }
    }
}
Pas Element Explicació
1 Directives using Indiquen quins espais de noms externs es faran servir al fitxer. Es col·loquen sempre al principi.
2 Espai de noms Agrupa el codi del projecte sota un nom comú, evitant conflictes amb altres biblioteques.
3 Declaració de tipus Una classe (o, més endavant en el curs, un struct, una interfície, un record...) que conté els membres del programa.
4 Membres Mètodes, i més endavant (Mòdul 3) propietats i camps, definits dins del tipus.
5 Instruccions El codi que realment s'executa, dins d'un mètode.

Com hem vist a la lliçó anterior, en projectes moderns amb top-level statements els passos 2, 3 i 4 queden implícits: només escrius el pas 1 (si cal algun using addicional) i el pas 5 directament. El compilador continua generant "per sota" aquesta mateixa estructura.

Usings implícits

Recordaràs que, en veure el fitxer .csproj generat a la lliçó anterior, apareixia l'opció <ImplicitUsings>enable</ImplicitUsings>. Aquesta opció, disponible en projectes moderns de .NET, fa que certs espais de noms molt habituals (com System, on viu Console) estiguin disponibles automàticament a tot el projecte, sense necessitat d'escriure using System; al principi de cada fitxer. Aquesta és la raó per la qual, en els exemples de les lliçons anteriors, hem pogut fer servir Console.WriteLine directament sense cap línia using visible.

Identificadors vàlids

Un identificador és el nom que dones a qualsevol element del teu codi: una variable, un mètode, una classe, etc. El C# imposa algunes regles obligatòries (que, si no es compleixen, el programa directament no compila):

  • Ha de començar per una lletra o per un guió baix _ (mai per un número).
  • La resta de caràcters poden ser lletres, números o guions baixos.
  • No pot coincidir exactament amb una paraula clau reservada del llenguatge (com class, namespace, if, int...), tret que s'escrigui amb el prefix especial @ (una tècnica molt poc habitual, reservada per a casos excepcionals).
  • No pot contenir espais ni símbols com -, ., ñ, accents, etc.
Identificador És vàlid? Motiu
titolLlibre Comença per lletra, sense caràcters especials
_isbn Comença per guió baix, és vàlid
numeroDePagines2 Els números es permeten, mentre no siguin el primer caràcter
2numeroPagines No Comença per un número
titol-llibre No El guió - no està permès en identificadors
títol No recomanat Encara que alguns compiladors moderns l'accepten, s'evita per convenció i compatibilitat
class No Coincideix amb una paraula clau reservada del llenguatge

Aquestes regles s'apliquen no només a variables sinó, com veurem en mòduls posteriors, a noms de mètodes, classes, propietats i qualsevol altre element que definim nosaltres mateixos.

Errors Comuns i Consells

  • Oblidar el punt i coma: ja ho hem mencionat, però val la pena repetir-ho perquè és, de llarg, l'error més freqüent en començar.
  • Barrejar majúscules i minúscules sense adonar-se'n: escriure Console.writeline(...) en lloc de Console.WriteLine(...) provoca un error de compilació, ja que el C# distingeix majúscules de minúscules.
  • Niar claus sense indentar: encara que compili igual, el codi sense indentar és molt difícil de depurar quan el programa creix. Acostuma el teu editor a indentar automàticament (la majoria ho fan en prémer Retorn).
  • Fer servir noms poc descriptius: variables com x, a1, temp dificulten entendre el codi més endavant. Prefereix sempre noms descriptius com titolLlibre o estaDisponible.
  • Confondre convenció amb obligació: PascalCase i camelCase són convencions, no regles del compilador; però seguir-les és el que s'espera de qualsevol codi C# professional, i les seguirem durant tot el curs.
  • Consell: quan el compilador assenyali un error de sintaxi en una línia, revisa també la línia anterior: moltes vegades l'error real (com un punt i coma oblidat) és just abans d'on s'informa del problema.

Exercicis

  1. De la següent llista d'identificadors, indica quins són vàlids en C# i, per als que no ho siguin, explica per què: numeroPagines, 3isbn, _titol, nom complet, namespace, Autor2.

  2. Reescriu el següent fragment de codi aplicant correctament les convencions de nomenclatura (camelCase per a variables) i una indentació adequada:

    string TITOL = "El Quixot";
    int Pagines=863;
    bool Disponible=true;
    Console.WriteLine(TITOL);
    
  3. Afegeix al teu fragment corregit de l'exercici anterior: un comentari d'una línia que expliqui què fa la variable pagines, i un comentari de bloc (/* */) al principi del fitxer que expliqui breument què fa tot el programa.

Solucions

    • numeroPagines → Vàlid (comença per lletra).
    • 3isbn → No vàlid (comença per un número).
    • _titol → Vàlid (comença per guió baix).
    • nom complet → No vàlid (conté un espai).
    • namespace → No vàlid (és una paraula clau reservada del llenguatge).
    • Autor2 → Vàlid (comença per lletra, conté un número que no és el primer caràcter).
  1. Versió corregida:

    string titol = "El Quixot";
    int pagines = 863;
    bool disponible = true;
    Console.WriteLine(titol);
    

    S'ha canviat TITOL, Pagines i Disponible (amb majúscula inicial, propi de PascalCase) a titol, pagines i disponible en camelCase, adequat per a variables locals; també s'ha afegit un espai al voltant del signe = per llegibilitat, encara que el compilador acceptaria totes dues formes.

  2. Exemple de solució:

    /*
       Programa d'exemple de BiblioTech.
       Mostra per pantalla el titol d'un llibre del cataleg.
    */
    string titol = "El Quixot";
    int pagines = 863; // Nombre total de pagines del llibre
    bool disponible = true;
    Console.WriteLine(titol);
    

Conclusió

En aquesta lliçó has après les regles de sintaxi que governen qualsevol programa en C#: la distinció entre majúscules i minúscules, l'ús del punt i coma i les claus per delimitar instruccions i blocs, els diferents tipus de comentaris, les convencions de nomenclatura PascalCase i camelCase, l'estructura general d'un fitxer i les regles perquè un identificador sigui vàlid. Amb aquesta base ja pots llegir i escriure codi C# sintàcticament correcte i ben organitzat.

A la propera lliçó, Variables i Tipus de Dades, posarem en pràctica aquestes regles de nomenclatura declarant variables reals amb diferents tipus de dades —números, text, valors booleans— fent servir com a exemple les dades d'un llibre de BiblioTech: el seu títol, el seu ISBN, el seu nombre de pàgines i si està disponible o no.

Curs de Programació en C#

Mòdul 1: Introducció al C#

Mòdul 2: Estructures de Control

Mòdul 3: Programació Orientada a Objectes

Mòdul 4: Conceptes Avançats de C#

Mòdul 5: Treballant amb Dades

Mòdul 6: Temes Avançats

Mòdul 7: Construcció d'Aplicacions

Mòdul 8: Bones Pràctiques i Patrons de Disseny

Mòdul 9: Projecte Final

© Copyright 2026. Tots els drets reservats