Diferència entre revisions de la pàgina «M3 - Programació estructurada / Continguts UF1: Estructura alternativa»

De wikiserver
Dreceres ràpides: navegació, cerca
 
(Hi ha 8 revisions intermèdies del mateix usuari que no es mostren)
Línia 3: Línia 3:
 
*Permet decidir si en funció d’una condició cal o no executar una o un conjunt d’instruccions.
 
*Permet decidir si en funció d’una condició cal o no executar una o un conjunt d’instruccions.
  
<source lang="python">
+
<source lang="java">
 
  instruccions del programa
 
  instruccions del programa
 
   if (expressió booleana) {
 
   if (expressió booleana) {
Línia 13: Línia 13:
 
*La condició te dues respostes possibles: Certa o Falsa. Si és certa s’executarà el procediment i sinó no
 
*La condició te dues respostes possibles: Certa o Falsa. Si és certa s’executarà el procediment i sinó no
  
*s’executarà i la execució continuarà amb les sentencies que hi hagi a continuació del bloc if.
+
*S’executarà i la execució continuarà amb les sentencies que hi hagi a continuació del bloc if.
  
 
Exemple:
 
Exemple:
<source lang="python">
 
# Programa per la Sentència if
 
  
edat = int(input("Edat:"))
+
<source lang="java">
if edat >= 18 :
+
import java.util.Scanner;
  print("Ets major d'edat")
+
 
if edat < 18 :
+
public class MajorEdat {
  print("Ets menor d'edat")
+
 
 +
  public static void main(String[] args) {
 +
    //Decidir si una persona es major de edat.
 +
    final int MAJOREDAT = 18;
 +
    int edat;
 +
    Scanner lector = new Scanner(System.in);
 +
    System.out.print("Quina edat tens? ");
 +
    edat = lector.nextInt();
 +
    if (edat >= 18){
 +
      System.out.println("Ets major d'edat");
 +
 
 +
    }
 +
    if (edat < 18){
 +
      System.out.println("Ets menor d'edat");
 +
    }
 +
  }
 +
}
 
</source>
 
</source>
  
 
* Si entre els parèntesis es posa una expressió que no avalua un resultat de tipus booleà, hi haurà un error de compilació.
 
* Si entre els parèntesis es posa una expressió que no avalua un resultat de tipus booleà, hi haurà un error de compilació.
  
'''Condicionals else i elif'''
+
'''Condicionals else i else if'''
  
 
<source lang="java">
 
<source lang="java">
# Programa per la Sentències else i elif
+
import java.util.Scanner;
edat = int(input("Edat: "))
+
 
if edat >= 18 :
+
public class MajorEdat {
  print("Ets major d'edat")
+
 
else:                          # S'executa si la condició de l'if és falsa
+
  public static void main(String[] args) {
  print("Ets menor d'edat")
+
    //Decidir si una persona es major de edat.
 +
    final int MAJOREDAT = 18;
 +
    int edat;
 +
    Scanner lector = new Scanner(System.in);
 +
    System.out.print("Quina edat tens? ");
 +
    edat = lector.nextInt();
 +
    if (edat >= 18){                                // S'executa si la condició de l'if és falsa
 +
      System.out.println("Ets major d'edat"); 
 +
 
 +
    }
 +
    else{
 +
      System.out.println("Ets menor d'edat");
 +
    }
 +
  }
 +
}
 
</source>
 
</source>
  
 
<source lang="java">
 
<source lang="java">
# Si necessitem comprovar un altre valor de l'edat podem utilitzar elif
+
// Si necessitem comprovar un altre valor de l'edat podem utilitzar elif
  
edat = int(input("Edat: "))
+
import java.util.Scanner;
if edat >= 18 :
+
 
  print("Ets major d'edat")
+
public class MajorEdat {
elif edat >= 16:                # es comprova només si la condició de l'if és falsa
+
 
  print("Ets adolescent menor d'edat")
+
  public static void main(String[] args) {
else:                          # S'executa només si la condició de l'elif és falsa
+
    //Decidir si una persona es major de edat.
  print("Ets menor d'edat")
+
    final int MAJOREDAT = 18;
 +
    int edat;
 +
    Scanner lector = new Scanner(System.in);
 +
    System.out.print("Quina edat tens? ");
 +
    edat = lector.nextInt();
 +
    if (edat >= 18){                              // S'executa si la condició de l'if és falsa
 +
      System.out.println("Ets major d'edat")
 +
 
 +
    }
 +
    else if (edat >= 16) {                        // es comprova només si la condició de l'if és falsa
 +
      System.out.println("Ets adolescent i menor d'edat");
 +
     
 +
    }
 +
    else{                                        // S'executa només si la condició de l'elif és falsa
 +
      System.out.println("Ets menor d'edat");
 +
    }
 +
  }
 +
}
 
</source>
 
</source>
  
*Es poden posar tants elif com necessitem
+
*Es poden posar tants else if com necessitem
  
 +
==La sentència ”switch”==
  
 +
*Quan l’avaluació d’una expressió és de tipus enter o caràcter.
 +
 +
*Millora la llegibilitat del codi
 +
 +
*Es poden executar de manera consecutiva més d'un bloc.
 +
 +
===Sintaxi i comportament===
 +
 +
*Es basa en una paraula clau seguida d’una condició entre parèntesis i un bloc de codi entre  claus
 +
 +
*La paraula clau '''case''' seguida del valor i de dos punts indica les instruccions assignats a cada cas.
 +
 +
*A paritr del case que avalua a cert s'executaran tots els blocs d'instruccions fins a trobar el delimitador '''break'''.
 +
 +
*Al final de tots els apartats se’n posa un d’especial (opcional), anomenat '''default'''.
 +
 +
<source lang="java">
 +
switch(expressió de tipus enter, caràcter o text) {
 +
    case valor1:
 +
          instruccions si l’expressió avalua a valor1
 +
          (opcionalment) break;
 +
    case valor2:
 +
          instruccions si l’expressió avalua a valor2
 +
          (opcionalment) break;
 +
    ...
 +
    case valorN:
 +
          instruccions si l’expressió avalua a valorN
 +
          (opcionalment) break;
 +
    (opcionalment ) default:
 +
          instruccions si l’expressió avalua a algun valor que no és valor1...valorN
 +
          (opcionalment) break;
 +
}
 +
</source>
 +
 +
*Els valors no han de seguir cap ordre concret.
 +
 +
*Quan s'arriba a una sentencia '''break''': el programa se salta la resta d’apartats i continua amb la instrucció posterior a la sentència '''switch'''
 +
 +
*Si no hi ha instrucció '''break''' al final d'un bloc s'executaran les instruccions dels següents blocs fins trobar-ne algun bloc que acabi en '''break'''. La figura següent mostra aquest comportament tan particular.
 +
 +
[[Imatge:m3uf1_switch.png |600px|center| Switch]]
 +
 +
:*A partir de la versió 7 de Java es pot fer servir un String (text) per a avaluar l’expressió
 +
 +
:'''Exemple:''' Traduir un número de mes a text'''
 +
<source lang="java">
 +
public class TraduccioMes {
 +
 +
  public static void main(String[] args) {
 +
      int mes;
 +
      Scanner teclat = new Scanner(System.in);
 +
      System.out.println("Introdueixi el número de mes a traduir: ");
 +
      mes = teclat.nextInt();
 +
      switch (mes) {
 +
        case 1:
 +
            System.out.println("Traducció: Gener\n");
 +
            break;
 +
        case 2:
 +
            System.out.println("Traducció: Febrer\n");
 +
            break;
 +
        case 3:
 +
            System.out.println("Traducció: Març\n");
 +
            break;
 +
        case 4:
 +
            System.out.println("Traducció: Abril\n");
 +
            break;
 +
        case 5:
 +
            System.out.println("Traducció: Maig\n");
 +
            break;
 +
        case 6:
 +
            System.out.println("Traducció: Juny\n");
 +
            break;
 +
        case 7:
 +
            System.out.println("Traducció: Juliol\n");
 +
            break;
 +
        case 8:
 +
            System.out.println("Traducció: Agost\n");
 +
            break;
 +
        case 9:
 +
            System.out.println("Traducció: Setembre\n");
 +
            break;
 +
        case 10:
 +
            System.out.println("Traducció: Octubre\n");
 +
            break;
 +
        case 11:
 +
            System.out.println("Traducció: Novembre\n");
 +
            break;
 +
        case 12:
 +
            System.out.println("Traducció: Desembre\n");
 +
            break;
 +
        default:
 +
            System.out.println("No existeix un mes amb número: " + mes);
 +
      }
 +
  }
 +
}
 +
</source>
 
<!--
 
<!--
 +
 +
 
==Estructures de selecció==
 
==Estructures de selecció==
  

Revisió de 18:35, 6 oct 2020

Condicional if

  • Permet decidir si en funció d’una condició cal o no executar una o un conjunt d’instruccions.
instruccions del programa
  if (expressió booleana) {
        Instruccions per executar si l’expressió avalua a true (cert)
  }
  resta d’instruccions del programa
  • La condició te dues respostes possibles: Certa o Falsa. Si és certa s’executarà el procediment i sinó no
  • S’executarà i la execució continuarà amb les sentencies que hi hagi a continuació del bloc if.

Exemple:

import java.util.Scanner;

public class MajorEdat {

  public static void main(String[] args) {
    //Decidir si una persona es major de edat.
    final int MAJOREDAT = 18;
    int edat;
    Scanner lector = new Scanner(System.in);
    System.out.print("Quina edat tens? ");
    edat = lector.nextInt();
    if (edat >= 18){
      System.out.println("Ets major d'edat");

    }
    if (edat < 18){
      System.out.println("Ets menor d'edat");
    }
  }
}
  • Si entre els parèntesis es posa una expressió que no avalua un resultat de tipus booleà, hi haurà un error de compilació.

Condicionals else i else if

import java.util.Scanner;

public class MajorEdat {

  public static void main(String[] args) {
    //Decidir si una persona es major de edat.
    final int MAJOREDAT = 18;
    int edat;
    Scanner lector = new Scanner(System.in);
    System.out.print("Quina edat tens? ");
    edat = lector.nextInt();
    if (edat >= 18){                                // S'executa si la condició de l'if és falsa
      System.out.println("Ets major d'edat");  

    }
    else{
      System.out.println("Ets menor d'edat");
    }
  }
}
// Si necessitem comprovar un altre valor de l'edat podem utilitzar elif

import java.util.Scanner;

public class MajorEdat {

  public static void main(String[] args) {
    //Decidir si una persona es major de edat.
    final int MAJOREDAT = 18;
    int edat;
    Scanner lector = new Scanner(System.in);
    System.out.print("Quina edat tens? ");
    edat = lector.nextInt();
    if (edat >= 18){                              // S'executa si la condició de l'if és falsa
      System.out.println("Ets major d'edat");  

    }
    else if (edat >= 16) {                        // es comprova només si la condició de l'if és falsa
      System.out.println("Ets adolescent i menor d'edat");
      
    }
    else{                                         // S'executa només si la condició de l'elif és falsa
      System.out.println("Ets menor d'edat");
    }
  }
}
  • Es poden posar tants else if com necessitem

La sentència ”switch”

  • Quan l’avaluació d’una expressió és de tipus enter o caràcter.
  • Millora la llegibilitat del codi
  • Es poden executar de manera consecutiva més d'un bloc.

Sintaxi i comportament

  • Es basa en una paraula clau seguida d’una condició entre parèntesis i un bloc de codi entre claus
  • La paraula clau case seguida del valor i de dos punts indica les instruccions assignats a cada cas.
  • A paritr del case que avalua a cert s'executaran tots els blocs d'instruccions fins a trobar el delimitador break.
  • Al final de tots els apartats se’n posa un d’especial (opcional), anomenat default.
switch(expressió de tipus enter, caràcter o text) {
     case valor1:
          instruccions si l’expressió avalua a valor1
          (opcionalment) break;
     case valor2:
          instruccions si l’expressió avalua a valor2
          (opcionalment) break;
     ...
     case valorN:
          instruccions si l’expressió avalua a valorN
          (opcionalment) break;
    (opcionalment ) default:
          instruccions si l’expressió avalua a algun valor que no és valor1...valorN
          (opcionalment) break;
}
  • Els valors no han de seguir cap ordre concret.
  • Quan s'arriba a una sentencia break: el programa se salta la resta d’apartats i continua amb la instrucció posterior a la sentència switch
  • Si no hi ha instrucció break al final d'un bloc s'executaran les instruccions dels següents blocs fins trobar-ne algun bloc que acabi en break. La figura següent mostra aquest comportament tan particular.
Switch
  • A partir de la versió 7 de Java es pot fer servir un String (text) per a avaluar l’expressió
Exemple: Traduir un número de mes a text
public class TraduccioMes {

   public static void main(String[] args) {
      int mes;
      Scanner teclat = new Scanner(System.in);
      System.out.println("Introdueixi el número de mes a traduir: ");
      mes = teclat.nextInt();
      switch (mes) {
         case 1:
            System.out.println("Traducció: Gener\n");
            break;
         case 2:
            System.out.println("Traducció: Febrer\n");
            break;
         case 3:
            System.out.println("Traducció: Març\n");
            break;
         case 4:
            System.out.println("Traducció: Abril\n");
            break;
         case 5:
            System.out.println("Traducció: Maig\n");
            break;
         case 6:
            System.out.println("Traducció: Juny\n");
            break;
         case 7:
            System.out.println("Traducció: Juliol\n");
            break;
         case 8:
            System.out.println("Traducció: Agost\n");
            break;
         case 9:
            System.out.println("Traducció: Setembre\n");
            break;
         case 10:
            System.out.println("Traducció: Octubre\n");
            break;
         case 11:
            System.out.println("Traducció: Novembre\n");
            break;
         case 12:
            System.out.println("Traducció: Desembre\n");
            break;
        default:
            System.out.println("No existeix un mes amb número: " + mes);
      }
   }
}