Les sentències condicionals són una part fonamental de qualsevol llenguatge de programació, ja que permeten que el codi prengui decisions basades en certes condicions. En Java, les sentències condicionals més comunes són if, else if, else i switch.

  1. Sentència if

La sentència if s'utilitza per executar un bloc de codi només si una condició específica és certa.

Sintaxi

if (condició) {
    // codi a executar si la condició és certa
}

Exemple

int x = 10;
if (x > 5) {
    System.out.println("x és més gran que 5");
}

En aquest exemple, el missatge "x és més gran que 5" es mostrarà perquè la condició x > 5 és certa.

  1. Sentència else

La sentència else s'utilitza per executar un bloc de codi si la condició de l'if és falsa.

Sintaxi

if (condició) {
    // codi a executar si la condició és certa
} else {
    // codi a executar si la condició és falsa
}

Exemple

int x = 3;
if (x > 5) {
    System.out.println("x és més gran que 5");
} else {
    System.out.println("x no és més gran que 5");
}

En aquest exemple, el missatge "x no és més gran que 5" es mostrarà perquè la condició x > 5 és falsa.

  1. Sentència else if

La sentència else if s'utilitza per especificar una nova condició si la condició anterior és falsa.

Sintaxi

if (condició1) {
    // codi a executar si condició1 és certa
} else if (condició2) {
    // codi a executar si condició2 és certa
} else {
    // codi a executar si cap de les condicions anteriors és certa
}

Exemple

int x = 7;
if (x > 10) {
    System.out.println("x és més gran que 10");
} else if (x > 5) {
    System.out.println("x és més gran que 5 però menor o igual a 10");
} else {
    System.out.println("x és menor o igual a 5");
}

En aquest exemple, el missatge "x és més gran que 5 però menor o igual a 10" es mostrarà perquè la condició x > 5 és certa.

  1. Sentència switch

La sentència switch s'utilitza per seleccionar una de moltes blocs de codi a executar.

Sintaxi

switch (expressió) {
    case valor1:
        // codi a executar si expressió == valor1
        break;
    case valor2:
        // codi a executar si expressió == valor2
        break;
    // més casos...
    default:
        // codi a executar si cap dels casos anteriors és cert
}

Exemple

int dia = 3;
switch (dia) {
    case 1:
        System.out.println("Dilluns");
        break;
    case 2:
        System.out.println("Dimarts");
        break;
    case 3:
        System.out.println("Dimecres");
        break;
    case 4:
        System.out.println("Dijous");
        break;
    case 5:
        System.out.println("Divendres");
        break;
    case 6:
        System.out.println("Dissabte");
        break;
    case 7:
        System.out.println("Diumenge");
        break;
    default:
        System.out.println("Dia invàlid");
}

En aquest exemple, el missatge "Dimecres" es mostrarà perquè la variable dia és igual a 3.

Exercicis Pràctics

Exercici 1

Escriu un programa que determini si un nombre és positiu, negatiu o zero.

Solució

import java.util.Scanner;

public class PositiuNegatiuZero {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("Introdueix un nombre: ");
        int nombre = scanner.nextInt();

        if (nombre > 0) {
            System.out.println("El nombre és positiu.");
        } else if (nombre < 0) {
            System.out.println("El nombre és negatiu.");
        } else {
            System.out.println("El nombre és zero.");
        }
    }
}

Exercici 2

Escriu un programa que determini el dia de la setmana basat en un nombre del 1 al 7.

Solució

import java.util.Scanner;

public class DiaDeLaSetmana {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("Introdueix un nombre (1-7): ");
        int dia = scanner.nextInt();

        switch (dia) {
            case 1:
                System.out.println("Dilluns");
                break;
            case 2:
                System.out.println("Dimarts");
                break;
            case 3:
                System.out.println("Dimecres");
                break;
            case 4:
                System.out.println("Dijous");
                break;
            case 5:
                System.out.println("Divendres");
                break;
            case 6:
                System.out.println("Dissabte");
                break;
            case 7:
                System.out.println("Diumenge");
                break;
            default:
                System.out.println("Dia invàlid");
        }
    }
}

Errors Comuns i Consells

  1. Oblidar el break en una sentència switch: Si oblides el break, el programa continuarà executant els casos següents fins que trobi un break o arribi al final del switch.

    switch (dia) {
        case 1:
            System.out.println("Dilluns");
            // falta el break aquí
        case 2:
            System.out.println("Dimarts");
            break;
        // més casos...
    }
    
  2. No utilitzar parèntesis en les condicions: Assegura't d'utilitzar parèntesis per envoltar les condicions en les sentències if, else if i else.

    if x > 5 { // Incorrecte
        System.out.println("x és més gran que 5");
    }
    
  3. Utilitzar == en lloc de .equals() per comparar cadenes: En Java, per comparar cadenes, utilitza el mètode .equals() en lloc de l'operador ==.

    String a = "hola";
    if (a == "hola") { // Incorrecte
        System.out.println("Les cadenes són iguals");
    }
    if (a.equals("hola")) { // Correcte
        System.out.println("Les cadenes són iguals");
    }
    

Conclusió

Les sentències condicionals són essencials per controlar el flux del programa basat en condicions específiques. Hem vist com utilitzar les sentències if, else if, else i switch per prendre decisions en el nostre codi. Practica amb els exercicis proporcionats per reforçar la teva comprensió d'aquestes estructures. En el següent tema, explorarem els bucles, que ens permetran repetir blocs de codi basats en condicions.

Curs de Programació en Java

Mòdul 1: Introducció a Java

Mòdul 2: Flux de Control

Mòdul 3: Programació Orientada a Objectes

Mòdul 4: Programació Orientada a Objectes Avançada

Mòdul 5: Estructures de Dades i Col·leccions

Mòdul 6: Gestió d'Excepcions

Mòdul 7: Entrada/Sortida de Fitxers

Mòdul 8: Multithreading i Concurrència

Mòdul 9: Xarxes

Mòdul 10: Temes Avançats

Mòdul 11: Frameworks i Llibreries de Java

Mòdul 12: Construcció d'Aplicacions del Món Real

© Copyright 2024. Tots els drets reservats