instrukcja warunkowa Python PDF

Title instrukcja warunkowa Python
Course Technologie informatyczne
Institution Politechnika Lódzka
Pages 10
File Size 671.7 KB
File Type PDF
Total Downloads 72
Total Views 134

Summary

sprawozdanie do laboratorium z pythona....


Description

Mariusz Smoczyński, Krzysztof Surmiński Katedra Pojazdów i Podstaw Budowy Maszyn

Laboratorium Informatyki III Język Python

Instrukcja do ćwiczenia INF 6 Instrukcja warunkowa. Operatory warunkowe.

I.

Teoria i przykłady

Do organizowania rozgałęzień w kodzie służą tak zwane instrukcje warunkowe. Na podstawie spełnienia lub niespełnienia warunku realizowany jest inny fragment kodu. Instrukcje warunkowe wymagają odpowiedzi na zadany warunek na zasadzie prawda – fałsz. Do realizacji takich wyrażeń służą operatory warunkowe, zwracające wartość typu logicznego.

I.1. Instrukcja warunkowa if else Każdy język programowania posiada instrukcje służące do podejmowania decyzji, tzn. wykonywania określonego fragmentu kodu w zależności od spełnienia, bądź niespełnienia określonego warunku. Wartością wyrażenia warunkowego musi być wartość typu bool: True lub False. Gry wyrażenie osiągnie wartość True wykonywana jest instrukcja po warunku, gdy False – wykonywana jest instrukcja po słowie kluczowym else, a następnie wykonanie programu jest przekazywane do następnej instrukcji (rys.1).

TAK

czy warunek jest spełniony ?

instrukcja1

NIE

instrukcja2

if (warunek): instrukcja1 lub grupa instrukcji else: instrukcja2 lub grupa instrukcji Kolejne instrukcje … if ( warunek ): instrukcja1 else: instrukcja2 Kolejne instrukcje …

Rys.1. Schemat blokowy i składnia instrukcji if / else 1

Mariusz Smoczyński, Krzysztof Surmiński Katedra Pojazdów i Podstaw Budowy Maszyn

Laboratorium Informatyki III Język Python

Należy zwrócić uwagę na charakterystyczne dla języka Python wcięcie, które grupuje fragment kodu. Jest zalecane by wcięcie wynosiło 4 cztery spacje. Wydziela ono blok instrukcji, który ma być wykonywany łącznie. Wcięcia mogą być również wykonywane tabulatorem (TAB), ale nie można mieszać obu tych metod. Bloki instrukcji realizowanych po lub niespełnieniu warunku zaznaczane są więc przez wzrastający poziom wcięcia kodu (w stosunku po poziomu wcięcia słów kluczowych if i else). Zakończenie instrukcji warunkowej zaznaczane jest przez powrót do poziomu wcięcia kodu poprzedzającego. W przypadku pojedynczych instrukcji realizowanych w blokach po spełnieniu lub nie warunku, możliwe jest uproszczona forma zapisu (rys.1). Przykład 1: Poniżej pokazano przykład wykorzystania instrukcji warunkowej if else:

Uzyskana w linii {2} wartość zmiennej służy jako podstawa sprawdzanego warunku {3} . Jeżeli warunek jest spełniony – wykonywane są instrukcje po warunku {4} , jeżeli nie – instrukcje po else {6}. Oba bloki są zaznaczone przez zwiększony poziom wcięcia. Powrót do poprzedniego poziomu wcięcia w linii {7} oznacza koniec instrukcji decyzyjnej. Przykład 2: W przypadku stosowania bloków składających się z jednej instrukcji – warunek i instrukcje można zawrzeć w dwóch liniach:

I.2. Instrukcja warunkowa if Uproszczona instrukcja if służy do podejmowania określonej akcji po spełnieniu określonego warunku. W przypadku jego niespełnienia program przechodzi do wykonania instrukcji następnej po instrukcji if (rys.2).

TAK

czy warunek jest spełniony ?

instrukcja1

2

NIE

Mariusz Smoczyński, Krzysztof Surmiński Katedra Pojazdów i Podstaw Budowy Maszyn

Laboratorium Informatyki III Język Python

if (warunek): instrukcja1 lub grupa instrukcji Kolejne instrukcje … if ( warunek ): instrukcja1 Kolejne instrukcje …

Rys.2. Schemat blokowy i składnia instrukcji if Przykład 3: W przypadku uproszczonego działania instrukcji, wystarczy blok realizowany po spełnieniu warunku:

Przykład 4: Na etapie projektowania, może okazać się, że jeden z bloków musi być pusty. Można wtedy wykorzystać instrukcję pass, której wykonanie nie powoduje żadnych skutków:

I.2. Instrukcja warunkowa if elif else Instrukcja warunkowa może zostać rozbudowana przez dodanie kolejnych sekcji elif (skrót od: else if). Pozwala to na sprawdzanie kolejnych warunków, po sprawdzeniu warunku występującego wcześniej (rys.3).

3

Mariusz Smoczyński, Krzysztof Surmiński Katedra Pojazdów i Podstaw Budowy Maszyn

tak

instrukcja_1

czy warune k_1 jest spełn iony?

tak

instrukcja_2

Laboratorium Informatyki III Język Python

nie

nie

czy warune k_2 jest spełn iony?

tak

czy warune k_3 jest spełn iony?

instrukcja_3

tak

nie

czy warune k_n jest spełn iony?

instrukcja_n

nie

instrukcja po else

if (warunek_1): instrukcja_1 elif (warunek_2): instrukcja_2 ... elif (warunek_n): instrukcja_n else: instrukcja_koncowa

Rys.3. Schemat blokowy i składnia instrukcji if…elif…else Stopień rozbudowania sekcji elif jest nieograniczony, ale przy zbyt dużej ich liczbie należy liczyć się ze spowolnieniem działania programu. Tak jak poprzednio możliwe jest pominięcia członu else. Przykład 5: Przykładowy program używający rozbudowanej sekwencji instrukcji warunkowej if...elif...else

4

Mariusz Smoczyński, Krzysztof Surmiński Katedra Pojazdów i Podstaw Budowy Maszyn

Laboratorium Informatyki III Język Python

I.4. Operatory warunkowe Są to operatory, które zwracają wartość typu logicznego (prawda-fałsz). OPERATORY RELACJI W języku Python dostępne są operatory relacji (porównania). Są to dwuargumentowe operatory, które potrafią porównać dwa argumenty (najczęściej liczbowe) i zwracają wynik typu logicznego. Pokazano je w tabeli 1. Tab.1. Operatory relacji (porównania) Liczba Operator Operacja argumentów == 2 równy != nierówny 2 < 2 mniejszy > 2 większy = 2 większy lub równy

Typ argumentów

Typ wyniku

Liczbowe, łańcuchowe, logiczne, …

logiczny bool

Wskazówka: Bardzo często operator równości == mylony jest z operatorem przypisania =, co może prowadzić do błędów interpretera. Zapis if ( a=0 ): jest więc błędny, bo nie sprawdza wbrew intencjom programisty czy zmienna a ma wartość zero. A ponieważ przypisanie w tym miejscu nie ma sensu, zostanie zgłoszony błąd wykonania. Przykład 6: Poniżej pokazano przykład wykorzystania operatora relacji (porównania), który zwraca wartość typu logicznego bool:

Widać, że operatory relacji zwracają wyniki typu logicznego. Sprawdź w podobny sposób inne operatory relacji oraz inne typy zmiennych. Relacje wielokrotne dopuszczalne w języku Python polegają na użyciu więcej niż jednego operatora . Poniższy przykład pokazuje sposób wykorzystania tego mechanizmu: 1 < 3 < 7 – wynikiem jest True 0 >= 1 > 2 - wynikiem jest False 7 == 7 > 1.1 > -5 > -100 - wynikiem jest True Sprawdź działanie powyższych relacji modyfikując poprzedni przykład. Relacje łączone tworzone są przy wykorzystaniu nawiasów zwykłych, które wskazują kolejność operacji porównania. Otrzymane rezultaty porównań z wnętrza nawiasów są obiektem dalszego porównywania: 5

Mariusz Smoczyński, Krzysztof Surmiński Katedra Pojazdów i Podstaw Budowy Maszyn

Laboratorium Informatyki III Język Python

Przykłady: ( 6 == 7 ) == ( 2 == 3 ) Wyniki porównań w pierwszym i drugim nawiasie wynoszą False. Ponieważ są to te same wartości logiczne porównanie ich daje dla całości wartość True.

( 2 > 0 ) == ( 5 > 1 ) Wynik całości wynosi True ponieważ wyniki obu porównań w nawiasach są takie same (prawdziwe). ( 3 != 3 ) != ( 6 != 6 ) Oba wyrażenia w nawiasach mają wartość False, całość jest więc fałszem. Modyfikując poprzedni przykład sprawdź działanie relacji łączonych. OPERATOR IDENTYCZNOŚCI Operator is sprawdza czy dwie wartości albo zmienne są w tym samym miejscu pamięci (muszą odnosić się do tej samej zmiennej / tego samego obiektu) – zwraca wartość typu logicznego True lub False. Możliwe jest jego zaprzeczenie is not. Przykład 7: Poniżej pokazano przykład wykorzystania operatora identyczności, który zwraca wartość typu logicznego bool:

W przypadku liczb {2}-{4}oraz łańcuchów {5}-{7} interpreter zauważa, że obie zmienne mają mieć taką samą wartość i wskazuje za ich pomocą ten sam obszar pamięci. Dlatego operator porównania daje wynik True. W przypadku dwóch list, nawet identycznych interpreter lokuje je w różnych miejscach pamięci, dlatego operator daje wynik False. OPERATOR ZAWIERANIA Operator zawierania in pokazuje, czy element znajduje się w sekwencji / kolekcji (liście, krotce, słowniku czy też zbiorze) – zwraca wartość typu logicznego True lub False. Możliwe jest jego zaprzeczenie not in. Przykład 8: Poniżej pokazano przykład wykorzystania operatora zawierania, który zwraca wartość typu logicznego bool:

6

Mariusz Smoczyński, Krzysztof Surmiński Katedra Pojazdów i Podstaw Budowy Maszyn

Laboratorium Informatyki III Język Python

OPERATORY LOGICZNE Powyżej przedstawione sposoby budowania warunków logicznych nie wyczerpują metod stosowanych w sterowaniu przebiegiem programu. W przypadku bardziej skomplikowanych wyrażeń porównawczych można użyć operatorów logicznych. Istnieją trzy podstawowe operatory logiczne (tab.2). Tab.2. Operatory logiczne Liczba Operator argumentów not 1 and 2 or 2

Operacja negacja koniunkcja – iloczyn alternatywa - suma

Typ argumentów

Typ wyniku

logiczny

logiczny

Za ich pomocą można budować dowolnie skomplikowane wyrażenia logiczne, zgodne z zasadami arytmetyki algebry Boole’a (tab.3). Tab.3. Wyniki operacji logicznych x True True False False

y True False True False

not x False False True True

not y False True False True

x and y True False False False

x or y True True True False

Kolejność wykonywania działań logicznych: - operatory porównania, - operatory negacji, - operatory iloczynu logicznego, - operatory sumy logicznej. Operatory o takiej samej hierarchii wykonywane są w kolejności od lewej do prawej. Zasady powyższe są analogiczne jak znana z arytmetyki kolejność działań: najpierw zmiana znaku, następnie mnożenia i dzielenie, na końcu dodawanie i odejmowanie. Kolejności wykonywania działań w wyrażeniach logicznych można modyfikować za pomocą użycia (również wielokrotnego) nawiasów zwykłych. Przykład 9: Poniżej pokazano przykład wykorzystania operatorów logicznych, które zwracają wartość typu logicznego bool:

7

Mariusz Smoczyński, Krzysztof Surmiński Katedra Pojazdów i Podstaw Budowy Maszyn

Laboratorium Informatyki III Język Python

W linii {5} przygotowana jest zmienna, która zawiera wynik interpretacji złożonego wyrażenia logicznego, zbudowanego z dwóch wyrażeń prostych oraz operatora koniunkcji logicznej and. Dla zwiększenia czytelności oraz wymuszenia właściwej kolejności działań niezależnie od priorytetu operatorów, każdy z warunków cząstkowych zapisano w nawiasach ( ). Sam warunek bada zawieranie wewnątrz przedziału . Przykład 10: Aby uzyskać wartość warunku przeciwnego wystarczy go po prostu zanegować:

Wymaga to jednak jednej dodatkowej operacji. Przykład 11: Dlatego programiści odwracają warunek korzystając z zasad logiki. Należy odwrócić wszystkie warunki cząstkowe oraz zamienić operatory logiczne and ↔ or:

Przykład 12: Jako przykład wykorzystania w instrukcji warunkowej złożonego warunku logicznego pokazano kod na bazie warunku z przykładu 4:

I.5. Zagnieżdżanie instrukcji warunkowych Przykład 13: Wewnątrz bloków interpretowanych jako instrukcje warunkowe można umieszczać kolejne instrukcje warunkowe:

Zagnieżdżenie warunków względem siebie i przynależność do poszczególnych bloków jest widoczne jako dwa poziomy wcięć.

8

Mariusz Smoczyński, Krzysztof Surmiński Katedra Pojazdów i Podstaw Budowy Maszyn

Laboratorium Informatyki III Język Python

II. Ćwiczenia samodzielne II.1. Instrukcja if else 1. Zmodyfikuj przykłady, zmieniając nazwy zmiennych, realizując inne warunki oraz uzyskiwane komunikaty. 2. Zmodyfikuj przykłady, budując złożone instrukcje warunkowe. 3. Zmodyfikuj przykłady, budując zagnieżdżone instrukcje warunkowe.

II.2. Operatory warunkowe 4. Zmodyfikuj przykłady, zmieniając nazwy zmiennych, realizując inne operatory oraz porównania dla liczb całkowitych i rzeczywistych. 5. Zmodyfikuj przykłady, budując złożone warunki logiczne. 6. Zapisz algorytm w postaci schematu blokowego i napisz program, który wyznaczy ocenę na podstawie punktów zdobytych za kolokwium według następujących reguł: 0−10 pkt, ocena 2 11−13 pkt, ocena 3 14−16 pkt, ocena 4 17−20 pkt, ocena 5 Program powinien przyjmować z konsoli liczbę punktów w formie liczby całkowitej, a następnie wyświetlać ocenę. 7. Zapisz algorytm w postaci schematu blokowego i napisz program wyznaczający rzeczywiste pierwiastki równania kwadratowego. Program ma oczekiwać od użytkownika podania współczynników a, b i c, a następnie wyświetlić informację słowną o liczbie pierwiastków rzeczywistych (“brak”, “jeden”, “dwa” oraz wartości wyliczonych pierwiastków. 8. Zapisz algorytm w postaci schematu blokowego i napisz program, który obliczy koszt brutto zużytej energii elektrycznej, zgodnie z cennikiem: • 0.50 zł netto za pierwsze 50 kWh, • 0.75 zł netto za następne 100 kWh, • 1.20 zł netto za następne 100 kWh, • 1.50 zł netto za każdą kWh powyżej 250. Kwota netto to kwota bez podatku VAT. Kwota brutto to kwota netto powiększona o wartość podatku VAT. W programie należy przyjąć stawkę VAT równą 22% kwoty podstawowej (netto). Program powinien pobrać od użytkownika ilość zużytej energii, a następnie obliczyć i wyświetlić jej koszt brutto. 9. Zapisz algorytm w postaci schematu blokowego i napisz program, który pobierze od użytkownika dwie liczby, a następnie sprawdzi czy pierwsza jest podzielna bez reszty przez drugą. W przypadku podania błędnych danych (jakich?) przez użytkownika program powinien wyświetlić komunikat „Złe dane”. 10. Zapisz algorytm w postaci schematu blokowego i napisz program, który pobiera od użytkownika 5 liter. W przypadku gdy pobrana litera jest mała zamień ją na wielką, a następnie wyświetl. Jeśli litera jest wielka wyświetl ją bez zamiany. 11. Zapisz algorytm w postaci schematu blokowego i napisz program, który pobierze od użytkownika pozycję pola na szachownicy, a następnie wyświetli komunikat "białe" jeżeli pole jest białe lub "czarne" jeżeli kolor pola jest czarny. W przypadku podania błędnych danych program powinien wyświetlić komunikat "Złe dane”. Np. pole a2 - białe. 12. Zapisz algorytm w postaci schematu blokowego i napisz program, który po podaniu roku urodzenia klasyfikuje mężczyzn wg wieku: poniżej 18 lat – „nieletni”, od 18 do 65 lat – „czynny zawodowo”, powyżej 65 lat – „emeryt”. Rozpocznij pytaniem o bieżący rok. Zabezpiecz program przed złymi danymi.

9

Mariusz Smoczyński, Krzysztof Surmiński Katedra Pojazdów i Podstaw Budowy Maszyn

Laboratorium Informatyki III Język Python

III. Forma zaliczenia 1. 2. 3.

Zarchiwizowane i skomentowane kody z przykładów. Zarchiwizowane i skomentowane kody wskazanych ćwiczeń i zadań wykonanych samodzielnie. Zarchiwizowane i skomentowane kody zadań podsumowujących język Python.

IV. Pytania sprawdzające 1. Narysuj schemat blokowy instrukcji if else realizującej sprawdzenie i wyświetlenie 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.

odpowiedniego komunikatu, gdy zmienna a jest większa od 1 a mniejsza od 13. Zapisz instrukcję pokazaną na przykładowym schemacie blokowym. Podaj wynik przedstawionego wyrażenia z operatorami logicznymi Zapisz warunki sprawdzające, czy dany dzień d występuje w danym miesiącu m. Przykładowo: miesiąc 4 (kwiecień), dzień 31 – nie występuje, bo kwiecień ma 30 dni. Dane jest przykładowe wyrażenie logiczne zapisane w formacie matematycznym z użyciem operatorów , oraz  . Zapisz je w składni języka Python. Omów kolejność działań w wyrażeniach logicznych. Podaj rodzaje operatorów zwracających wartość typu True / False. Wymień znane Ci operatory zwracających wartość typu True / False. Wymień znane ci operatory relacyjne / logiczne. Jak działa i jaką wartość zwraca operator identyczności. Jak działa i jaką wartość zwraca operator zawierania. Jakich elementów języka dotyczy operator zawierania? Jaką operację realizuje linia zawierająca operator? Co pojawi się przy interpretacji linii zawierającej operator? Podaj schemat blokowy i/lub składnię instrukcji warunkowej? Podaj schemat blokowy i/lub składnię uproszczonej instrukcji warunkowej. Podaj schemat blokowy i/lub składnię wielokrotnej instrukcji warunkowej. Jak jest interpretowana instrukcja warunkowa. Po czym można poznać do jakiej sekcji instrukcji warunkowej należy linia kodu? Z ilu linii mogą się składać się bloki instrukcji wewnątrz instrukcji decyzyjnej. Sformułuj kod podanego warunku. Odczytaj kod podanego warunku. Podaj zasady budowania warunków złożonych.

10...


Similar Free PDFs