rozdział 4: ZMIENNE I INSTRUKCJE

Podobne dokumenty
Podstawy programowania w Pythonie

Python. Wprowadzenie. Jolanta Bachan

Podstawy programowania w Pythonie

Naukę zaczynamy od poznania interpretera. Interpreter uruchamiamy z konsoli poleceniem

Pytania dla języka Python

Kurs rozszerzony języka Python

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

1 Podstawy c++ w pigułce.

Języki i metody programowania

Programowanie w języku Python. Grażyna Koba

Podstawy Programowania C++

Algorytmy i struktury danych

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

Podstawy Programowania ELEMENTY PROGRAMU i TYPY DANYCH

Python wprowadzenie. Warszawa, 24 marca PROGRAMOWANIE I SZKOLENIA

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

4. Funkcje. Przykłady

Spis treści. Funkcje. 1 Funkcje 1.1 Zadanie Zadanie Zadanie Zadanie Zadanie Zadanie Zadanie 7

Podstawy programowania. Python wykład 6

Podstawy programowania w Pythonie

Algorytmy i struktury danych

Spis treści. Dekoratory. 1 Dekoratory 1.1 Zadanie Zadanie Zadanie Zadanie 4

Programowanie robota mobilnego E-puck w języku Python

Wstęp do programowania

Zaawansowany kurs języka Python

Podstawy. Jan Koprowski Politechnika Gdańska, FTiMS Informatyka Stosowana

Warsztaty dla nauczycieli

Języki i metody programowania

Wstęp do Informatyki i Programowania (kierunek matematyka stosowana)

Język programowania zbiór reguł określających, które ciągi symboli tworzą program komputerowy oraz jakie obliczenia opisuje ten program.

PROGRAMOWANIE W PYTHONIE OD PIERWSZYCH KROKÓW

Wstęp do programowania

1 Podstawy c++ w pigułce.

Cw.12 JAVAScript w dokumentach HTML

Liczby losowe i pętla while w języku Python

Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek].

Podstawy programowania w Pythonie

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

Wykresy i interfejsy użytkownika

Wstęp do informatyki. stęp do informatyki Polecenia (cz.2)

Podstawy programowania: Python. Wprowadzenie. Jolanta Bachan

Język C część 2. Podejmowanie decyzji w programie. if else. switch

Skrypty powłoki Skrypty Najcz ciej u ywane polecenia w skryptach:

Python podstawy programowania

Przegląd języka Python. Łukasz Anwajler

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Pisząc kod w Pythonie na pewno już nie raz coś poszło nie tak i Shell wypisał komunikat o błędzie podobny do poniższego:

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

Wstęp do programowania

Wstęp do programowania

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Podstawy programowania skrót z wykładów:

Powtórka algorytmów. Wprowadzenie do języka Java.

Wstęp do programowania

Pętla for. Matematyka dla ciekawych świata -19- Scilab. for i=1:10... end. for k=4:-1:1... end. k=3 k=4. k=1. k=2

Konstrukcje warunkowe Pętle

Języki skryptowe Python

Podstawy programowania. rozdział 8: WYJĄTKI. ostatnia modyfiaaja:

Język Python. Język Python 1/35

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

Kurs języka Python. Wykład 11. Marcin Młotkowski. 4 stycznia Kontrola poprawności podczas biegu programu. 2 Testowanie oprogramowania

Wprowadzenie do języka Python

Programowanie obiektowe

Ćwiczenie 3. Python 3: Python 3: Funkcje, moduły i operacje na plikach

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

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ć

Podstawowe typy zmiennych

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

Zaawansowany kurs języka Python

JAVAScript w dokumentach HTML (1) JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania.

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

1 Powtórzenie wiadomości

Wstęp do informatyki- wykład 7

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

Funkcje są prawdopodobnie najważniejszą częścią każdego poważnego programu (w każdym języku programowania).

Podstawy i języki programowania

Tablice (jedno i wielowymiarowe), łańcuchy znaków

Kurs rozszerzony języka Python

Schematy blokowe I. 1. Dostępne bloki: 2. Prosty program drukujący tekst.

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

JAVAScript w dokumentach HTML (2)

Operacje wykonywane są na operandach (argumentach operatorów). Przy operacji dodawania: argumentami operatora dodawania + są dwa operandy 2 i 5.

1. Wypisywanie danych

Podstawy i języki programowania

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Podstawy VBA cz. 1. Programowanie komputerowe

Podstawy programowania w języku Visual Basic dla Aplikacji (VBA)

Laboratorium kryptograficzne dla licealistów 1

Przykład 1 -->s="hello World!" s = Hello World! -->disp(s) Hello World!

Wstęp do Informatyki

Podstawy programowania w języku C i C++

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

3. Instrukcje warunkowe

ECDL Podstawy programowania Sylabus - wersja 1.0

7. Pętle for. Przykłady

Programowanie - instrukcje sterujące

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

System operacyjny Linux

Podstawy programowania w C++

Transkrypt:

rozdział 4: ZMIENNE I INSTRUKCJE ostatnia modyfikacja: 04.12.18

definicja: zmienna to nazwany kontener służący do przechowywania danych na razie skupimy się na zmiennych przechowujących dane liczbowe i logiczne

nazwa zmiennej: może zawierać litery (małe i wielkie), cyfry i znak _ (podkreślenie) nie może zaczynać się od cyfry może zawierać znaki narodowe litery małe i wielkie traktowane są jako różne

niektóre słowa nie mogą być użyte jako nazwy zmiennych, ponieważ są zastrzeżone do wyłącznego użytku przez Pythona są to tzw. słowa kluczowe (ang. keywords)

oto słowa kluczowe Pythona 3: False None True and as assert break class continue def del elif else except finally for from global if import in is lambda nonlocal not or pass raise return try while with yield

nazwa zmiennej: nazwy zmiennych powinny być samokomentujące tzn. z ich nazwy powinno wynikać, jaką daną przechowują zmienne mogą występować w wyrażeniach na takich samych zasadach jak literały jednak użycie zmiennej musi być poprzedzone nadaniem jej wartości

spróbujmy: >>> print(fajna_zmienna) Traceback (most recent call last): File "<pyshell#28>", line 1, in <module> print(fajna_zmienna) NameError: name 'fajna_zmienna' is not defined

nadanie wartości zmiennej: do nadania wartości zmiennej używa się operatora przypisania: = nie myl go z operatorem == używa się go tak: zmienna = wyrażenie

spróbujmy jeszcze raz: >>> fajna_zmienna=1 >>> print(fajna_zmienna) 1

operator przypisania = efekt: przypisanie wartości wyrażenia z prawej strony operatora do zmiennej wymienionej po lewej stronie

Przypisania można łączyć: a = b = c = 1 co należy rozumieć jako ciąg przypisań: a = 1 b = 1 c = 1

stąd: >>> a = b = c = 1 >>> print(a,b,c) 1 1 1

nadanie wartości zmiennej: nadawanie zmiennym sztywnych wartości wprost w kodzie nie zawsze jest dobrym rozwiązaniem najczęściej chcielibyśmy podawać pewne wartości dopiero w czasie pracy programu

zauważ: print(a,b,c,d) jeśli przekazujesz do funkcji więcej argumentów niż jeden, musisz rozdzielać je przecinkami

zauważ: print() jeśli nie przekazujesz do funkcji żadnych argumentów, musisz pozostawić nawiasy

pamiętaj o tym: >>> print SyntaxError: invalid syntax

funkcja input() - wariant #1 posłuży nam do pobierania danych od użytkownika input(): argument: efekt: wynik: żaden wczytanie wiersza danych z konsoli napis wprowadzony przez użytkownika np: tekst = input()

przykład: print("bądź łaskaw coś napisać i nacisnąć Enter:") tekst=input() print("stało się Wpisałeś:") print(tekst)

funkcja input() - wariant #2 posłuży nam do pobierania danych od użytkownika input(x): argument: efekt: wynik: podpowiedź dla użytkownika wczytanie wiersza danych z konsoli napis wprowadzony przez użytkownika np: tekst = input("przemów do mnie!")

przykład: tekst=input("bądź łaskaw coś napisać i nacisnąć Enter:") print("stało się Wpisałeś:") print(tekst)

pamiętaj: funkcja input() wczytuje tekst (ciąg znaków) tekst nie jest liczbą (nawet jeśli składa się z cyfr) jeżeli chcesz użyć wprowadzonego tekstu jako liczby, musisz dokonać jawnej konwersji (przekształcenia ciągu znaków na wewnętrzną reprezentację liczby)

w przeciwnym razie zostaniesz upomniany: >>> x=input() 123 >>> y=x/3 Traceback (most recent call last): File "<pyshell#6>", line 1, in <module> y=x/3 TypeError: unsupported operand type(s) for /: 'str' and 'int'

funkcja int() konwertuje tekst na liczbę całkowitą int(x): argument: efekt: wynik: tekst reprezentujący liczbę konwersja tekstu do liczby całkowitej skonwertowana liczba np: ile = int(input())

funkcja float() konwertuje tekst na liczbę rzeczywistą float(x): argument: efekt: wynik: tekst reprezentujący liczbę konwersja tekstu do liczby rzeczywistej skonwertowana liczba np: cena = float(input())

pamiętaj: funkcje int() i float() ufają, że przekazany im argument naprawdę jest zapisem liczby jeśli tak nie będzie, funkcje będą zawiedzione

Zostaniesz upomniany: >>> x=int(input()) bulbulator >>> y=x/3 Traceback (most recent call last): File "<pyshell#12>", line 1, in <module> x=int(input()) ValueError: invalid literal for int() with base 10: 'bulbulator'

nie trać nadziei: istnieje sposób zabezpieczenia się przed nierozważnym działaniem użytkownika poznasz go w swoim czasie

A teraz napiszemy program, który podnosi liczbę do kwadratu: liczba=float(input("podaj liczbę:")) kwadrat=liczba ** 2 print("kwadrat z ", liczba, " to ", kwadrat)

a teraz to samo, ale z pierwiastkiem w Pythonie nie ma operatora, który wykonuje pierwiastkowanie :( ale jest funkcja, która umie to zrobić :) jednak aby z niej skorzystać, trzeba się trochę postarać :)

funkcja wbudowana funkcja, która jest integralną częścią środowiska Pythona taką funkcją jest np. print()

moduł: moduł to kod, którego nie uruchamia się wprost, a korzysta się z zawartych w nim udogodnień (np. funkcji) aby skorzystać z pewnego udogodnienia, należy je zaimportować z modułu

math moduł zawierający liczne funkcje matematyczne sqrt funkcja z modułu math, obliczająca pierwiastek kwadratowy

importowanie sposób pierwszy import math efekty: wszystkie udogodnienia z modułu math stają się dostępne, ale.. należy je identyfikować tzw. nazwą kwalifikowaną np.: math.sqrt

nazwa kwalifikowana: moduł.byt nazwa modułu zawierajacego pewien byt (np. funkcję) nazwa tego bytu (np. funkcji)

Pierwiastkujemy: import math liczba=float(input("podaj liczbę:")) pierwiastek=math.sqrt(liczba) print("pierwiastek z ", liczba, " to ", pierwiastek)

importowanie sposób drugi from math import sqrt efekty: tylko jawnie wymienione udogodnienia z modułu math stają się dostępne, ale.. nie trzeba ich identyfikować nazwą kwalifikowaną math.sqrt

Pierwiastkujemy po raz drugi: from math import sqrt liczba=float(input("podaj liczbę:")) pierwiastek=sqrt(liczba) print("pierwiastek z ", liczba, " to ", pierwiastek)

co się stanie, jeśli spróbujemy pierwiastkować liczbę ujemną? Traceback (most recent call last): File "prog.py", line 4, in <module> pierwiastek=sqrt(liczba) ValueError: math domain error

trzeba rozgałęzić kod: jeśli wartość będzie nieujemna, policzymy pierwiastek w przeciwnym przypadku nic nie zrobimy

instrukcja if wariant pierwszy if warunek : warunek: wyrażenie logiczne (boolowskie) jeśli będzie równe True, instrukcja if uzna, że należy wykonać pewne instrukcje w przeciwnym wypadku te instrukcje zostaną pominięte

zauważ! to, które instrukcje stanowią treść instrukcji if, w Pythonie jest oznaczane poziomem wcięcia! wcięcie można uzyskać spacjami bądź tabulacją ten drugi wariant jest zalecany mieszanie obu wariantów jest ryzykowne

Pierwiastkujemy bezpiecznie: from math import sqrt liczba=float(input("podaj liczbę:")) if liczba >= 0.0: pierwiastek=sqrt(liczba) print("pierwiastek z ", liczba, " to ", pierwiastek)

zauważ! powrót do poprzedniego poziomu wcięcia oznacza koniec instrukcji if

Pierwiastkujemy bezpiecznie: from math import sqrt liczba=float(input("podaj liczbę:")) if liczba >= 0.0: pierwiastek=sqrt(liczba) print("pierwiastek z ", liczba, " to ", pierwiastek) print("to koniec")

instrukcja if wariant drugi if warunek : kod1 else : kod2 jeśli warunek będzie równy True, instrukcja if uzna, że należy wykonać instrukcje stojące za nią w przeciwnym wypadku zostaną wykonane instrukcje za else

Pierwiastkujemy jeszcze bezpieczniej: from math import sqrt liczba=float(input("podaj liczbę:")) if liczba >= 0.0: pierwiastek=sqrt(liczba) print("pierwiastek z ", liczba, " to ", pierwiastek) else: print("podałeś niepoprawną daną") print("to koniec")

instrukcja if wariant trzeci if warunek1 : kod1 elif warunek2 : kod2 else : kod3 jeśli warunek1 będzie równy True, instrukcja if uzna, że należy wykonać kod1 w przeciwnym wypadku zostanie sprawdzony warunek2 i jeśli będzie prawdziwy, zostanie wykonany kod2 jeśli i to zawiedzie, zostanie wykonany kod za else (czyli kod3)

Pierwiastkujemy tak bezpiecznie, że popadamy w szaleństwo: from math import sqrt liczba=float(input("podaj liczbę:")) if liczba == 0.0: print("e, to wiadomo bez liczenia zero!") elif liczba > 0.0: pierwiastek=sqrt(liczba) print("pierwiastek z ", liczba, " to ", pierwiastek) else: print("podałeś niepoprawną daną") print("to koniec")

Zawsze jest więcej niż jeden sposób: from math import sqrt liczba=float(input("podaj liczbę:")) if liczba < 0.0: print("podałeś niepoprawną daną") elif liczba == 0.0: print("pierwiastek z zera to zero, geniuszu ") else: pierwiastek=sqrt(liczba) print("pierwiastek z ", liczba, " to ", pierwiastek) print("to koniec")

instrukcja if uwagi fraza elif może wystąpić wielokrotnie, ale tylko po if może również nie wystąpić w ogóle fraza else może wystąpić co najwyżej jednokrotnie i musi być ostatnia żadna z tych fraz nie może wystąpić bez wcześniejszego wystąpienia frazy if

instrukcja while postać pierwsza while warunek1 : kod1 tak długo, jak warunek1 będzie równy True, instrukcja while będzie wykonywać kod1 jeśli warunek1 będzie równy False przed przed pierwszym wykonaniem kod1, to while zadziała jak if kod1 zostanie pominięty

instrukcja while postać druga while warunek1 : kod1 else: kod2 tak długo, jak warunek1 będzie równy True, instrukcja while będzie wykonywać kod1 (być może nie wykona go ani razu) jeśli warunek1 będzie równy False, wykona się kod2 conajmniej raz

funkcja sleep() z modułu time zawieszenie programu na wskazaną liczbę sekund sleep(n): argument: efekt: wynik: liczba sekund (jako dana rzeczywista) odczekanie wskazanej liczby sekund żaden np: time.sleep(3600) odczeka godzinę odczeka godzinę

Odliczanie from time import sleep czas=int(input("ile sekund odliczyć? ")) while czas > 0: print(czas, "...") czas = czas - 1 sleep(1) print("do dzieła!")

Teraz zmusimy użytkownika do wprowadzenia poprawnej danej from time import sleep czas=0 while czas <= 0: czas=int(input("ile sekund odliczyć? ")) if czas <= 0: print("źle! Podaj jeszcze raz!") while czas > 0: print(czas, "...") czas = czas - 1 sleep(1) print("do dzieła!")

zauważ: jeżeli jedna instrukcja if/while jest zawarta w innej instrukcji if/while, to manifestujemy to wzrastającym zagłębieniem (wcięciem) bądź uważny, kiedy posługujesz się wcięciami złe wcięcia zaowocują złym zachowaniem kodu

Za co kochamy Edsgera Dijkstrę? Edsger Wybe Dijkstra 1930-2002

za Twierdzenie o Strukturze: dowolny algorytm o jednym wejściu i jednym wyjściu można zakodować używając jedynie: złożenia instrukcji instrukcji if instrukcji while

potrenujmy nieco: 1. program, który wybierze większą z dwóch liczb albo napisze, że obie są równe 2. program, który wybierze największą z trzech liczb 3. program, który wybierze największą z czterech liczb 4. program, który wybierze największą z dowolnej liczby liczb

Program #1: a = int(input("podaj pierwszą liczbę: ")) b = int(input("podaj drugą liczbę: ")) if a == b: print("liczby są równe") else: if a > b: print("większa jest liczba", a) else: print("większa jest liczba", b)

Program #2: a = int(input("podaj pierwszą liczbę: ")) b = int(input("podaj drugą liczbę: ")) c = int(input("podaj trzecią liczbę: ")) if a > b: if c > a: print("największa liczba to:", else: print("największa liczba to:", else: if c > b: print("największa liczba to:", else: print("największa liczba to:", c) a) c) b)

magiczna sztuczka z funkcją print() sekwencja: print("ala") print("ma") print("kota") wyprowadzi na ekran: Ala ma kota

ale sekwencja: print("ala", end=" ") print("ma", end=" ") print("kota") wyprowadzi na ekran: Ala ma kota

a sekwencja: print("ala", end="") print("ma", end="") print("kota") wyprowadzi na ekran: Alamakota

Program #2 poprawiony: a = int(input("podaj pierwszą liczbę: ")) b = int(input("podaj drugą liczbę: ")) c = int(input("podaj trzecią liczbę: ")) print("największa liczba to: ", end="") if a > b: if c > a: print(c) else: print(a) else: if c > b: print(c) else: print(b)

zalety: krótszy kod łatwiejsza modyfikacja pamiętaj: jeśli w kilku miejscach robisz to samo, to zastanów się, jak zrobić to tylko w jednym miejscu!

Bądź rzetelny i spolegliwy (*) jeśli twój program może wykonać się na kilka sposobów (ma kilka ścieżek wykonania), to sprawdź, jak zachowuje się w każdej z nich innymi słowy, tak dobierz dane sprawdzające, aby wykonać wszystkie instrukcje w twoim kodzie w ten sposób przeprowadzisz rzetelne testowanie swojego kodu (*) w znaczeniu, w jakim stworzył je prof. Kotarbiński, a nie w jakim używają go politycy

Program #3 a = int(input("podaj pierwszą liczbę: ")) b = int(input("podaj drugą liczbę: ")) c = int(input("podaj trzecią liczbę: ")) d = int(input("podaj czwartą liczbę: ")) max = a if b > max: max = b if c > max: max = c if d > max: max = d print("największa liczba to: ", max, end="")

Program #4 wariant z liczbą liczb: ile = int(input("ile podasz mi liczb? ")) max = -999999999 while ile > 0: a = int(input("podaj liczbę: ")) ile = ile - 1 if a > max: max = a print("największą liczba to ", max)

Program #4 wariant ze strażnikiem : max = -999999999 a = 1 licz = 0 while a!= 0: a = int(input("liczba albo 0 aby zakończyć: ")) if a!= 0: if a > max: max = a licz = licz + 1 if licz > 0: print("największa liczba to ", max) else: print("nie podałeś żadnych liczb :(")

sterowanie wykonaniem pętli: break jeśli chcesz opuścić pętlę wcześniej continue jeśli chcesz wcześniej rozpocząć następny obrót pętli

Program #4 break: max = -999999999 licz = 0 while True: a = int(input("liczba albo 0 aby zakończyć: ")) if a == 0: break if a > max: max = a licz = licz + 1 if licz > 0: print("największa liczba to ", max) else: print("nie podałeś żadnych liczb :(")

pętla for pierwsza postać: for x in range(min,max): kod jeśli z góry wiesz, ile razy będziesz chciał wykonać pętlę potrzebujesz zmiennej, która będzie liczyć za ciebie ale uwaga tu się kryje pewna pułapka jaka?

for x in range(min,max): tzw. zmienna sterująca przybiera kolejne wartości w kolejnych obiegach pętli; po zakończeniu pętli ma nadal ostatnią użytą wartość funkcja tworząca zakres (listę) o krańcach określonych parametrami kraniec dolny kraniec górny + 1

zapamiętaj: range(0,max) możesz zapisać krócej jako: range(max)

pętla for druga postać: for x in range(min,max): kod1 else: kod2 kod2 wykona się, gdy wartości za frazą in ulegną wyczerpaniu

for: for licz in range(0,5): print(licz, end=" ") 0 1 2 3 4

for: for licz in range(0,5): print(licz, end=" ") else: print("!") 0 1 2 3 4!

for x in reversed(range(min,max)): funkcja odwracająca otrzymany zakres (listę)

for: for licz in reversed(range(0,5)): print(licz, end=" ") 4 3 2 1 0

I na koniec zagadka co to jest? for w in range(3): x = 20 s = 1 for l in range(5): for sp in range(x): print(end=" "); for gw in range(s): print("*", end=""); print(); x = x - 1 s = s + 2

:) * *** ***** ******* ********* * *** ***** ******* ********* * *** ***** ******* *********