Forum gimnazjum 112

Dzisiaj jest pt paź 18, 2019 5:38 am

Strefa czasowa UTC+2godz.




Nowy temat Odpowiedz w temacie  [ Posty: 5 ] 
Autor Wiadomość
Post: czw mar 15, 2018 4:55 pm 
Offline
Site Admin

Rejestracja: sob kwie 12, 2014 7:08 pm
Posty: 27
WSTĘP

W związku z faktem, że w podstawie programowej nauczania informatyki w gimnazjum zawarty jest wymóg wprowadzenia elementów algorytmiki i programowania. Na kilku ostatnich lekcjach informatyki pracowaliśmy nad algorytmami. Pora aby przejść do napisania czegoś w komputerze.

Jaki język
Dość trudno jest wybrać odpowiedni język programowania, który byłby wystarczająco prosty aby większość zainteresowanych nie miała problemów ze zrozumieniem, a jednocześnie, żeby wiedza, którą posiądziecie była do czegokolwiek przydatna w przyszłości. Język sugerowany przez ministerstwo na poziomie gimnazjum to tzw. Logo w licznych jego dialektach. Być może część z Was zna ten język jeszcze ze szkoły podstawowej. Nazywany inaczej grafiką żółwia. Sporo osób kojarzy również platformę Scratch. Jest to dobry start ale w gimnazjum musimy przejść na wyższy poziom wtajemniczenia.

Przez wiele lat uczyłem języka Turbo Pascal. O powodach, dla których go wybrałem możecie poczytać we wpisie "Klasy drugie - programowanie". W tym roku postanowiłem trochę zaeksperymentować i spróbować z językiem Python. Jest to bardzo popularny język. Bardzo elastyczny i oferujący ogromne możliwości. Jednocześnie wydaje się być wystarczająco prosty aby stał się pierwszym językiem programowania.

Środowisko pracy
Żeby można było programować potrzebujemy kilku narzędzi. Przede wszystkim trzeba zainstalować samego pythona. Aby to zrobić, wystarczy wejść na oficjalną stronę projektuwww.python.org Następnie wybrać z menu opcję "Donwloads" i wybrać wersję pythona (polecam nowszą, z taką zetkniecie się na lekcjach).
Obrazek

Po zainstalowaniu możemy już zabierać się do pracy ponieważ zostało również zainstalowane bardzo proste środowisko graficzne IDLE. Jeśli praca z IDLE komuś nie będzie odpowiadała w sieci można znaleźć bardzo dużą liczbę różnych edytorów języka python tak darmowych jak i komercyjnych. Wybór należy do Was. W szkole będziemy pracowali w IDLE i w programie Thonny, do pobrania tutaj http://thonny.org/. Mogę polecić również edytor pyCharm. Można go pobrać ze strony https://www.jetbrains.com/pycharm/. Proszę wybierać wersję "Comunity", ta jest darmowa.

Materiały
Oczywiście można korzystać tylko z materiałów tu zamieszczonych, ale w internecie możecie znaleźć dużą ilość bardzo dobrych, darmowych kursów Pythona. Ja będę opierał lekcje o kurs https://www.learnpython.org/pl/ oraz o książkę Paula Barry'ego "Python. Rusz głową! Wydanie II".

Praca ze środowiskiem IDLE
Jak pisałem wcześniej najbardziej podstawowym narzędziem jakim można się posłużyć to IDLE, który otrzymujemy wraz z zainstalowaniem pythona. Znajdujemy skrót IDLE i włączamy. W tym momencie włączy się tzw. wiersz poleceń pythona.
Obrazek
Już tutaj można wprowadzać polecenia języka python i po zatwierdzeniu ich enterem będą się wykonywały. Taka praca jest mało wygodna i nie pozwala na zapisanie naszych programów. Na szczęście środowisko ma wbudowany prosty edytor. Z menu "File" wybieramy "New File", wtedy pojawi się nowy dokument w którym możemy pisać i zapisywać nasze programy. Edytor jest tak prosty, że nie bardzo jest tu co opisywać. Jeśli napiszemy jakiś program, aby go uruchomić wybieramy menu "Run->run module", albo przycisk F5. Program zostanie uruchomiony a rezultaty jego pracy będą widoczne w oknie wiersza poleceń.

Praca z programem Thonny
Na lekcji będzie możliwość korzystania z programu Thonny. Jest to mały ale wydaje się, że bardzo wygodny i pomocny program do pisania aplikacji w pythonie.


Na górę
 Wyświetl profil  
 
Post: sob mar 17, 2018 10:17 am 
Offline
Site Admin

Rejestracja: sob kwie 12, 2014 7:08 pm
Posty: 27
Lekcja 1 - podstawy języka python

PRACA W WIERSZU POLECEŃ - proste obliczenia matematyczne
Do wykonania prostych poleceń języka python wystarczy wiersz poleceń. Może służyć także jako kalkulator. Jeśli wpiszemy 3+5 i naciśniemy enter. Wiersz poleceń wykona to działanie matematyczne i wyświetli wynik.
Obrazek
Przeprowadź kilka eksperymentów z różnymi działaniami matematycznymi i sprawdź z czym może poradzić sobie python, a czego nie można obliczyć. Python "zna" kolejność wykonywania działań matematycznych, ale można (a czasami trzeba) również używać nawiasów do określenia (czy wymuszenia) koniecznej kolejności obliczenia danego wyrażenia. UWAGA - aby wpisać wartość ułamkową używa się zapisu z kropką, a nie z przecinkiem..

operatory
Większość operatorów jest identyczna do tych jakich używacie na matematyce. Ale jest kilka nowych operatorów, które nam się przydadzą.

Potęgowanie - aby podnieść dowolną wartość do dowolnej potęgo używa się symbolów **, np. 4 do kwadratu zapiszemy jako 4 ** 2. Jeśli wpiszemy to w wierszu poleceń, po naciśnięciu entera komputer powinien wyświetlić nam 16 jako wynik.
Obrazek

Reszta z dzielenia - przy rozwiązywaniu pewnych problemów przyda nam się sposób na wyświetlenie reszty z dzielenia. Aby to zrobić używa się znaku procentu np. po wpisaniu do wiersza poleceń 10 % 4 powinniśmy otrzymać wynik 2, ponieważ liczba 4 mieście w 10 dwa razy i zostaje 2 reszty.
Obrazek

Napisy
Być może intuicyjnie wiecie, że teksty, litery to inny rodzaj danych niż liczby. I tak rzeczywiście jest. Można w pythonie wyświetlać dowolny tekst. Aby to zrobić używa się funkcji print(). Ważne jest jednak, żeby napis, który chcemy wyświetlać został zapisany między cudzysłowami lub apostrofami. Przykład:
Obrazek

ZMIENNE
O zmiennych mówiłem już na lekcjach o algorytmach. Przypomnijcie sobie przykład z pudełkami. Zmienna to trochę pudełko w pamięci komputera. Na pudełku jest jego nazwa (czyli nazwa naszej zmiennej). W pudełku może być jakaś wartość. Jeśli zapiszemy sobie a=5 to w programowaniu będzie to oznaczało, że mamy pudełko, które nazywa się "a", a w środku znajduje się wartość 5. I kiedy używamy tej nazwy w programie, komputer wyciąga nam z tego pudełka tą wartość i używa jej w taki sposób w jaki opisaliśmy to w programie. Na przykład jak w wierszu poleceń wpiszemy b=10, a potem print(b). Komputer po pierwsze stworzy odpowiednie pudełko w pamięci komputera, następnie funkcja print() wyciągnie wartość jaką wrzuciliśmy do pudełka i wyświetli nam to na ekranie.
Obrazek
Możemy użyć tak zdefiniowanej zmiennej używać w naszych obliczeniach. Czyli jeśli w wierszu poleceń wpiszemy b+20 po naciśnięciu entera komputer powinien wyświetlić nam wartość 30 (bo b=10 + 20 = 30).
Istnieje możliwość jednoczesnego przypisania wielu wartości do wielu zmiennych jednocześnie np. a, b = 3, 4 spowoduje stworzenie zmiennej "a" z wartością 3 i zmiennej "b" z wartością 4.

Nazwy zmiennych
Ogólnie nazwy zmiennych mogą prawie dowolne. Jest jednak kilka reguł, których musimy się trzymać:
  • nazwa zmiennej nie może rozpoczynać się od liczby tj. 1a = 5 zła nazwa, ale a1 = 5 prawidłowa nazwa,
  • python rozróżnia wielkości liter czyli a=5 to inna zmienna niż A=10, (na razie sugeruję używanie w odniesieniu do wszystkich zmiennych małych liter)
  • jako nazwę zmiennej nie można używać słów będących poleceniami samego języka python np. nie możemy użyć słowa "for" jako nazwy zmiennej bo jest to nazwa instrukcji pętli (o których będziemy mówić w przyszłości). Eksperymentalnie sprawdziłem i okazało się, że można np. przypisać wartość do słowa "print" pomimo tego, że jest to również nazwa funkcji wyświetlającej napisy na ekranie. Nie zalecam jednak takich nazw bo przy większych programach łatwo można samemu pomylić się w tym co piszemy w programie,
  • zalecam (ale nie jest to żadna reguła), żeby tworzyć takie nazwy zmiennych, aby nawet po jakimś czasie po napisaniu programu łatwo było skojarzyć i zrozumieć co miała zapisywać w sobie dana zmienna. Jeśli wszystkie zmienne w programie nazwiemy a1, a2, a3, a4.... itd. to pomimo, że jest to prawidłowe i działające, ale w dłuższej perspektywie nie będzie szczególnie pomocne. Jeśli chcemy stworzyć zmienną, która ma przechowywać na przykład wynik mnożenia to najlepiej nazwać ją "wynik" lub "iloczyn".
  • nazwy zmiennych nie mogą składać się z 2 lub więcej oddzielnych wyrazów tj. moja zmienna = 5 nie będzie działać. Jeśli chcemy (a często jest to dobry pomysł) użyć więcej wyrazów do opisania naszej zmiennej powinnyśmy użyć stylu "wielbłądowego" tzw. "camel case". Na przykład mojaBardzoFajnaZmienna = 5, przy czym pierwsze słowo powinniśmy pisać małą literą.

Typy danych
Dane w otaczającym nas świecie mogą być różnych rodzajów. Taki najprostszy podział to liczby i tekst. Ale w programowaniu m.in. ze względu na zasadę działania samego komputera dane dzielą się na kilka różnych typów.
Na lekcjach będziemy używali następujących typów danych:
  • int (integer) - liczby całkowite np. 1, 6, -4 itp.
  • float - liczby rzeczywiste np. 3.14, -4,67 itp.
  • string - ciągi dowolnych znaków czyli np. wszelkie napisy, ale również znaki typu "_)(&^%" itp.
  • bool (boolean) - typ logiczny, w którym można zapisać tylko dwie wartości "True" (prawda) lub "False" (fałsz)

PIERWSZY PROGRAM
Do tej pory wszystko co robiliśmy to były pewne eksperymenty z wierszem poleceń. Teraz spróbujemy napisać i uruchomić prawdziwy program. Po pierwsze musimy otworzyć edytor. W środowisku IDLE naciśnij menu "File", a następnie "New File". Otworzy się nowe okno edytora. Możemy już w nim pisać, ale żeby program można było uruchomić należy go zapisać. Wchodzimy do menu "File", następnie wybieramy "Save", albo "Save as..." i zapisujemy plik w dowolnym miejscu i pod dowolną nazwą. Na lekcji będę podawał gdzie zapisujecie i pod jaką nazwą. Program trzeba zapisywać za każdym razem jeśli poczynimy w nim jakiekolwiek zmiany i chcemy go uruchomić. Środowisko IDLE jest na tyle sprytne, że w momencie kiedy próbujemy uruchomić niezapisany program, informuje nas o tym i pyta czy zapisać przed uruchomieniem, wystarczy wtedy nacisnąć "ok" lub klawisz enter.

Naszym pierwszym programem będzie algorytm dodania do siebie 2 liczb.
Kod:
a=3
b=4
wynik=a+b
print(wynik)

Żeby uruchomić program (pamiętaj o zapisaniu) trzeba nacisnąć klawisz F5 na klawiaturze lub wybrać menu "Run" a następnie "run module". Program uruchomi się i wyświetli rezultat swojego działania w wierszu poleceń. Jak ustaliliśmy na wcześniejszej lekcji za każdym razem jak uruchamiamy nasz program komputer wyświetli na wartość "7" jako wynik. Chyba że zmienimy wartości naszych zmiennych. Ustaliliśmy wtedy również to, że wygodniej by było gdyby użytkownik mógł sam wpisywać wartości, które chce dodawać. Musimy więc nasz program trochę zmodyfikować.

Program dodający 2 dowolne liczby
Kod:
a=int(input("podaj liczbę: "))
b=int(input("podaj liczbę: "))
wynik=a+b
print(wynik)

Zmieniłem dwie pierwsze linijki kodu. W związku z tym jak python odczytuje dane wczytywane z klawiatury trzeba zastosować określone funkcje i tak:
  • funkcja input() - czyta z wpisywane z klawiatury wartości. Wszystkie wartości odczytane z klawiatury automatycznie traktowane są jako napisy (typ string), więc jeśli chcemy żeby wpisane liczby były traktowane jako liczby a nie jako napisy musimy zastosować funkcję int() opisaną poniżej. Wewnątrz funkcji input() w cudzysłowach można wstawić napis, który będzie poprzedzał moment odczytu danych.
  • funkcja int() - zmienia wartość podaną jako argument (wewnątrz nawiasu) na liczbę całkowitą
    Jak widać na powyższym przykładzie funkcje można ze sobą łączyć. Jak działa wpis "a = int(input("napis"))? Należy to rozumieć w ten sposób, że pod zmienną "a" podstaw to co odczytasz z
    klawiatury i ma to być zamienione z napisu na liczbę całkowitą.
  • funkcja float() - zmienia wartość podaną jako argument (wewnątrz nawiasu) na liczbę rzeczywistą

Trzeba pamiętać też, że zmiana ciągu znaków na taki czy inny typ danych nie musi następować tylko przy wczytywaniu wartości z klawiatury. Można pierwsze coś wczytać z klawiatury (i będzie to traktowane tylko jako napis), a dopiero w innym miejscu kodu zmienić ten "napis" na liczbę.
Przykład:
Kod:
liczba1 = input("podaj dowolną liczbę")
#dowolna liczba linijek innych poleceń
liczba1 = int(liczba1)


Na górę
 Wyświetl profil  
 
Post: śr kwie 04, 2018 2:29 pm 
Offline
Site Admin

Rejestracja: sob kwie 12, 2014 7:08 pm
Posty: 27
Lekcja 2 - instrukcja warunkowa IF

Zdarza się, że potrzebujemy aby program wykonał pewne polecenia tylko jeśli spełniony zostanie zadany warunek np. "wyświetl napis na ekranie jeśli zmienna jest większa od zera", albo chcemy żeby komputer NIE wykonał określonych instrukcji jeśli jakiś warunek został spełniony np. kiedy chcemy dzielić przez siebie dwie liczby to nie możemy pozwolić aby komputer wykonał działanie dzielenie JEŚLI druga wartość równa się zero. Aby to osiągnąć możemy skorzystać z czegoś co nazywa się instrukcją warunkową.

W języku Python wygląda to następująco:
Kod:
if a>0:
   print("a jest większe od zera")


Należy czytać to w następujący sposób:
jeśli prawdą jest że a jest większe od zera, wyświetl na ekranie napis "a jest większe od zera"

Jeśli pamiętacie przykłady bloków decyzyjnych jakie rysowaliśmy w naszych algorytmach, taka instrukcja warunkowa to może być właśnie pytanie z bloku decyzyjnego. Przypominam również, że w bloku decyzyjnym oprócz drogi na TAK, musieliśmy pamiętać o określeniu co ma się dziać w naszym algorytmie jeśli na pytanie odpowiedzieliśmy NIE. W instrukcji warunkowej taka możliwość też jest chociaż w przeciwieństwie do algorytmu nie jest obowiązkowa. Możemy określić co ma się zdarzyć kiedy warunek nie jest prawdziwy ale nie musimy. Będzie to wyglądało następująco:

Kod:
a=-5
if a>0:
   print("a jest większe od zera")
else:
   print("a NIE jest większe od zera")


W tym przypadku komputer zada pytanie "czy prawdą jest że a jest większe od zera", jak widać a równa się -5, więc jest mniejsze od zera. Czyli odpowiedź na to pytanie brzmi NIE. W takiej sytuacji komputer pominie polecenie "print ("a jest większe od zera")
przejdzie do polecenia ELSE: i wykona wszystko co znajduje się po poleceniu ELSE. Można to tłumaczyć jako "w przeciwnym wypadku". Czyli jeśli coś jest prawdą wykonać określone polecenie/polecenia, w przeciwnym wypadku wykonaj inne polecenie/polecenia.
Komputer nigdy nie wykona wszystkich poleceń. Zawsze wybierze tylko jedną opcję.

Wcięcia
Być może już zwróciliście uwagę na to, że po poleceniach np. po IF lub ELSE mamy dwukropek, a treść pod poleceniami jest "wcięta" (jakbym użył tabulator). Ten element jest bardzo ważny. W ten sposób możemy przekazać komputerowi, które polecenia należą do instrukcji warunkowej. To znaczy komputer po zadaniu pytania "jeśli coś jest prawdą...." wykona tylko te linijki, które są wcięte.
Przykład
Kod:
a=10
if a>0:
   print("a jest większe od zera")
   print("jeszcze jakiś napis")
   print("i jeszcze inny napis")
else:
   print("a NIE jest większe od zera")

Komputer na pytanie czy a jest większe od zera wykona wszystkie wcięte linie. W innych językach programowania używa się na przykład nawiasów klamrowych w języku c++ ten fragment kodu wyglądałby następująco:
Kod:
if (a>0){
cout << "a jest większe do zera;
cout << "jeszcze jakiś napis";
cout << "i jeszcze inny napis";
}
else{
cout << "a NIE jest większe od zera";
}


Ważna zasada. O ile w innych językach programowania wcięcia są zalecane (jak widać na przykładzie z c++ nie zastosowałem wcięć, chociaż mogłem i zwykle to robię), m.in. aby poprawić czytelność kodu. W pythonie wcięcia są WYMAGANE, jeśli ich nie zastosujemy komputer NIE skompiluje naszego programu lub jeśli skompiluje, nasz program nie będzie działa tak jakbyśmy tego oczekiwali.

Komentarze
W przykładach poniżej można zauważyć, że czasami używam znaku # i piszę po nim różne rzeczy. Ten znak pozwala nam w kodzie programu zapisać tzw. komentarz tj. dowolny tekst, który zostanie zignorowany podczas kompilacji programu. Zaleca się stosowanie komentarzy do opisywania poszczególnych fragmentów kodu. w ten sposób nawet osoba nie będąca autorem programu może łatwiej zorientować się do czego służą poszczególne jego części. W różnych edytorach komentarze mogę podświetlać się na różne kolory w edytorze IDLE (ten na którym pracujecie w szkole), podświetla komentarze na czerwono. W komentarzu można używać dowolnych znaków.

PRZYKŁADY
Zadanie 1
Napisz program, który potrafi określić która z wpisanych z klawiatury liczb jest większa. Użyj instrukcji warunkowej IF.
Kod:
liczba1 = int(input("Podaj pierwszą liczbę: "))
liczba2 = int(input("Podaj drugą liczbę: "))

if liczba1 > liczba2:
    print("a jest większe")
else:
    print("b jest większe")


Zadanie 2
Napisz program, który dzieli 2 liczby przez siebie, pamiętaj druga wartość nie może równać się zero.
Kod:
liczba1 = int(input("Podaj pierwszą liczbę: "))
liczba2 = int(input("Podaj drugą liczbę: "))

if liczba2 == 0:
    print("nie dziel przez 0")
else:
    wynik = liczba1 / liczba2
    print(wynik)


Zadanie 3
Napisz prosty kalkulator (4 podstawowe operacje matematyczne).
Kod:
a = int(input("Podaj liczbę: "))
b = int(input("Podaj liczbę: "))
wybor = input("naciśnij +,-,*,/ aby wybrać operację ")

if wybor == "+":
    wynik = a + b
elif wybor == "-":
    wynik = a - b
elif wybor == "*":
    wynik = a / b
else:
    if b == 0:
        print("Nie dziel przez 0")
        wynik = "brak wyniku"
    else:
        wynik = a / b
print(round(wynik))



Zadanie 4
Napisz quiz wiedzowy. Min 10 pytań. Program powinien umieć zliczać zdobyte punkty.
Kod:
punkty = 0
print("Odpowiedz na zadane pytania")
#pytanie 1
odp = input("Jakie miasto jest stolicą Polski: ")
if odp == "Warszawa":
    print("Brawo dobrze")
    punkty = punkty + 1
else:
    print("Przykro mi źle")

#pytanie 2
odp = input("Jaki mamy rok: ")
if odp == "2018":
    print("zgadłeś/łaś")
    punkty = punkty + 1
else:
    print("Niestety, próbuj dalej")

#pytanie 2
odp = input("Czy luty w tym roku ma 29 dni: ")
if odp == "nie":
    print("zgadłeś/łaś")
    punkty = punkty + 1
else:
    print("źle")
#######################################
# INNE PYTANIA WEDLUG TEGO SAMEGO WZORU
#######################################
print("Zdobyłeś/aś ",punkty," pkt")


Do pobrania
W pliku warunki.py są zapisane wszystkie powyższe przykłady. Proszę jednak pamiętać, że wszystkie powyższe przykłady znajdują się w pojedynczym pliku. Plik uruchomi się i zadziała prawidłowo. Sugeruję rozdzielenie przykładów na pojedyncze pliki. Uwaga, po kliknięciu na odnośnik, plik najprawdopodobniej otworzy się w przeglądarce. W związku z problemami z prawidłowym wyświetlaniem polskich znaków sugeruję kliknąć na odnośniku prawym klawiszem myszy i wybranie polecenia "Zapisz element docelowy jako..."

Przykłady zadań do samodzielnego rozwiązania

Zadanie 1
Napisz program, który na podstawie ilości wpisanych punktów, wypisze jaką otrzymalibyśmy ocenę.

Zadanie 2
Napisz program, który na podstawie liczby przepracowanych nadgodzin doliczy premię do wypłaty pracownika.

Zadanie 3
Napisz program, który określi czy wpisana liczba jest dodatnia czy ujemna.

Zadanie 4
Napisz program, który po wpisaniu wagi bagażu, określi czy dana waga jest dozwolona czy konieczna jest dopłata jeśli tak to wyliczy cenę biletu z dopłatą.

Zadanie 5
Napisz program, który oblicza pole powierzchni trójkąta, program musi sprawdzać poprawność wprowadzanych danych.

Zadanie 6 *
Napisz program, który "weryfikuje" tożsamość na podstawie wprowadzonego imienia i wieku.


Na górę
 Wyświetl profil  
 
Post: ndz cze 03, 2018 10:50 am 
Offline
Site Admin

Rejestracja: sob kwie 12, 2014 7:08 pm
Posty: 27
LEKCJA 3 - Pętla WHILE DO
Wstęp
Do tej pory wszystkie programy, które były tworzone na lekcji działały w sposób "liniowy" czyli wykonywały się linia po linii. Nie było możliwości powrotu do raz wykonanej linii, nie było też możliwości powtórzenia określonej części kodu. Można było oczywiście napisać to jeszcze raz niemniej jest to czaso- i pracochłonne. Z pomocą mogą przyjść specjalne struktury programistyczne nazywane pętlami. Na naszych lekcjach zapoznamy się z 2 różnymi pętlami. Zaczniemy od pętli WHILE.

składnia
Rozpoczynamy od słowa kluczowego WHILE następnie należy wstawić warunek i na końcu dwukropek : dalej wpisuje się instrukcje jakie mają zostać wykonane jeśli warunek zostanie spełniony. Trzeba pamiętać, że jeśli chcemy aby instrukcje były wykonywane w pętli ("należały" do niej), musimy wstawiać wcięcia.
Kod:
WHILE warunek (jest prawdziwy) :
    instrukcje
    instrukcje

Wszystkie wcięte "instrukcje" w powyższym przykładzie będą wykonywały się tak długo jak długo warunek jest prawdziwy. Jeśli warunek nie jest prawdziwy wcięte instrukcje zostaną pominięte.

Przykład
Program poniżej nie jest napisany do końca prawidłowo. Będzie wykonywał się w nieskończoność. Ponieważ wewnątrz pętli WHILE nie robimy nic aby warunek z prawdziwego zmienił się w nieprawdziwy. Rezultatem działania tego programu będzie nieustanne wypisywanie wartości zmiennej a, w związku z tym, że w linii 1 nadajemy zmiennej a wartość 0 na ekranie będziemy widzieli ciągłe wypisywanie "0".
Kod:
1 a=0
2
3 WHILE a<10:
4   print(a)

Co zrobić aby program działał prawidłowo?
Aby program działał prawidłowo, czyli żeby mógł się zakończyć musimy spowodować aby warunek a<10 przestał być prawdziwy. Czyli musimy wewnątrz pętli WHILE zwiększyć/zmienić zmienną a. Możliwe są różne rozwiązania, poniżej przedstawię 2.

Rozwiązanie 1
można jednorazowo wewnątrz pętli podstawić pod zmienną a liczbę większą lub równą 10. Patrz linia 5 W ten sposób program przynajmniej raz wykona wszystko co znajduje się w pętli. Wynikiem działania tego programu będzie jednorazowe wyświetlenie na ekranie wartości zmiennej a w tym wypadku będzie to "0".
Kod:
1 a:=0
2
3 WHILE a<10:
4   print(a)
5  a=11

Rozwiązanie 2
Możemy też sprawić aby pętla wykonała zawarte w niej instrukcje więcej niż raz. Możemy zwiększać wartość zmiennej a stopniowo. Przy użyciu następującego zapisu:
a=a+1 lub krócej a+=1
Ten zapis należy rozumieć w następujący sposób:
a (nowa pusta wartość a) = a (stara wartość a nadana wcześniej w naszym przykładzie a=0) +1 (o tyle jednorazowo zmieni się / zwiększy się wartość a).
Wynikiem działania programu będzie wyświetlenie kolejnych liczb od 0 do 9.
Kod:
1 a=0
2
3 WHILE a<10:
4    print(a)
5     a=a+1

Program 1
Napisz program, który potrafi sprawdzić czy wpisywane z klawiatury hasło jest prawidłowe. Należy użyć pętlę WHILE.

Rozwiązanie
Przedstawię rozwiązanie omawiając szczegółowo kolejne linie.
linia 1: pod zmienną "haslo" zostanie podstawiony tekst wpisany z klawiatury
linia 2: Początek pętli while, zostaje sprawdzony warunek jeśli jest prawdziwy (tj. to co wpisaliśmy z klawiartury jest innym tekstem niż ustawione hasło, w przykładzie ciąg znaków "abc")
linia 3: wyświetlenie napisu na ekranie
linia 4: pod zmienną "haslo" zostanie podstawiony tekst ponownie wpisany z klawiatury
linia 5: wyświetlenie napisu na ekranie
Kod:
1 haslo=input("wpisz hasło: ")
2 while haslo!="abc":
3     print("złe hasło")
4     haslo = input("wpisz hasło: ")
5 print("zalogowany")

Program 2
Napisz program, który potrafi dodać do siebie dowolną ilość liczb. Program powinien przyjmować nowe liczby do dodawania tak długo dopóki nie wpiszemy liczby 0. Ostatecznie powinien wyświetlać sumę wpisanych liczb. Należy użyć pętli WHILE. Na lekcji ten program zmieniliśmy również w ten sposób żeby zamiast sumowania, obliczał średnią z wpisanych wartości. W pliku z tym przykładem jest tylko możliwość sumowania. Poniżej innym kolorem oznaczyłem linie które trzeba dopisać, żeby możliwe było uzyskanie średniej.

Rozwiązanie
Rozwiązanie linia po linii.
linia 1: wyświetlenie tekstu na ekranie
linia 2: wyświetlenie tekstu na ekranie
linia 3: tworzę zmienną suma, podstawiam wartość początkową
linia 4: tworzę zmienną liczba, podstawiam wartość początkową, wartość początkowa może być dowolna byle różna od zera
linia 5: tworzę zmienną licznik, podstawiam wartość początkową
linia 6: początek pętli while, pętla działa tak długo, jak długo będziemy z klawiatury wpisywali wartości inne niż zero
linia 7: pod zmienną liczba podstawiamy wartość wpisaną z klawiatury
linia 8: do zmiennej suma dodajemy wartość ze zmiennej liczba i wynik ponownie wstawiamy pod zmienną suma (krótki zapis suma += liczba)
linia 9: przy każdym przejściu pętli wartość zmiennej licznik zwiększa się o 1
linia 10: wyświetlenie napisu na ekranie
Kod:
1 print("program dodający liczby")
2 print("wpisanie 0 kończy działanie programu")
3 suma = 0
4 liczba = -1
5 licznik = -1
6 while liczba != 0:
7    liczba = int(input("Podaj liczbę: "))
8    suma = suma + liczba
9    licznik = licznik + 1
10 print("suma/średnia =", suma/licznik)

Program 3
Program gra w zgadywanie. Program losuje liczbę, a my próbujemy zgadnąć co to za liczba. Jako podpowiedź po każdej próbie program informuje czy podana przez nas liczba jest za mała czy za duża.

Rozwiązanie
Rozwiązanie linia po linii:
linia 1: w tym programie konieczne będzie wylosowanie liczby z pewnego zakresu (w naszym przykładzie od 1 do 100) w związku z tym musimy zaimportować określoną metodę z zewnętrznej biblioteki. (w skrócie jeśli chcemy coś wylosować trzeba to wpisać)
linia 3: wyświetlenie napisu na ekranie
linia 4: wpisanie z klawiatury liczby, która jest naszą pierwszą próbą zgadnięcia szukanej liczby
linia 5: pod zmienną zagadka podstawiamy wylosowaną liczbę z zakresu wpisanego w nawiasie,
linia 6: pod zmienną licznik podstawiamy wartość 1, ta zmienna zlicza liczbę prób
linia 7: początek pętli while, pętla działa tak długi dopóki liczba, którą proponujemy jest inna od tej, którą wylosował komputer
linia 8: wyświetlenie napisu na ekranie
linia 9: początek instrukcji warunkowej if, warunek sprawdza czy liczba wpisana z klawiatury jest mniejsza czy większa od tej, którą wylosował komputer
linia 10: zwiększenie zmiennej licznik o 1, (krótki zapis licznik+=1)
linia 11: wyświetlenie napisu na ekranie
Kod:
1 from random import randrange
2
3 print("zgadnij liczbę z zakresu 1-100")
4 liczba = int(input("Zgaduj: "))
5 zagadka = randrange(1, 100)
6 licznik = 1
7 while liczba != zagadka:
8    print("Niestety zła liczba")
9    if liczba < zagadka:
10        print("Za mała")
11   else:
12        print("Za duża")
13    liczba = int(input("Zgaduj dalej: "))
14    licznik = licznik + 1
15 print("Brawo zgadłeś/aś za", licznik, "razem")


Do pobrania
Poniżej gotowe rozwiązania do wszystkich trzech przykładów:
haslo.py przykład 1
dodawanieLiczb.py przykład 2
zagadka.py przykład 3

Uwaga, po kliknięciu na odnośnik, pliki najprawdopodobniej będą otwierały się w przeglądarce. W związku z problemami z prawidłowym wyświetlaniem polskich znaków sugeruję kliknąć na odnośniku prawym klawiszem myszy i wybranie polecenia "Zapisz element docelowy jako...". Żeby otworzyć plik trzeba kliknąć prawym klawiszem myszy na pliku i wybrać polecenie: "Edit with IDLE".

Przykładowe zadania, których można spodziewać się na kartkówce
Zadanie 1
Napisz program, który wyświetla wszystkie liczby parzyste od 0 do 20, użyj pętli WHILE.

Zadanie 2
Napisz program, który oblicza obwód trójkąta, przy czym każdy bok jest innej długości, użyj pętli WHILE.

Zadanie 3
Napisz program obliczający dowolną potęgę wpisanej liczby, użyj pętli WHILE.

Zadanie 4
Napisz program, który oblicza pole kwadratu, długość boku musi być dodatnia. Użyj pętli WHILE do sprawdzania czy długość boku jest dodatnia.

Zadanie 5
Napisz program który podnosi dowolną liczbę do dowolnej potęgi. Użyj pętli WHILE.


Na górę
 Wyświetl profil  
 
Post: ndz cze 03, 2018 12:27 pm 
Offline
Site Admin

Rejestracja: sob kwie 12, 2014 7:08 pm
Posty: 27
LEKCJA 4 - Pętla FOR

Wstęp
Kolejnym rodzajem pętli jest pętla FOR. Pozwala na powtórzenie określonych części programu dowolną ilość razy. W przeciwieństwie do pętli WHILE dość trudno spowodować efekt "nieskończoności" pętli. Zwykle wykona się tylko tyle razy na ile została zaprogramowana.

składnia
O ile w większości języków programowania składnia pętli FOR jest raczej stała, to Python oferuje sporą elastyczność w zastosowaniu, a co za tym idzie konkretne zastosowania w niewielkim stopniu różnią się składnią. Nie przedstawię wszystkich możliwości, tylko te omawiane i ćwiczone na lekcji.


składnia 1
Najprostsza składnia pętli for wygląda w ten sposób:
for zmienna in range(zakres):
na przykład:
Kod:
for x in range(10):
   print(x)

Zadziała to w ten sposób, że komputer będzie odliczał od 0 do wartości umieszczonej w nawiasie po słowie kluczowym range. Gdy pętla rozpoczyna swoje działania wartość zmiennej = 0 i po każdym wykonaniu instrukcji wewnątrz pętli zwiększana jest o 1. Czyli w przykładzie powyżej program wyświetli liczby od 0 do 9.

składnia 2
Czasami potrzebujemy aby odliczanie rozpoczynało się od wartości innej niż 0. Wtedy pętla FOR wygląda nastepująco:
Kod:
for x in range(5, 10):
   print(x)

W tym przypadku odliczanie rozpocznie się od wartości 5 a skończy na wartości 9. Możemy rozpoczynać odliczanie również od wartości ujemnych np. range(-5, 6).

składnia 3
Domyślnie w pętli for zmienna sterująca pętlą zwiększa swoją wartość o 1. Czasami potrzebujemy, żeby odliczanie odbywało się inaczej na przykład co 2, 3 itp.. Aby można to było zrobić nalezy wewnątrz nawiasu po słowie kluczowym range umieścić wartość, która będzie określała o ile ma zmieniać się zmienna x.
Kod:
for x in range(0, 10, 2):
   print(x)

W tym przykładzie pętla for powinna wyświetlić wartości 0, 2, 4, 6, 8.

składnia 4
Oprócz odliczania "w górę" można również odliczać "w dół" czyli zmniejszać wartości zmiennej sterującej. Aby to osiągnąć wystarczy tylko odpowiednio zapisać wartości w nawiasie po słowie kluczowym range.
Kod:
for x in range(10, 0, -1):
   print(x)

W powyższym przykładzie pętla odliczy od 10 do 1 co 1. Czyli 10, 9, 8, ..., 2, 1.

składnia 5
W tym miejscu pojawią się pewne elementy pythona, które wymagają dokładnego i raczej obszernego tłumaczenia. Proszę więc przyjąć poniższe stwierdzenia "na wiarę" (lub poszukać na własną rękę).
Pętle for pozwala na "wymienianie" elementów pewnych zbiorów. Na przykład dowolne słowo czy zdanie to zbiór liter. Słowo "python" składa się z 6 liter. Pętla for pozwala wymienić i wyświetlić oddzielnie każdą z liter w podanym słowie czy zdaniu.
Kod:
napis = "python"
for x in napis:
   print(x)

Zwracam uwagę, że trochę zmieniła się składnia pętli for. Nie używamy w tym przypadku słowa kluczowego range zamiast tego wstawiamy nazwę zmiennej. W naszym przykładzie zmienna o nazwie napis. Pętla "przejdzie" po całym wyrazie litera po literze. W związku z tym, że instrukcją wewnątrz pętli jest funkcja print, wyświetlająca zawartość zmiennej x to efektem działania będzie wyświetlenie wszystkich liter w wyrazie "python" (każda w nowej linijce).

składnia 6
W językach programowania funkcjonuje wiele różnych rodzajów zbiorów. Najprostszym i najczęściej spotykanym rodzajem zbioru w programowaniu jest coś co nazywamy tablicą, która w pythonie funkcjonuje pod nazwą lista. Podobnie jak w poprzednim przykładzie pojęcie jest tak obszerne, że zasługuje na całą oddzielną lekcję.
Kod:
owoce = ["jabłka", "banany", "truskawki"]
for x in owoce:
   print(x)

W pierwszej linii przykładu deklaruję nową listę, tj. wewnątrz nawiasów kwadratowych wypisuje po przecinkach kolejne elementy listy. W związku że tu są to napisy musiałem umieścić je w cudzysłowach, gdyby to miały być liczby wystarczyłoby podać ich wartości np. [3, 4, 5, 6]. I znów w pętli nie występuje słowo range zamiast tego wpisuje nazwę listy w naszym przykładzie słowo owoce. Efektem działania będzie wyświetlenie wszystkim owoców z listy, każdy owoc w nowej linii.

Do pobrania
petla_for.py

Przykład 1
Napisz program, który oblicza obwód dowolnego wielokątu nieforemnego.
Kod:
1 ile_bokow = int(input("ile boków ma figura: "))
2 obwod = 0
3 for x in range(0,ile_bokow):
4   bok = int(input("podaj długość boku"))
5   obwod = obwod + bok
6 print("obwód =",obwod)

Rozwiązanie
Rozwiązanie linia po linii:
linia 1: pod zmienną ile_bokow podstawiamy wartość wpisaną z klawiatury
linia 2: pod zmienną obwod podstawiam wartość zero
linia 3: pętla for odlicza w przedziale od 0 do wartości 1 mniejszej od ilości boków
linia 4: wczytanie z klawiatury długości danego boku i podstawienie tej wartości pod zmienną bok
linia 5: dodawanie kolejnych długości boków do zmiennej obwod
linia 6: wyświetlenie zmiennej

Do pobrania
obwod.py

Przykład 2
Napisz program liczący ile określonych liter znajduje się w podanym napisie.
Kod:
1 print("wszystkie napisy i litery wpisuj małymi literami")
2 litera = input("jaką literę chcesz zliczać: ")
3 napis = input("podaj napis w którym policzone zostaną litery: ")
4 licznik = 0
5 for x in napis:
6     if x == litera:
7         licznik = licznik + 1
8 print("W napisie: ");
9 print(napis)
10 print("litera: ", litera, "znajduje się", licznik, "razy")

Rozwiązanie
Rozwiązanie linia po linii:
linia 3: wczytanie napisu w którym nastąpi poszukiwanie żądanej litery. Zwróćcie uwagę, że wielkość liter ma znaczenie tj. jeśli będziemy chcieli szukać lityry "P" w słowie "python" to jej nie znajdziemy. Możemy co najwyżej znaleźć literę "p". Oczywiście python oferuje tu spory wachlarz rozwiązań takiego problemu, ale wolę żeby przykładowe programy były możliwie jak najprostsze. Zachęcam do poszukania rozwiązania problemu wyszukania liter pisanych różną wielkością
linia 4: ustawiam wartość zmiennej licznik na 1
linia 5: początek pętli for, pętla "przejdzie" po wszystkich literach ciągu znaków w zmiennej napis, kolejne litery będą podstawiane do zmiennej x
linia 6: początej instrukcji warunkowej IF, jeśli w zmiennej x zapisana jest poszukiwana przez nas litera, w następnej linii zwiększamy wartość zmiennej licznik o 1
linie 8-10: wyświetlenie wyników działania

Do pobrania
litery.py

Przykład 3
Napisz program obliczający i wyświetlający tabliczkę mnożenia w zakresie 1-100.

Rozwiązanie
Dobrym przykładem pokazującym możliwości pętli FOR jest program wyświetlający tabliczkę mnożenia. Spróbuję pokazać pewne możliwości pętli FOR związane z właściwością powiększania się zmiennej sterującej o 1. Na klasycznej tabliczce mnożenia jaką znamy ze szkoły podstawowej wynik mnożenia odczytujemy na przecięciu wiersza i kolumny.

Jak napisałem wcześniej pętla FOR będzie idealnym rozwiązaniem do tego zadania bo podobnie jak w klasycznej tabliczce mnożenia gdzie liczby w 1 kolumnie i 1 wierszu rosną, tak zmienna sterująca w pętli FOR zwiększa się o jeden.

Rozwiązanie pośrednie
Przykład poniżej, nie jest jeszcze ostatecznym rozwiązaniem. Jak już pisałem dzięki temu, że pętla FOR w każdym uruchomieniu zwiększa zmienną sterującą (w tym przykładzie zmienna a o 1, można ją po każdym uruchomieniu pomnożyć przez dowolną liczbę. W tym przykładzie przez 3 (linia 2). Czyli po pierwszym uruchomieniu zmienna a=1 więc działanie w linii 2 wygląda tak: 1*3, przy drugim uruchomieniu zmienna a powiększy się o 1 więc działanie będzie wyglądało tak: 2*3. Zmienna a będzie się powiększała o 1 aż dojdzie do 10 (w tym przykładzie). Wynikiem działania będzie wyświetlenie kolejnych liczb: 3 6 9 12 15 18 21 24 27 30
Kod:
FOR a in range(11):
   wynik=a*3
   print(wynik)

Na razie to za mało bo co prawda można zmieniać liczbę w linii 2 z 3 na dowolnie inną ale ciągle nie otrzymamy wyglądu klasycznej tabliczki.

Rozwiązanie
Aby w pełni rozwiązać to zadanie trzeba użyć dwóch pętli FOR. Można mnożyć przez siebie zmienne sterujące obu pętli.
Kod:
1 for x in range(1,11):
2    for y in range(1,11):
3        print(x*y, end="\t")
4    print()

Linia po linii:
linia 1: pierwsza pętla która wykona się 10 razy a zmienna a będzie się zmieniała od 1 do 10. Czyli wszystko między linią 2 i 4 wykona się 10 razy.
linia 2: druga pętla, która wykonuje się 10 razy przy każdym uruchomieniu pierwszej pętli. Tzn. Pierwsza pętla uruchamia się pierwszy raz i w czasie tego pierwszego uruchomienia druga pętla uruchamia się 10 razy. W czasie swojego działania używa zmiennej x z pierwszej pętli i mnoży ją przez zmienną y z drugiej pętli. Czyli przy pierwszym uruchomieniu pierwszej pętli a=1 a po uruchomieniu drugiej pętli zmienna b zmienia się od b=1 do b=10 a za każdym razem jak uruchamia się druga pętla wykonywane jest polecenie w linii 3.
linia 3: wyświetlenie napisu na ekranie, mnożona jest zmienna x przez zmienną y, wynik od razy wyświetlany jest na ekranie, zapis end="\t" powoduje, że po pierwsze po wyświetleniu jednego wyniki program NIE przechodzi do nowej linii, a po drugie po wyniku wstawiany jest tabulator, dzięki czemu poszczególne wyniki wyświetlają się w równych kolumnach
linia 4: po wyświetleniu 10 wyników chcemy, żeby w końcu kolejny wynik wyświetlał się w nowej linii, aby to osiągnąć można wstawić puste polecenie print().

Do pobrania
tabliczka.py

Extrasy
Uważam że najlepszą metodą nauki programowania jest praktyczne ćwiczenie. A dobrym ćwiczeniem pętli może być rysowanie w pythonie. Python oferuje spore możliwości w tym zakresie. Poniżej wrzucę kilka przykładów grafiki w pythonie zachęcam do własnych eksperymentów. Internetem jest przepełniony tutorialami o pythonie czy o tworzeniu grafiki w pythonie.

Najłatwiej jest zacząć pracę z biblioteką turtle. Jeśli ktoś ma jakieś doświadczenie z logo (grafika żółwia) to jest właśnie ten język przeniesiony do pythona. Poniżej 3 przykładowe programy z rezultatami działania.

Przykłady znalazłem na stronie: http://www.instructables.com/id/Easy-Designs-Turtle-Graphics-Python/
W niektórych dokonałem drobnych zmian, żebyście mogli łatwiej je otworzyć i obejrzeć rezultat działania. Bardzo zachęcam do eksperymentowania ze zmianami parametrów, kształtów, kolorów itp.

Przykład 1
grafika1.py
Obrazek

Przykład 2
grafika2.py
Obrazek

Przykład 3
grafika3.py
Obrazek


Na górę
 Wyświetl profil  
 
Wyświetl posty nie starsze niż:  Sortuj wg  
Nowy temat Odpowiedz w temacie  [ Posty: 5 ] 

Strefa czasowa UTC+2godz.


Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 1 gość


Nie możesz tworzyć nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów

Szukaj:
cron
Technologię dostarcza phpBB® Forum Software © phpBB Group