Podręcznik instrukcji Frigidaire Bghs2644kf1 zawiera wszystkie informacje potrzebne do wykorzystania tego urządzenia w pełni. Zawiera wskazówki dotyczące bezpiecznego korzystania z urządzenia, informacje na temat jego dostosowania do twoich potrzeb, instrukcje dotyczące użytkowania i naprawiania, a także informacje na temat wszystkich funkcji, dzięki którym możesz w pełni wykorzystać swoje urządzenie. Ten podręcznik jest przeznaczony dla osób, które chcą skorzystać z wszystkich możliwości związanych z użytkowaniem i naprawą swojego urządzenia Frigidaire Bghs2644kf1.
Ostatnia aktualizacja: Podręcznik insrukcji Frigidaire Bghs2644kf1
Wykaz podręczników dopuszczonych do użytku szkolnego do kształcenia ogólnegoWykaz podręczników do kształcenia ogólnego dla mniejszości narodowych i etnicznych orazspołeczności posługującej się językiem regionalnymWykaz podręczników do kształcenia ogólnego opracowanych w ramach projektu„E-podręczniki do kształcenia ogólnego” współfinansowanego ze środków pochodzących z UE,uwzględniających podstawę programową kształcenia ogólnego określoną w rozporządzeniu z dnia27 sierpnia 2012 r. (Dz. U. poz. 977 z późn. zm. )Podręczniki są dostępne na stronie internetowejWykaz podręczników do kształcenia ogólnego opracowanych na zlecenie ministra właściwego do sprawoświaty iwychowania, uwzględniających podstawę programową kształcenia ogólnego określoną w rozporządzeniuz dnia 27sierpnia 2012 r. )Wykaz podręczników do kształcenia specjalnego opracowanych na zlecenie ministra właściwego dospraw oświaty i wychowania, uwzględniających podstawę programową kształcenia ogólnego z dnia 14lutego 2017 r.
Z Wikibooks, biblioteki wolnych podręczników.
C jest językiem imperatywnym - oznacza to, że instrukcje wykonują się jedna po drugiej w takiej kolejności w jakiej są napisane. Aby móc zmienić kolejność wykonywania instrukcji potrzebne są instrukcje sterujące.
Na wstępie przypomnijmy jeszcze informację z rozdziału Operatory, że wyrażenie jest prawdziwe wtedy i tylko wtedy, gdy jest różne od zera, a fałszywe wtedy i tylko wtedy, gdy jest równe zeru.
Instrukcje warunkowe[edytuj]
if[edytuj]
Użycie instrukcji if wygląda tak:
if (wyrażenie) { /* blok wykonany, jeśli wyrażenie jest prawdziwe */ } /* dalsze instrukcje */
Istnieje także możliwość reakcji na nieprawdziwość wyrażenia - wtedy należy zastosować słowo kluczowe else: } else { /* blok wykonany, jeśli wyrażenie jest nieprawdziwe */
Przypatrzmy się bardziej "życiowemu" programowi, który porównuje ze sobą dwie liczby:
#include <stdio. h> int main () { int a, b; a = 4; b = 6; if (a==b) { printf ("a jest równe b\n"); printf ("a nie jest równe b\n"); return 0;Stosowany jest też krótszy zapis warunków logicznych, korzystający z tego, jak C rozumie prawdę i fałsz, tzn. :
- liczba całkowita różna od zera oznacza prawdę
- liczba całkowita równa zero oznacza fałsz.
Jeśli zmienna a jest typu integer, zamiast:
można napisać:
a zamiast
można napisać:
Czasami zamiast pisać instrukcję if możemy użyć operatora wyrażenia warunkowego (patrz Operatory).
if (a ! = 0) b = 1/a; else b = 0;ma dokładnie taki sam efekt jak:
Zobacz też:
- Dangling else problem w wikipedi
switch[edytuj]
Aby ograniczyć wielokrotne stosowanie instrukcji if możemy użyć switch. Jej użycie wygląda tak:
switch (wyrażenie) { case wartość1: /* instrukcje, jeśli wyrażenie == wartość1 */ break; case wartość2: /* instrukcje, jeśli wyrażenie == wartość2 */ /*... */ default: /* instrukcje, jeśli żaden z wcześniejszych warunków nie został spełniony */Należy pamiętać o użyciu break po zakończeniu listy instrukcji następujących po case. Jeśli tego nie zrobimy, program przejdzie do wykonywania instrukcji z następnego case. Może mieć to fatalne skutki: printf ("Podaj a: "); scanf ("%d", &a); printf ("Podaj b: "); scanf ("%d", &b); switch (b) { case 0: printf ("Nie można dzielić przez 0! \n"); /* tutaj zabrakło break! */ default: printf ("a/b=%d\n", a/b);
A czasami może być celowym zabiegiem (tzw. "fall-through") - wówczas warto zaznaczyć to w komentarzu. Oto przykład: int a = 4; switch ((a%3)) { case 0: printf ("Liczba%d dzieli się przez 3\n", a); case -2: case -1: case 1: case 2: printf ("Liczba%d nie dzieli się przez 3\n", a);
Przeanalizujmy teraz działający przykład: unsigned int dzieci = 3, podatek=1000; switch (dzieci) { case 0: break; /* brak dzieci - czyli brak ulgi */ case 1: /* ulga 2% */ podatek = podatek - (podatek/100* 2); case 2: /* ulga 5% */ podatek = podatek - (podatek/100* 5); default: /* ulga 10% */ podatek = podatek - (podatek/100*10); break; printf ("Do zapłaty:%d\n", podatek);
Pętle[edytuj]
while[edytuj]
Często zdarza się, że nasz program musi wielokrotnie powtarzać ten sam ciąg instrukcji. Aby nie przepisywać wiele razy tego samego kodu można skorzystać z tzw. pętli. Pętla wykonuje się dopóty, dopóki prawdziwy jest warunek.
while (warunek) { /* instrukcje do wykonania w pętli */Całą zasadę pętli zrozumiemy lepiej na jakimś działającym przykładzie. Załóżmy, że mamy obliczyć kwadraty liczb od 1 do 10. Piszemy zatem program: int a = 1; while (a <= 10) { /* dopóki a nie przekracza 10 */ printf ("%d\n", a*a); /* wypisz a*a na ekran*/ ++a; /* zwiększamy a o jeden*/
Po analizie kodu mogą nasunąć się dwa pytania:
- Po co zwiększać wartość a o jeden? Otóż gdybyśmy nie dodali instrukcji zwiększającej a, to warunek zawsze byłby spełniony, a pętla "kręciłaby" się w nieskończoność.
- Dlaczego warunek to "a <= 10" a nie "a! =10"? Odpowiedź jest dość prosta. Pętla sprawdza warunek przed wykonaniem kolejnego "obrotu". Dlatego też gdyby warunek brzmiał "a! =10" to dla a=10 jest on nieprawdziwy i pętla nie wykonałaby ostatniej iteracji, przez co program generowałby kwadraty liczb od 1 do 9, a nie do 10.
for[edytuj]
Od instrukcji while czasami wygodniejsza jest instrukcja for. Umożliwia ona wpisanie ustawiania zmiennej, sprawdzania warunku i inkrementowania zmiennej w jednej linijce co często zwiększa czytelność kodu.
Instrukcję for stosuje się w następujący sposób:
for (wyrażenie1; wyrażenie2; wyrażenie3) {Jak widać, pętla for znacznie różni się od tego typu pętli, znanych w innych językach programowania.
Opiszemy więc, co oznaczają poszczególne wyrażenia:
- wyrażenie1 - jest to instrukcja, która będzie wykonana przed pierwszym przebiegiem pętli. Zwykle jest to inicjalizacja zmiennej, która będzie służyła jako "licznik" przebiegów pętli.
- wyrażenie2 - jest warunkiem trwania pętli. Pętla wykonuje się tak długo, jak prawdziwy jest ten warunek.
- wyrażenie3 - jest to instrukcja, która wykonywana będzie po każdym przejściu pętli ( także po ostatnim). Zamieszczone są tu instrukcje, które zwiększają licznik o odpowiednią wartość.
Jeżeli wewnątrz pętli nie ma żadnych instrukcji continue (opisanych niżej) to jest ona równoważna z:
{ wyrażenie1; while (wyrażenie2) { wyrażenie3;Ważną rzeczą jest tutaj to, żeby zrozumieć i zapamiętać jak tak naprawdę działa pętla for. Początkującym programistom nieznajomość tego faktu sprawia wiele problemów.
W pierwszej kolejności w pętli for wykonuje się wyrażenie1. Wykonuje się ono zawsze, nawet jeżeli warunek przebiegu pętli jest od samego początku fałszywy.
Po wykonaniu wyrażenie1 pętla for sprawdza warunek zawarty w wyrażenie2, jeżeli jest on prawdziwy ( inny niż zero), to wykonywana jest treść pętli for, czyli najczęściej to co znajduje się między klamrami, lub gdy ich nie ma, następna pojedyncza instrukcja. W szczególności musimy pamiętać, że sam średnik też jest instrukcją - instrukcją pustą.
Gdy już zostanie wykonana treść pętli for, następuje wykonanie wyrażenie3. Należy zapamiętać, że wyrażenie3 zostanie wykonane, nawet jeżeli był to już ostatni obieg pętli. Poniższe 4 przykłady pętli for w rezultacie dadzą ten sam wynik. Wypiszą na ekran liczby od 1 do 10.
for(i=1; i<=10; ++i){ printf("%d", i);} for(i=1; i<=10; printf("%d", i++ ) ); // 4 przykład for(i=1; i<10; printf("i =%d", i++ ) ); printf(" i =%d", i ); // wyrażenie3 i++ zostanie wykonane, nawet jeżeli był to już ostatni obieg pętliDwa pierwsze przykłady korzystają z własności struktury blokowej, kolejny przykład jest już bardziej wyrafinowany i korzysta z tego, że jako wyrażenie3 może zostać podane dowolne bardziej skomplikowane wyrażenie, zawierające w sobie inne podwyrażenia. A oto kolejny program, który najpierw wyświetla liczby w kolejności rosnącej, a następnie wraca. int main() int i; for(i=1; i<=5; ++i){ } for( ; i>=1; --i){
Po analizie powyższego kodu, początkujący programista może stwierdzić, że pętla wypisze 123454321. Stanie się natomiast inaczej. Wynikiem działania powyższego programu będzie ciąg cyfr 12345654321. Pierwsza pętla wypisze cyfry "12345", lecz po ostatnim swoim obiegu pętla for (tak jak zwykle) zinkrementuje zmienną i. Gdy druga pętla przystąpi do pracy, zacznie ona odliczać począwszy od liczby i=6, a nie 5. By spowodować wyświetlanie liczb od 1 do 5 i z powrotem wystarczy gdzieś między ostatnim obiegiem pierwszej pętli for a pierwszym obiegiem drugiej pętli for zmniejszyć wartość zmiennej i o 1.
Niech podsumowaniem będzie jakiś działający fragment kodu, który może obliczać wartości kwadratów liczb od 1 do 10. #include <stdio. h> int a; for (a=1; a<=10; ++a) { printf ("%d\n", a*a);
do.. while[edytuj]
Pętle while i for mają jeden zasadniczy mankament - może się zdarzyć, że nie wykonają się ani razu. Aby mieć pewność, że nasza pętla będzie miała co najmniej jeden przebieg musimy zastosować pętlę do while. Wygląda ona następująco:
do { } while (warunek);Zasadniczą różnicą pętli do while jest fakt, iż sprawdza ona warunek pod koniec swojego przebiegu. To właśnie ta cecha decyduje o tym, że pętla wykona się co najmniej raz. A teraz przykład działającego kodu, który tym razem będzie obliczał trzecią potęgę liczb od 1 do 10. do { printf ("%d\n", a*a*a); ++a; } while (a <= 10);
Może się to wydać zaskakujące, ale również przy tej pętli zamiast bloku instrukcji można zastosować pojedynczą instrukcję, np. : do printf ("%d\n", a*a*a); while (++a <= 10);
break[edytuj]
Instrukcja break pozwala na opuszczenie wykonywania pętli w dowolnym momencie. Przykład użycia:
int a; for (a=1 ; a ! = 9 ; ++a) { if (a == 5) break; printf ("%d\n", a);Program wykona tylko 4 przebiegi pętli, gdyż przy 5 przebiegu instrukcja break spowoduje wyjście z pętli.
Break i pętle nieskończone[edytuj]
W przypadku pętli for nie trzeba podawać warunku. W takim przypadku kompilator przyjmie, że warunek jest stale spełniony. Oznacza to, że poniższe pętle są równoważne:
for (;;) { /*... */ } for (;1;) { /*... */ } for (a;a;a) { /*... */} /*gdzie a jest dowolną liczba rzeczywistą różną od 0*/ while (1) { /*... */ } do { /*... */ } while (1);Takie pętle nazywamy pętlami nieskończonymi, które przerwać może jedynie instrukcja break[1](z racji tego, że warunek pętli zawsze jest prawdziwy) [2].
Wszystkie fragmenty kodu działają identycznie:
int i = 0; for (;i! =5;++i) { /* kod... */ int i = 0; for (;;++i) { if (i == 5) break; for (;;) { ++i;continue[edytuj]
W przeciwieństwie do break, która przerywa wykonywanie pętli instrukcja continue powoduje przejście do następnej iteracji, o ile tylko warunek pętli jest spełniony. Przykład:
int i; for (i = 0 ; i < 100 ; ++i) { printf ("Poczatek\n"); if (i > 40) continue ; printf ("Koniec\n");Dla wartości i większej od 40 nie będzie wyświetlany komunikat "Koniec". Pętla wykona pełne 100 przejść.
Oto praktyczny przykład użycia tej instrukcji: for (i = 1 ; i <= 50 ; ++i) { if (i%4 == 0) continue ; printf ("%d, ", i);Powyższy program generuje liczby z zakresu od 1 do 50, które nie są podzielne przez 4.
goto[edytuj]
Istnieje także instrukcja, która dokonuje skoku do dowolnego miejsca programu, oznaczonego tzw. etykietą.
etykieta: /* instrukcje */ goto etykieta;Uwaga! : kompilator GCC w wersji 4. 0 i wyższych jest bardzo uczulony na etykiety zamieszczone przed nawiasem klamrowym, zamykającym blok instrukcji. Innymi słowy: niedopuszczalne jest umieszczanie etykiety zaraz przed klamrą, która kończy blok instrukcji, zawartych np. w pętli for. Można natomiast stosować etykietę przed klamrą kończącą daną funkcję.
Przykład uzasadnionego użycia:
int i, j; for (i = 0; i < 10; ++i) { for (j = i; j < i+10; ++j) { if (i + j % 21 == 0) goto koniec; koniec: /* dalsza czesc programu */Zobacz również: obsługa nielokalnych skoków
Natychmiastowe kończenie programu - funkcja exit[edytuj]
Program może zostać w każdej chwili zakończony - do tego właśnie celu służy funkcja exit. Używamy jej następująco:
Liczba całkowita kod_wyjścia jest przekazywana do procesu macierzystego, dzięki czemu dostaje on informację, czy program w którym wywołaliśmy tą funkcję zakończył się poprawnie lub czy się tak nie stało. Kody wyjścia są nieustandaryzowane i żeby program był w pełni przenośny należy stosować makra EXIT_SUCCESS i EXIT_FAILURE, choć na wielu systemach kod 0 oznacza poprawne zakończenie, a kod różny od 0 błędne. W każdym przypadku, jeżeli nasz program potrafi generować wiele różnych kodów, warto je wszystkie udokumentować w ew. dokumentacji. Są one też czasem pomocne przy wykrywaniu błędów.
Odwijanie pętli[edytuj]
Odwijanie pętli ( ang. Loop unrolling) jest metodą optymalizacji oprogramowania powodującą przyspieszenie wykonania pętli. Polega na zmianie kodu programu przez kilkukrotne skopiowanie zawartości pętli i odpowiednie zmniejszenie liczby powtórzeń. Dzięki temu eliminuje się niepotrzebne sprawdzanie warunku zakończenia.
Przykładowo pętla wykonująca 100 razy funkcję delete(x), również 100 razy sprawdzi warunek zakończenia x<100:
for (int x = 0; x < 100; x++) delete(x);Można jednak nieznacznie wydłużyć kod powtarzając instrukcję delete(x) oraz zmniejszyć liczbę przejść przez pętlę, przez co wykona się kilkukrotnie mniej sprawdzeń x<100:
for (int x = 0; x < 100; x += 5) delete(x+1); delete(x+2); delete(x+3); delete(x+4);Użycie odwijania pętli zwiększa objętość programu, dlatego potrzebne jest znalezienie optymalnej liczby powtórzeń. Stosowanie odwijania pętli w programowaniu nie jest jednak konieczne ponieważ większość kompilatorów sama znajduje optymalną wersję odwinięcia i umieszcza ją w kodzie wynikowym.
Uwagi[edytuj]
- W języku C++ można deklarować zmienne w nagłówku pętli "for" w następujący sposób: for(int i=0; i<10; ++i) (więcej informacji w C++/Zmienne)
Przypisy
- ↑ Tak naprawdę podobną operacje, możemy wykonać za pomocą polecenia goto. W praktyce jednak stosuje się zasadę, że break stosuje się do przerwania działania pętli i wyjścia z niej, goto stosuje się natomiast wtedy, kiedy chce się wydostać z kilku zagnieżdżonych pętli za jednym zamachem. Do przerwania pracy pętli mogą nam jeszcze posłużyć polecenia exit() lub return, ale wówczas zakończymy nie tylko działanie pętli, ale i całego programu/funkcji.
- ↑ Żartobliwie można powiedzieć, że stosując pętlę nieskończoną to najlepiej korzystać z pętli for(;;){}, gdyż wymaga ona napisania najmniejszej liczby znaków w porównaniu do innych konstrukcji.
ILUSTRACJA: Instrukcja_intro
Clement127, licencja: CC BY-NC-ND 2. 0
W życiu codziennym bardzo często spotykamy się z tekstami użytkowymi. Jednym z nich jest instrukcja, która spokrewniona jest z takimi gatunkami, jak wskazówka, zalecenie, polecenie. Wszystkie te formy mają w bardzo prosty i jednoznaczny sposób opisać zasady postępowania i działania w konkretnych sytuacjach. Nie zawsze instrukcje są łatwe w odbiorze – są jednak bardzo przydatne, zwłaszcza wtedy, gdy chcemy coś sprawnie wykonać lub załatwić.
Instrukcja to gatunek, w którym najważniejszy jest odbiorca. To także tekst użytkowy. Trzeba w nim w prostych słowach komunikować, kto i jak ma postępować, jak należy coś właściwie używać. Bardzo ważna w instrukcji jest zwięzła, ale przemyślana kompozycja. Jak więc pisać instrukcję?
1) Po pierwsze, wyróżniamy dwie odmiany:
instrukcja obsługi, użytkowania, np. jakiegoś przedmiotu, urządzenia;
instrukcja działania, czynności, np. szybkiego, doraźnego postępowania w sprawach zagrażających naszemu bezpieczeństwu („instrukcja przeciwpożarowa”), a także dłuższego działania, złożonego nawet z wieloetapowych czynności („instrukcja wypełniania dokumentu”).
2) Po drugie, ważne jest, by treść instrukcji była ułożona chronologicznie (czyli każda opisana czynność powinna poprzedzać następną). Trzeba przede wszystkim przewidzieć, jak będzie odczytywał instrukcję odbiorca i co zrobi (to warunek, który musi być spełniony nawet przy redagowaniu takich gatunków spokrewnionych z instrukcją, jak „przepis kulinarny”).
Jakich form używać?
Czasowników w 2. osobie trybu rozkazującego („przygotuj”, „przejdź”, „zamień”, „użyj”).
Zwrotów komunikujących, że coś jest ‘dozwolone – zakazane’ („uważaj”, „pamiętaj”, „nie rób czegoś”) – są one ważne w opisie urządzeń, np. elektronicznych. Ostrzegają przed niebezpieczeństwem.
Zwrotów, które mówią o kolejnych etapach czynności (np. „najpierw”, „następnie”, „potem”, „teraz”, „zaraz po tym”) – warto je skojarzyć ze stylistyką przepisu kulinarnego.
Przed napisaniem instrukcji należy przemyśleć jej etapy – powinny być one graficznie wyróżnione. Coraz częściej pojawiają się instrukcje, w których słowom towarzyszą obrazki, np. instrukcje sprawnej ewakuacji w środkach transportu. Każdy, kto kiedykolwiek leciał samolotem, mógł (i musiał! ) przed startem wysłuchać takiej instrukcji.
Poniższa tabela przedstawia ogólny wzór instrukcji.
INSTRUKCJA |
PRZED UŻYCIEM |
OPIS |
PRZYGOTOWANIE |
OBSŁUGA Krok 1 |
KONSERWACJA |
ZASADY BEZPIECZEŃSTWA |
ILUSTRACJA: Biblioteka
www. com, fotografia barwna, domena publiczna
Instrukcje spotykane są również w zwykłych sytuacjach życia codziennego. Przykładem jest poniższa instrukcja, opisująca, jak zamawiać i wypożyczyć książki w bibliotece, której zbiory są skatalogowane w systemie komputerowym.
INSTRUKCJA ZAMAWIANIA I WYPOŻYCZANIA KSIĄŻEK W BIBLIOTECE MIEJSKIEJ | Nagłówek |
I. KONTO CZYTELNIKA | Nagłówek do części I |
I. Ze zbiorów bibliotecznych mogą korzystać wyłącznie czytelnicy, którzy mają konto elektroniczne i kartę czytelnika. | Szczegółowe zasady postępowania – wyliczenie |
II. WYSZUKIWANIE I ZAMAWIANIE KSIĄŻEK W KATALOGU | Nagłówek do części II |
I. Aby znaleźć odpowiednią książkę lub odpowiednie czasopismo, skorzystaj z katalogu bibliotecznego. | Szczegółowe zasady do części II |
III. WYPOŻYCZANIE KSIĄŻEK | Nagłówek do części III |
I. Możesz wypożyczyć nie więcej niż 4 książki na 3 tygodnie. Możesz wypożyczyć książki tylko wtedy, gdy oddasz wcześniej wypożyczone. Czytelnicy wybierają książki i zgłaszają je bibliotekarzowi. Bibliotekarz wprowadza dane do komputera. Następnie można książkę wypożyczyć. | Szczegółowe zasady do części III |
IV. DODATKOWE WSKAZÓWKI I. Biblioteka nie wypożycza: czasopism, wydawnictw encyklopedycznych i słownikowych. Można z nich korzystać jedynie w czytelni. Książki należy oddać w terminie. Z wypożyczalni mogą korzystać czytelnicy, którzy w terminie oddali wcześniej wypożyczone wydawnictwa. | Nagłówek do części IV – dodatkowe UWAGI, OSTRZEŻENIA, ZASADY itp. |
Ćwiczenie 1
Wybierzcie jedną osobę, która będzie robiła figurki przestrzenne z papieru (np. modele samolotu, statku lub czapki malarskiej). Obserwując jej czynności, wpiszcie je do tabeli z zeszycie lub na planszy. Na koniec w grupie zredagujcie instrukcję. Przedstawcie ją innej grupie. Jeśli instrukcja została dobrze przygotowana, reprezentanci drugiej grupy na pewno nie będą mieli trudności w zrobieniu tej samej figurki.
Ćwiczenie 2
Skorzystaj z poniższego szablonu gatunkowego i przygotuj własną instrukcję. Może to być np. instrukcja zatytułowana: Jak opowiedzieć śmieszny dowcip?
Co to będzie? | Opis zadania |
Dla kogo? | Obraz odbiorcy |
Co trzeba przygotować? | Wyliczenie potrzebnych rzeczy |
Jak to zrobić? | Wyliczenie kolejnych czynności/etapów postępowania |
Na co uważać? | Ostrzeżenia |
Ćwiczenie 3
W instrukcjach ważny jest precyzyjny opis. Istotne jest również, aby język, którym jest napisana był czytelny i zrozumiały. Spróbuj więc przeredagować poniższe instrukcje według podanego wzoru. Zamień formy na prostsze – typowe dla instrukcji.
Wzór: Przed przejściem przez ulicę należy zwrócić uwagę, czy z prawej lub z lewej strony nie nadjeżdża samochód. → Zanim przejdziesz przez ulicę…
1) Można przejść przez ulicę wyłącznie wtedy, gdy zapali się zielone światło. Przechodzenie na czerwonym świetle jest niedozwolone.
2) W razie zauważenia niebezpiecznej sytuacji należy niezwłocznie powiadomić straż miejską.
3) Każdy, kto dostrzeże wypadek, powinien jak najszybciej powiadomić o tym policję. Należy wybrać numer 112 i przekazać informację o wypadku.
4) Wypożyczanie książek w naszej bibliotece nie nastręcza trudności.
5) Przed wypożyczeniem kolejnych książek należy oddać poprzednie.
6) W razie nieoddania książek w terminie nie będzie można wypożyczyć kolejnych.
Źródło: Contentplus. pl sp. z o. o., licencja: CC BY 3.