]> gitweb.morketsmerke.org Git - mmdev.git/commitdiff
Kontynuowanie tworzenia dodatku A. Podrozdział 18.4.2.
authorxf0r3m <jakubstasinski@protonmaill.com>
Tue, 14 May 2024 12:54:23 +0000 (14:54 +0200)
committerxf0r3m <jakubstasinski@protonmaill.com>
Tue, 14 May 2024 12:54:23 +0000 (14:54 +0200)
articles/terminallog/Linux.Podstawy.html

index 4f541383701c5f4b38c390bdca13f09b0b2b93c1..e52d1366f02a4983dd241ae14edbcd2f176a059f 100644 (file)
@@ -13895,7 +13895,113 @@ else
   #Blok dla fałszu obu warunków;
 fi
 </pre>
-      <h3 id="18.3.2.case">18.3.2. Konstrukcja warunkowa - case</h3>
+        <h3 id="18.3.2.case">18.3.2. Konstrukcja warunkowa - case</h3>
+        <p>
+          Inny rodzajem konstrukcji warunkowej, jest konstrukcja
+          <strong>case</strong>, działa ona trochę na innej zasadzie niż
+          konstrukcja <em>if-then-else</em>. Nie mam tutaj klasycznego warunku,
+          a jedynie zmienna, która jest porównywana z zapisanymi przez
+          programistę wartościami (<em>przypadkami</em>). Przypadki definiują
+          bloki kodu, w momencie gdy wartość zmiennej jest równa wartości
+          danego przypadku wówczas BASH wykona instrukcje zapisane w bloku
+          tego przypadku.
+        </p> 
+<pre class="code-block">
+case $alphabet; in
+  'a') echo "A";;
+  'b') echo "B";;
+esac
+</pre>
+        <p>
+          Zmienna <code class="code-inline">alphabet</code> będzie kolejno
+          porównywana z przypadkami <code class="code-inline">'a'</code>
+          <code class="code-inline">'b'</code>. Jeśli zostanie odnaleziony
+          odpowiedni przypadek, wówczas zostanie uruchomiony odpowiedni blok
+          kodu. Zwróćmy uwagę na to, że bloki kodu poszczególnych przypadków
+          zakończone są podwójnym średnikiem, jest to wymagane, a jego
+          pominięcie spowoduje błąd powłoki.
+        </p>
+        <p>
+          Konstrukcja <em>Case</em> posiada przypadek uniwersalny
+          wykorzystywany gdy zmienna nie pasuje, do żadnego z przypadków.
+          Wartość takiego przypadku zapisuje się symbolem gwiazdki
+          (<strong>*</strong>).
+        </p>
+<pre class="code-block">
+case $alphabet; in
+  'a') echo "A";;
+  'b') echo "B";;
+   *) echo "To nie jest litera alfabetu";;
+esac
+</pre>
+        <p>
+          W przypadku konstrukcji <em>case</em>, bloki kodu mogą nie być aż
+          tak widoczne. Niemniej jednak blok rozpoczyna się od wskazania
+          wartości przypadku i obejmuje wszystkie instrukcje, aż do napotkania
+          podwójnego średnika. Samo wskazanie wartości przypadku nie musi się
+          ograniczać do pojednczej wartości, ale może zawierać warianty.
+        </p>
+<pre class="code-block">
+case $alphabet; in
+  'a'|'A') echo "A";;
+  'b') echo "B";;
+   *) echo "To nie jest litera alfabetu";;
+esac
+</pre>
+        <p>
+          Konstrukcja <em>case</em>, stosowana jest głównie po to aby nie
+          tworzyć kaskady konstrukcji <em>if-then-elif-else</em>. Każda
+          konstrukcja <em>case</em>, kończy się słowem kluczowym
+          <strong>esac</strong>.
+        </p>
+        <h2 id="18.4.loops">18.4. Pętle</h2>
+        <p>
+          Pętle w programowaniu służa wykonywaniu powtarzalnych czynności
+          pod pewnym warunkiem. W bloku pętli element warunku
+          (najprawdopodobniej) ulega zmiania, tak aby pętla zakończyła się
+          i interpretacja programu wróciła na właściwy tor. Jeśli tak się nie
+          dzieje, to wówczas mamy doczynienia z nieskończoną pętlą, tego typu
+          konstrukcje nie zawsze muszą oznaczać pełnego wykorzystania zasobów
+          komputera, w zależności co znajduje się w ich bloku kodu. W BASH-u
+          dość często wykorzystywane są dwa rodzaje pętli.
+        </p>
+        <h3 id="18.4.1.whileloop">18.4.1. Pętla while</h3>
+        <p>
+          Pętla <em>while</em> jest podstawowm rodzajem pętli, który potrzebuje
+          do działania spełnionego warunku, wówczas uruchamiana jest
+          sekwencja poleceń znajdujące sie w bloku tek pętli. W przypadku tego
+          rodzaju pętli istotne jest utworzenie <strong>licznika</strong> - 
+          zmiennej, która będzie kontrolować ilość powtórzeń pętli. Licznik
+          zmieniany jest zazwyczaj, gdzieś na samym końcu pętli lub jego
+          zmiana jest użależniona od określonego warunku. Ze względu na to, iż
+          warunek pętli musi być prawdą, aby mogła ona w ogóle rozpocząć
+          działanie - licznik musi zostać zdefiniowany przed pętlą. Poniżej
+          znajduje się przykładowa konstrukcja pętli while wyświetlająca
+          kwadraty pierwszych 10 dodatnich liczb.
+        </p>
+<pre class="code-block">
+count=1
+while [ $count -le 10 ]; do
+  pow=$(expr $count \* $count);
+  echo "${count}: $pow";
+  count=$(expr $count + 1);
+done
+</pre>
+        <p>
+          Pętla <em>while</em>, rozpoczyna się od słowa kluczowego
+          <code class="code-inline">while</code>, po którym następuję
+          warunek. Warunek (jak sama nazwa pętli może wskazywać) musi być
+          spełniony, aby pętla się uruchomiła, bez tego pętla nie wykona się
+          ani razu. Warunek operuje na klasycznych instrukcjach warunkowych.
+          Co pozwala stwierdzić, że pętla <em>while</em> działa na takiej
+          samej zasadzie jak konstrukcja <em>if</em>. Po warunku obowiązkowo
+          występuje średnik, blok kodu zawierającego instrukcje do wykonania w
+          pętli otwiera słowo kluczowe <code class="code-inline">do</code>.
+          Po tym słowie umiesczana jest sekwencja poleceń, która będzie
+          wykonywana dopóki warunek będzię spełniony (będzie zwracać prawdę).
+          Blok kodu pętli, kończy się słowem kluczowym
+          <code class="code-inline">done</code>.
+        </p> 
       </div>
                        <p style="margin: 15px; padding: 0; outline: 0;">
                                2024; COPYLEFT; ALL RIGHTS REVERSED;