Warunek wielokrotnego wyboru switch... case



Podobne dokumenty
Instrukcje warunkowe i skoku. Spotkanie 2. Wyrażenia i operatory logiczne. Instrukcje warunkowe: if else, switch.

Instrukcje sterujące

Podstawy Programowania Podstawowa składnia języka C++

Wstęp do programowania

XII. Warunek wielokrotnego wyboru switch... case

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Laboratorium 3. Instrukcje wyboru

Programowanie komputerowe. Zajęcia 3

3. Instrukcje warunkowe

W przeciwnym wypadku wykonaj instrukcję z bloku drugiego. Ćwiczenie 1 utworzyć program dzielący przez siebie dwie liczby

PODSTAWY INFORMATYKI 1 PRACOWNIA NR 6

Podstawy Programowania C++

#include <stdio.h> int main( ) { int x = 10; long y = 20; double s; s = x + y; printf ( %s obliczen %d + %ld = %f, Wynik, x, y, s ); }

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

Wstęp do Programowania, laboratorium 02

1 Podstawy c++ w pigułce.

Funkcje. Spotkanie 5. Tworzenie i używanie funkcji. Przekazywanie argumentów do funkcji. Domyślne wartości argumentów

Instrukcje sterujące. wer. 11 z drobnymi modyfikacjami! Wojciech Myszka :53:

Pętla for. Wynik działania programu:

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami

Pytania sprawdzające wiedzę z programowania C++

Pętle i tablice. Spotkanie 3. Pętle: for, while, do while. Tablice. Przykłady

Zajęcia nr 1 Podstawy programowania. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++

Języki C i C++ Wykład: 2. Wstęp Instrukcje sterujące. dr Artur Bartoszewski - Języki C i C++, sem. 1I- WYKŁAD

Podstawy Informatyki. Kompilacja. Historia. Metalurgia, I rok. Kompilatory C++ Pierwszy program. Dyrektywy preprocesora. Darmowe:

Podstawy Informatyki. Metalurgia, I rok. Wykład 6 Krótki kurs C++

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.

Operatory cd. Relacyjne: ==!= < > <= >= bool b; int i =10, j =20; dzielenie całkowitych wynik jest całkowity! Łączenie tekstu: + string s = "Ala ma ";

Język ludzki kod maszynowy

1 Podstawy c++ w pigułce.

7. Pętle for. Przykłady

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Programowanie proceduralne w języku C++ Pętle, tablice

Podstawy programowania. Wykład: 5. Instrukcje sterujące c.d. Stałe, Typy zmiennych c.d. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Struktura pliku projektu Console Application

Programowanie strukturalne i obiektowe

Programowanie I C / C++ laboratorium 03 arytmetyka, operatory

4. Wyrzuć wyjątek jeśli zmienna ist nie istnieje bloki: try, catch i wyrzucanie wyjątku

Jak zawsze wyjdziemy od terminologii. While oznacza dopóki, podczas gdy. Pętla while jest

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

Konstrukcje warunkowe Pętle

Programowanie - wykład 4

lekcja 8a Gry komputerowe MasterMind

Informatyka I. Wykład 3. Sterowanie wykonaniem programu. Instrukcje warunkowe Instrukcje pętli. Dr inż. Andrzej Czerepicki

Język C, instrukcje sterujące (laboratorium)

Instrukcje sterujące mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2012

Język C zajęcia nr 5

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe

Instrukcje sterujące. Programowanie Proceduralne 1

Podstawy programowania Laboratorium. Ćwiczenie 2 Programowanie strukturalne podstawowe rodzaje instrukcji

Programowanie obiektowe, wykład nr 6. Klasy i obiekty

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44

Laboratorium 2: Pętle i instrukcje warunkowe. mgr inż. Leszek Ciopiński dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Warto też w tym miejscu powiedzieć, że w C zero jest rozpoznawane jako fałsz, a wszystkie pozostałe wartości jako prawda.

ze względu na jego zaokrąglony kształt musimy go umieścić w innych bloczkach np. ze zmienną: lub jeśli chcemy sprawdzić jaki właśnie znak odczytujemy:

LibreOffice Calc VBA

1 Wielokrotne powtarzanie tych samych operacji

C++ wprowadzanie zmiennych

IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi

Tworzenie aplikacji w języku Java

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

Języki programowania - podstawy

Opis zagadnieo 1-3. Iteracja, rekurencja i ich realizacja

Programowanie komputerowe. Zajęcia 1

Wprowadzenie do języka Java

OPERACJE WEJŚCIA / WYJŚCIA. wysyła sformatowane dane do standardowego strumienia wyjściowego (stdout)

Programowanie Obiektowe i C++

Szablony funkcji i szablony klas

Laboratorium Wstawianie skryptu na stroną: 2. Komentarze: 3. Deklaracja zmiennych

Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1)

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 5 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41

Programowanie strukturalne i obiektowe. Funkcje

Programowanie, algorytmy i struktury danych

Materiały do zajęć III

VII. Ciągi znaków łańcuchy

Programowanie obiektowe

Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać

Pętle. Dodał Administrator niedziela, 14 marzec :27

Języki programowania zasady ich tworzenia

Programowanie obiektowe

Podstawowe elementy programowania strukturalnego. Wbudowane typy danych w C++

#include <stdio.h> void main(void) { int x = 10; long y = 20; double s; s = x + y; printf ( %s obliczen %d + %ld = %f, Wynik, x, y, s ); }

Wprowadzenie do szablonów szablony funkcji

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 5

Wprowadzenie do szablonów szablony funkcji

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),

Nazwa implementacji: Nauka języka Python wyrażenia warunkowe. Autor: Piotr Fiorek. Opis implementacji: Poznanie wyrażeń warunkowych if elif - else.

Wiadomości wstępne Środowisko programistyczne Najważniejsze różnice C/C++ vs Java

Temat 1: Podstawowe pojęcia: program, kompilacja, kod

Podstawy programowania. Wykład: 4. Instrukcje sterujące, operatory. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta Strona 1 z 26. Powrót. Full Screen. Zamknij.

Programowanie obiektowe - zadania

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość

Wstęp do Programowania 2

Transkrypt:

Warunek wielokrotnego wyboru switch... case Działanie instrukcji switch jest zupełnie inne niż w przypadku instrukcji if o czym będziesz mógł się przekonać w niniejszym rozdziale. Różnice pomiędzy instrukcjami wyboru Za pomocą instrukcji warunkowej if możemy określić dokładnie co ma się wydarzyć w zależności od stanu jednej lub kilku zmiennych. Instrukcja if daje nam pełną kontrolę nad przebiegiem programu. W języku C++ jest jednak dostępna również instrukcja wielokrotnego wyboru switch. W przypadku niej możemy wykonywać decyzje tylko i wyłącznie na podstawie wartości jednej zmiennej. Możliwości instrukcji switch są nieporównywalnie mniejsze, jednak używanie jej w niektórych przypadkach jest znacznie korzystniejsze dla szybkości działania programu i estetyki kodu niż użycie instrukcji if. Składnia switch... case Zanim przejdziemy do omawiania poszczególnych słów kluczowych oraz tego jak działa warunek wielokrotnego wyboru (zwany również przełącznikiem), zapoznajmy się ze składnią tejże instrukcji: switch( zmienna ) case wartosc_1: case wartosc_2: //... case wartosc_n: default:

Słowo kluczowe switch Instrukcja switch(...) służy do podejmowania decyzji wyłącznie na podstawie wartości jednej zmiennej. Zmienna ta musi być typem podstawowym i jednocześnie typem całkowitym. Oznacza to w konsekwencji, że wybór będziemy mogli dokonywać tylko i wyłącznie na podstawie wartości liczby całkowitej czy też kodu znaku ASCII (który również jest liczbą). Zmienną, na której chcemy pracować podajemy w nawiasach zaokrąglonych, które muszą znaleźć się zaraz po wystąpieniu słowa kluczowego switch. char zmienna; switch( zmienna ) //... Dozwolone typy danych Jedynymi dozwolonymi typami danych w instrukcji switch są liczby całkowite. Oznacza to, że możemy użyć tylko i wyłącznie zmiennych, które są typów takich jak: char, short, int, long, long long. Do tego dochodzi również typ wyliczeniowy enum, który również jest w rzeczywistości liczbą całkowitą. Błędy kompilacji Gdy uczymy się programować jesteśmy zmuszeni do przyswajania ogromnej ilości wiedzy. Niektóre ważne rzeczy podczas procesu nauki potrafią jednak umknąć naszej uwadze, co w przypadku programowania bardzo często kończy się wyrzuceniem błędu przez kompilator. W przypadku instrukcji switch możemy się spotkać np. z następującym błędem: error: switch quantity not an integer Błąd ten otrzymamy wtedy, gdy zmienna przekazana do instrukcji switch będzie innego typu niż liczba całkowita czyli przykładowo będzie typu float. Czytając komunikaty kompilatora ze zrozumieniem w 90% przypadków nie będziesz musiał udawać się do internetu w poszukiwaniu przyczyny wystąpienia błędu, ponieważ kompilator dokładnie napisze Ci co i gdzie poszło źle.

Słowo kluczowe case Skoro już wiemy jak wybrać zmienną tą, która nas interesuje to teraz powinniśmy dowiedzieć się jak w zależności od wartości zmiennej wykonać jakiś kawałek kodu. Jak można się łatwo domyślić po składni już przedstawionej w niniejszym rozdziale do tego celu służy słowo kluczowe case. Ogólny zapis wygląda tak: case...: Zapis ten oznacza: jeśli wartość zmiennej (występującej po słowie kluczowym switch) będzie równa wartości umieszczonej po słowie kluczowym case, to wykonaj kod (znajdujący się po znaku dwukropka). Zdaję sobie sprawę, że niezbyt przyjaźnie jest napisane powyższe zdanie, jednak spróbuj się w nie dobrze wczytać - możesz spróbować też je przeczytać z pominięciem tego co jest w nawiasach. Jeśli to nie pomoże skup się dobrze na poniższym przykładzie i przeanalizuj jego działanie w praktyce - z pewnością stanie się wtedy wszystko jasne: cout << "dwa" << endl; cout << "jeden" << endl; case 3: cout << "trzy" << endl;

Słowo kluczowe default Instrukcja sterująca switch oferuje nam jeszcze jedną instrukcję i jest nią default:. Wejście w kod znajdujący się po słowie kluczowym default nastąpi tylko wtedy, gdy żaden z case'ów nie zostanie spełniony. Korzystając więc z faktu, że nic więcej nie mam do powiedzenia na temat tego słowa kluczowego przejdziemy teraz do przykładu: cout << "dwa" << endl; cout << "jeden" << endl; case 3: cout << "trzy" << endl; default: cout << "ani jeden, ani dwa, ani trzy" << endl; Przykładowy wynik programu: Podaj liczbe: 5 ani jeden, ani dwa, ani trzy

Słowo kluczowe break Słowo kluczowe break oznacza: przerwij wykonywanie obecnej instrukcji sterującej. W tym przypadku instrukcją sterującą jest switch. Użycie słowa kluczowego break ma bardzo duże znaczenie w instrukcji sterującej switch... case. Informuje ona bowiem kompilator, że dany case się wykonał i program ma już opuścić instrukcję sterującą switch. Jeśli zabraknie słowa kluczowego break to program wykona wszystkie instrukcje od momentu spełnienia warunku aż do samego końca switch'a. Bardzo dobrym przykładem demonstrującym konsekwencje braku słowa kluczowego break jest przerobienie programu, który już mieliśmy. Po przeróbce będzie on wyglądał tak: cout << "dwa" << endl; cout << "jeden" << endl; case 3: cout << "trzy" << endl; Jeśli teraz w programie wpiszemy np. wartość 1 to na ekranie ujrzymy następujący rezultat: Podaj liczbe: 1 jeden trzy Zgodnie z opisem, który już wcześniej został przedstawiony: od momentu gdy został spełniony warunek wykonają się wszystkie instrukcje aż do napotkania słowa kluczowego break lub bloku kończącego instrukcję sterującą switch.

Tworzenie zmiennych wewnątrz switch'a Podczas tworzenia swojego programu może się zdarzyć tak, że będziesz chciał utworzyć zmienną wewnątrz instrukcji sterującej switch. Kompilator niestety nie obejdzie się z Tobą delikatnie i zacznie wykrzykiwać następujące hasło: error: jump to case label error: crosses initialization of 'char mojazmienna' Błąd ten uzyskaliśmy poprzez próbę utworzenia zmiennej: char mojazmienna = 'x'; Problemem dla kompilatora nie jest tutaj fakt, że zmienna istnieje, tylko że trzeba ją zainicjalizować. Możliwości rozwiązania tego problemu mamy trzy. Pierwszym z nich jest nieinicjalizowanie zmiennej w miejscu jej tworzenia. Przykład: char mojazmienna; mojazmienna = 'a'; Powyższe rozwiązanie pomimo, iż poprawne to nie zda egzaminu gdy zaczniesz programować obiektowo lub zaczniesz używać np. typu string. Innym rozwiązaniem, które jest uniwersalne i skuteczne zawsze niezależnie od typu danych to tworzenie zmiennych przed instrukcją wielokrotnego wyboru switch. Rozwiązanie to będzie poprawne, jednak nasze ego zapewne nie zostanie zaspokojone. W końcu lubimy stawiać na swoim, czyli zmienna ma być w środku. Trickiem jaki należy więc zastosować aby zmienna była w środku to opakowanie kodu w klamry. Przykład demonstrujący trzy rozwiązania: char innazmienna = 'B'; char mojazmienna; mojazmienna = 'A'; cout << "Znak " << mojazmienna << endl; cout << "Znak " << innazmienna << endl;

case 3: char ostatniazmienna = 'C'; cout << "Znak " << ostatniazmienna << endl; default: cout << "ani jeden, ani dwa, ani trzy" << endl; Polecam stosowanie ostatniego rozwiązania, jeśli potrzebujesz zmiennej tylko i wyłącznie wewnątrz case'a. Odradzam jednocześnie stosowania pierwszego rozwiązania gdyż prędzej czy później będziesz zmuszony do korzystania z drugiego lub trzeciego wariantu. Zadanie Napisz prosty kalkulator dla dwóch liczb, obsługujący cztery działania matematycznie: +, -, * i /.