Switch Spausdinti
( 17 Votes )

Parašė Aurimas Šimkus   

Be sąlyginiu sakinių, programavime taip pat labai dažnai reikalinga switch konstrukcija:

switch (kintamasis){          //jei sveikasis skaičius
case 1:
{koks nors veiksmas}
break;
case 2:
{koks nors kitas veiksmas}
break;
...
default:
{numatytasis veiksmas}

 

Kadangi ir C, ir C++ switch konstrukcija yra tokia pati, tai panagrinėsime vieną pavyzdį parašytą C kalba.

Programa - skaičiuoklė. Žmogus įveda bet kokius du skaičius ir operatorių (+,-,/,*). Programa, priklausomai koks operatorius, vykdo atitinkamą operaciją ir išspausdina rezultatą.

#include <stdlib.h>
int main()
 {
  int sk1, sk2; 
  char veiksmas; 
  int rez=0;         // (komentaras kode) apsirašant kintamuosius jau iškart jiems galime priskirti pradines reikšmes. Kartais tai būtina.

  printf("Iveskite du skaicius ir zenkla tarp ju (+,-,*,/) \n");
  scanf("%d%c%d", &sk1, &veiksmas, &sk2);

  switch (veiksmas) {
    case '+': rez = sk1 + sk2; 
                   break;
    case '-': rez = sk1 - sk2; 
                   break;
    case '*': rez = sk1 * sk2; 
                   break;
    case '/': rez = sk1 / sk2; 
                   break;
    default : printf("%c veiksmo nera \n\n", veiksmas);
  }

  if (rez != 0)
    printf("\nRezultatas yra %d \n\n", rez); 
  return 0; 
}

 

Kaip ir su funkcija cin taip ir su funkcija scanf vienu metu galima nuskaityti kelis kintamuosius, kaip ir šiame kode 10eil. nuskaitomi abu skaičiai ir operatorius. Switch skliausteliuose įrašome operatoriaus kintamojo pavadinimą. Priklausomai koks jis yra (+,-,/,*), tokią switch dalį (case) ir vykdo. Kitaip nei switch konstrukcijos pavyzdyje prieš tai, čia +, -, /, * yra užrašyti apostrofose, nes jie ne sveikieji skaičiai, o simboliai. Taigi, pvz. žmogus įveda kokius nors du skaičius ir operatorių +, tai programa vykdys pirmąją switch dalį. Įvykdžius bet kurią dalį yra išeinama iš switch vykdymo. Tam kiekvienos dalies gale rašomas žodelis break. Jei žmogaus įvestas operatorius nesutaps nei su vienu iš aprašytųjų, tai bus įvykdyta switch dalis default.

 

Programos vykdymo pavyzdys: