Wszystkie treści na stronie ir.migra.pl są chronione prawami autorskimi. Więcej informacji znajdziesz tutaj.
Zapisy podstawy programowej 2024 realizowane w temacie:
I. Rozumienie, analizowanie i rozwiązywanie problemów
Zakres rozszerzony. Uczeń spełnia wymagania określone dla zakresu podstawowego, a ponadto:II. Programowanie i rozwiązywanie problemów z wykorzystaniem komputera i innych urządzeń cyfrowych.
- w zależności od problemu rozwiązuje go, stosując metodę wstępującą lub zstępującą;
- do realizacji rozwiązania problemu dobiera odpowiednią metodę lub technikę algorytmiczną i struktury danych
Zakres rozszerzony. Uczeń spełnia wymagania określone dla zakresu podstawowego, a ponadto:I + II. Zakres rozszerzony. Uczeń spełnia wymagania określone dla zakresu podstawowego, a ponadto:
- projektuje i tworzy programy w procesie rozwiązywania problemów, wykorzystuje w programach dobrane do algorytmów struktury danych, […]
- sprawnie posługuje się zintegrowanym środowiskiem programistycznym przy pisaniu, uruchamianiu i testowaniu programów;
- zapisuje za pomocą listy kroków lub pseudokodu, i implementuje w wybranym języku programowania, algorytmy poznane na wcześniejszych etapach oraz algorytmy […]
Spis treści
- Instrukcja
while
w językach C++ i Python - Instrukcja
for
a instrukcjawhile
w języku C++ - Instrukcja
while
ado … while
w języku C++ - Instrukcja
for
a instrukcjawhile
w języku Python
1. Instrukcja while
w językach C++ i Python
W programach tworzonych w języku C++ najczęściej wprowadzaliśmy liczbę iteracji z klawiatury po uruchomieniu programu – stosowaliśmy instrukcję iteracyjną (instrukcję pętli) for
. Do zapisywania algorytmów iteracyjnych, w których liczba iteracji nie jest z góry określona, możemy zastosować instrukcję iteracyjną (instrukcję pętli) while
.
Ogólna postać instrukcji while
:
while (warunek)
lista_instrukcji;
kolejna_instrukcja;
Ogólna postać instrukcji while
:
while warunek:
lista_instrukcji
kolejna_instrukcja
while
jest takie samo w obydwu językach (C++ i Python): najpierw sprawdzany jest warunek; jeśli jest spełniony, to wykonywana jest lista_instrukcji. Wewnątrz bloku lista_instrukcji powinna być zawsze umieszczona instrukcja, która zmienia wartość warunku – w przeciwnym wypadku pętla nigdy się nie zakończy. W szczególnej sytuacji, gdy warunek od razu nie jest spełniony, lista_instrukcji w ogóle nie zostanie wykonana. Lista_instrukcji może zawierać jedną lub wiele instrukcji.Przykład 1. Stosowanie instrukcji iteracyjnej while
w językach C++ i Python
Zadanie: Napisz program, który będzie wczytywał wprowadzaną z klawiatury liczbę rzeczywistą a, obliczał i wyświetlał na ekranie liczbę odwrotną do niej, dopóki liczba a będzie różna od zera. Dla a równego zero program powinien wyprowadzić komunikat o treści „nie istnieje liczba odwrotna dla zera” i zakończyć działanie.
Dane: Liczba rzeczywista a.
Wynik: Liczba odwrotna do a: odwrotna (jeżeli a jest różne od zera) lub komunikat „Nie istnieje liczba odwrotna dla zera” (gdy a jest równe zero).
Lista kroków:
- Zacznij algorytm.
- Wprowadź wartość liczby a.
- Sprawdź, czy a = 0: jeżeli tak, idź do kroku 7.
- Zmiennej a przypisz wartość jej odwrotności: odwrotna = 1 / a.
- Wyprowadź wynik: odwrotna
- Idź do kroku 2.
- Wyprowadź komunikat: „Nie istnieje liczba odwrotna dla zera”.
- Zakończ algorytm.
W zadaniu nie określono, dla ilu par liczb program ma być wykonywany, ale wprowadzono warunek (a różne od 0), dlatego możemy zastosować instrukcję while
, której działanie polega na wykonywaniu ciągu instrukcji, dopóki warunek jest spełniany.
Fragment rozwiązania zadania:
Ćwiczenie 1. Stosujemy instrukcję iteracyjną while
w językach C++ i Python
- Otwórz plik TC7_c1_p1.cpp lub TC7_c1_p1.py. Uzupełnij wybrany program zgodnie z listą kroków (przykład 1.).
- Zapisz plik pod tą samą nazwą. Sprawdź działanie programu dla kilku danych.
- Odpowiedz na pytania:
- W jakim przypadku instrukcje wewnątrz pętli nie zostaną wykonane ani razu?
- Która instrukcja ma wpływ na zmianę wartości logicznej warunku? Sprawdź, jak będzie działał program, jeśli usuniesz tę instrukcję.
2. Instrukcja for
a instrukcja while
w języku C++
Ćwiczenie 2. Przypominamy postać instrukcji for
w języku C++
- Przypomnij sobie ogólną postać instrukcji
for
w języku C++ (temat C5 z podręcznika „Teraz bajty. Informatyka dla szkół ponadpodstawowych. Zakres podstawowy. Klasa I”). - Podaj przykład problemu, do którego zapisania w języku programowania można zastosować instrukcję
for
.
W pętli while
w odróżnieniu od pętli for
nie ma wyrażenia ustalającego wartość początkową zmiennej sterującej (wyrażenie_początkowe) i wyrażenia służącego do zwiększania lub zmniejszania wartości zmiennej sterującej (wyrażenie_pętli). Sprawdzany jest tylko warunek.
Mimo tych różnic, pętle for
i while
w języku C++ mogą być stosowane zamiennie. Wystarczy odpowiednio zmodyfikować program z pętlą for
, by ten sam algorytm zapisać z użyciem pętli while
– i na odwrót.
Przykład 2. Zamiana pętli for
na pętlę while
w języku C++
Napiszemy program obliczający i wyświetlający na ekranie n iloczynów kolejnych dwóch liczb naturalnych, zaczynając od 1: 1 * 2, 2 * 3, … n – 1 * n. W pierwszym rozwiązaniu zastosujemy pętlę for
, w drugim zamienimy ją na pętlę while
.
Rozwiązanie z pętlą for
:
Rozwiązanie z pętlą while
:
Uwagi:
Aby zmienić rozwiązanie z pętlą for
na rozwiązanie z pętlą while
, dodaliśmy instrukcję ustalającą wartość początkową zmiennej sterującej (i = 0;
) oraz instrukcję zwiększającą wartość zmiennej sterującej (i++;
).
Ćwiczenie 3. Zamieniamy pętlę for
na pętlę while
w języku C++
- Otwórz plik TC7_c3_p2_for.cpp. Uruchom program dla kilku różnych danych n.
- Zmodyfikuj program, zmieniając pętlę
for
nawhile
. Uruchom program dla kilku różnych danych n. Zapisz program w pliku pod nazwą TC7_c3_p2_while.cpp. - Porównaj obydwa programy i oceń, które rozwiązanie jest lepsze (czytelniejsze, wykonane w lepszym stylu).
Przykład 3. Zamiana pętli while
na pętlę for
w języku C++
W pętli for
wymagane są trzy elementy (dwa wyrażenia i warunek) oddzielone średnikami. Można jednak umieścić w nawiasach sam warunek pomiędzy średnikami:
for ( ;warunek; )
lub same średniki:
for( ; ; )
Zamienimy pętlę while
na for
w zadaniu z przykładu 1. Aby zmienić program z pętlą while
na program z pętlą for
, usunęliśmy wyrażenie ustalające wartość początkową zmiennej sterującej oraz wyrażenie zwiększające wartość zmiennej sterującej:
for ( ;a !=0; )
Ćwiczenie 4. Zamieniamy pętlę while
na pętlę for
w języku C++
- Otwórz plik TC7_c1_p1.cpp zapisany w ćwiczeniu 1. Zmodyfikuj program, zmieniając pętlę
while
nafor
. Uruchom program dla kilku różnych danych a. Zapisz program w pliku pod nazwą TC7_c4_p3_for.cpp. - Porównaj obydwa programy i oceń, które rozwiązanie jest lepsze (czytelniejsze, wykonane w lepszym stylu).
Zamiana instrukcji for
na while
(lub while
na for
) nie zawsze wpływa na zoptymalizowanie i zwiększenie czytelności programu.
Wybór rodzaju pętli zależy od rozwiązywanego problemu – niektóre łatwiej zapisać, używając instrukcji for
, a inne – instrukcji while
. Instrukcji for
używamy zwykle, gdy przetwarzamy zbiór elementów (np. zliczamy je), gdy znamy liczbę iteracji, np. wprowadzamy ją z klawiatury po uruchomieniu programu. W pętli for
jest od razu określone miejsce na umieszczenie wartości początkowej licznika i jego zmianę, więc trudniej o błąd. Do zapisywania innych algorytmów iteracyjnych, zwłaszcza takich, w których liczba iteracji nie jest z góry określona, stosujemy instrukcję while
.
3. Instrukcja while
a do … while
w języku C++
Ogólna postać instrukcji do … while
:
do
lista_instrukcji;
while (warunek);
W instrukcji do … while
, w odróżnieniu od instrukcji while
, warunek jest sprawdzany po wykonaniu listy_instrukcji, więc instrukcja wewnątrz pętli zostanie wykonana przynajmniej raz, niezależnie od wartości początkowej warunku. Pętla do … while
jest wykonywana dopóki jest spełniony warunek. Gdy warunek przestanie być spełniany, nastąpi wyjście z pętli. Lista_instrukcja może być pojedyncza lub złożona.
Przykład 4. Stosowanie instrukcji do … while
w języku C++
Napiszemy program wczytujący liczby wprowadzane z klawiatury i zliczający wśród nich liczby parzyste. Dla liczby równej zero program powinien zakończyć działanie i podać, ile było liczb parzystych.
Fragment rozwiązania zadania:
Uwaga:
W zadaniach podanych w przykładach 1. i 2, aby zakończyć wprowadzanie danych, określaliśmy tzw. znacznik końca danych. W tym przypadku jest to liczba zero.
Ćwiczenie 5. Stosujemy instrukcję do … while
w języku C++
- Napisz specyfikację zadania i listę kroków algorytmu opisanego w przykładzie 4.
- Napisz program realizujący algorytm podany w przykładzie 4.
- Zapisz program w pliku pod nazwą TC7_c5_p4_do.cpp.
- Uruchom i wykonaj program dla wybranych danych.
Instrukcje while
lub do … while
możemy stosować zamiennie, ale zwykle dobiera się je do rozwiązywanego problemu. Jeśli sprawdzenie warunku jest wymagane zanim zostanie wykonana lista_instrukcji wewnątrz pętli, stosujemy instrukcję while
. Natomiast jeśli program wymaga najpierw wprowadzania danych z klawiatury, wykonania na nich działań, potem sprawdzenia warunku i zależnie od niego wykonania (lub nie) kolejny raz listy_instrukcji – lepiej zastosować pętlę do … while
.
4. Instrukcja for
a instrukcja while
w języku Python
Ćwiczenie 6. Przypominamy instrukcję for
w języku Python
- Przypomnij sobie ogólną postać instrukcji
for
w języku Python i przykłady jej stosowania (temat C5 z podręcznika „Teraz bajty. Informatyka dla szkół ponadpodstawowych. Zakres podstawowy. Klasa I”). - Podaj przykład problemu, do którego zapisania w języku programowania można zastosować instrukcję
for
.
W języku Python (podobnie jak w języku C++) pętli for
używamy, aby przetwarzać zbiór elementów, gdy znana jest liczba iteracji. W odróżnieniu od języka C++, liczbę iteracji można tu określać w różny sposób, na przykład powtarzając polecenia zawarte wewnątrz pętli dla konkretnych wartości wypisanych w liście_wartości (przykład 5.) lub podając liczbę powtórzeń z zastosowaniem funkcji range()
(przykład 6.).
Przykład 5. Stosowanie pętli for
w języku Python z określaniem listy_wartości
Napiszemy program obliczający i wyświetlający w kolumnie kwadraty dziesięciu wybranych liczb.
Ćwiczenie 7. Stosujemy pętlę for
w języku Python z określaniem listy_wartości
- Otwórz plik TC7_c7_p5.py. Uruchom program. Ile razy została wykonana instrukcja
print(i*i)
? Jakie kolejne wartości będzie przyjmować zmiennai
? - Zmodyfikuj program, zmieniając kolejność kilku elementów w liście_wartości. Zapisz program w pliku pod nazwą TC7_c7_p5_2.py i ponownie go uruchom. Co zauważasz?
Ćwiczenie 8. Stosujemy pętlę for
w języku Python z określaniem listy_wartości
- Napisz program obliczający średnią temperaturę powietrza w ciągu jednego tygodnia dla temperatur: 21, 19, 22, 25, 28, 23, 22.
- Zapisz program w pliku pod nazwą TC7_c8.py.
Przykład 6. Stosowanie pętli for
w języku Python z wykorzystaniem funkcji range()
i zamienianie na pętlę while
Napiszemy program obliczający i wyświetlający na ekranie n iloczynów kolejnych dwóch liczb naturalnych, zaczynając od 1: 1 * 2, 2 * 3, … n – 1 * n.
Rozwiązanie zadania z pętlą for
:
Rozwiązanie zadania z pętlą while
:
Ćwiczenie 9. Zamieniamy pętlę for
na pętlę while
w języku Python
- Otwórz plik TC7_c9_p6_for.py. Uruchom program dla kilku różnych danych n.
- Zmodyfikuj program, zmieniając pętlę
for
nawhile
. Uruchom program dla kilku różnych danych n. Zapisz program w pliku pod nazwą TC7_c9_p6_while.py. - Porównaj obydwa programy i oceń, które rozwiązanie jest lepsze (czytelniejsze, wykonane w lepszym stylu).
W języku Python pętlę for
z funkcją range()
możemy zamienić na pętlę while
, ale nie wpłynie to na zoptymalizowanie i zwiększenie czytelności programu, a wręcz odwrotnie, ponieważ musimy dodać instrukcję inicjującą licznik (tu zmienną i) oraz instrukcję zwiększającą licznik o 1 (i = i + 1
). W praktyce taka zamiana nie ma większego zastosowania.
Wybór rodzaju pętli zależy od rozwiązywanego problemu. Instrukcji for
używamy zwykle, gdy przetwarzamy zbiór elementów (np. zliczamy je), gdy znamy liczbę iteracji, np. wprowadzamy ją z klawiatury po uruchomieniu programu. Do zapisywania innych algorytmów iteracyjnych, zwłaszcza takich, w których znamy tylko warunek zakończenia, stosujemy instrukcję while
. W jednym programie (przykład 7.) możemy zastosować obydwie pętle – for
i while
. W przykładzie 7. pokażemy również zastosowanie metody append()
i funkcji len()
.
append(wartosc)
dodaje wartosc na końcu listy.Metodę append()
w programie możemy wywołać, dodając po nazwie listy kropkę, a po niej nazwę metody, np.: polecenie dostawy.append(20)
doda na końcu listy dostawy liczbę 20
len(nazwa_listy)
zwraca długość listy.Na przykład, jeśli lista dostawcy zawiera 25 elementów, to funkcja len(dostawcy)
zwróci wartość 25.
Przykład 7. Stosowanie pętli for
i while
, metody append i funkcji len w języku Python
Napiszemy program zliczający liczby wprowadzane z klawiatury aż do wystąpienia zera i wyświetlający je w kolumnie na ekranie.
Na początku programu zdefiniujemy pustą listę o nazwie liczby.
Ćwiczenie 10. Stosujemy metodę append i funkcję len w języku Python
- Otwórz plik TC7_c10_p7.py. Uruchom program kilkakrotnie dla różnej liczby danych. Objaśnij znaczenie poszczególnych wierszy programu.
- Zmodyfikuj program, aby obliczał dodatkowo różnicę pomiędzy pierwszym i ostatnim elementem i wyprowadź wynik. Zapisz program w pliku pod nazwą TC7_c10_p7_2.py.
Zadania
- Narysuj schemat blokowy algorytmu zapisanego w postaci listy kroków w przykładzie 1.
- Ile razy będą wykonane pętle pokazane w ramkach? Rozważ różne przypadki w zależności od wprowadzonych danych.
- W wybranym języku programowania napisz program wczytujący liczby całkowite wprowadzane z klawiatury, aż do wystąpienia liczby niedodatniej oraz obliczający i wyprowadzający średnią arytmetyczną tych liczb. Jaka liczba będzie tu znacznikiem końca danych?
- Otwórz plik TC7_c5_p2.cpp zapisany w ćwiczeniu 5. Zmień w programie instrukcję
while … do
nawhile
. Zapisz program w pliku pod nazwą TC7_z4.cpp. Uruchom i przetestuj program. Porównaj obydwa programy, a następnie omów wnioski. - W języku Python napisz program wczytujący liczby wprowadzone z klawiatury i zliczający wśród nich liczby parzyste. Dla liczby równej zero program powinien zakończyć działanie i podać, ile było liczb parzystych. Zapisz program w pliku pod nazwą TC7_z5.py.
- Zmodyfikuj program zapisany w zadaniu 4. lub w zadaniu 5., dodając możliwość zliczania liczb nieparzystych. Zapisz program w pliku pod nazwą TC7_z6.
- W języku C++ napisz program obliczający i wyświetlający w kolumnie kwadratów dziesięć kolejnych liczb pierwszych. Liczby zapamiętaj w tablicy. Zapisz program w pliku pod nazwą C7_z7.cpp.
- W wybranym języku programowania napisz program wczytujący liczby aż do wystąpienia zera i dzielący je na dwa podzbiory: liczby parzyste i liczby nieparzyste. Zdefiniuj odpowiednie funkcje oraz wykorzystaj tablice (C++) lub listy (Python). Zapisz program w pliku pod nazwą TC7_z8.
- W wybranym języku programowania napisz program umożliwiający wprowadzenie dwóch liczb całkowitych większych od 1 i wyprowadzający tę z nich, której suma cyfr jest większa. Wykorzystaj algorytm wyodrębniania cyfr danej liczby (poznany w klasie VIII szkoły podstawowej). Zapisz program w pliku pod nazwą TC7_z9.
Wskazówka: Zadanie można rozwiązać, korzystając z instrukcjiwhile
oraz z operatorów: modulo (%) oraz dzielenia (/). - Wymyśl samodzielnie problem iteracyjny. Sformułuj zadanie, napisz jego specyfikację i listę kroków oraz zapisz w wybranym języku programowania. Zapisz program w pliku pod nazwą C7_z10. Uzasadnij wybór instrukcji iteracyjnej zastosowanej w swoim rozwiązaniu.
a)
b)
c)
a)
b)
c)
Dla zainteresowanych: