<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>algorytmy - Kama Kaczmarek</title>
	<atom:link href="https://kamakaczmarek.net/tag/algorytmy/feed/" rel="self" type="application/rss+xml" />
	<link>https://kamakaczmarek.net/tag/algorytmy/</link>
	<description>Strona z materiałami dla uczniów i nauczycieli</description>
	<lastBuildDate>Tue, 29 Sep 2026 11:45:10 +0000</lastBuildDate>
	<language>pl-PL</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	
	<item>
		<title>1. Wprowadzenie do programowania. Języki wysokiego poziomu, instrukcje i bloki instrukcji, algorytmy, programowanie proceduralne i obiektowe.</title>
		<link>https://kamakaczmarek.net/wprowadzenie-programowania-jezyki-wysokiego-poziomu-instrukcje-bloki-instrukcji-algorytmy-programowanie-proceduralne-obiektowe-zmienne-stale/</link>
		
		<dc:creator><![CDATA[Kama]]></dc:creator>
		<pubDate>Thu, 05 Oct 2017 18:10:40 +0000</pubDate>
				<category><![CDATA[aplikacje]]></category>
		<category><![CDATA[dla ucznia]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[algorytmy]]></category>
		<category><![CDATA[aplikacje internetowe]]></category>
		<category><![CDATA[języki wysokiego poziomu]]></category>
		<category><![CDATA[programowanie]]></category>
		<guid isPermaLink="false">https://kamakaczmarek.net/?p=2276</guid>

					<description><![CDATA[<p>TaskQuest Dodatek Jak zostać programistą? Trzeba ćwiczyć, ćwiczyć i ćwiczyć. Stawiać przed sobą wyzwania, rozwiązywać problemy i cierpliwie &#8222;klepać&#8221; linijki kodów. Po czasie sami stwierdzicie, że &#8222;nie taki diabeł straszny&#8230;&#8221;. Programowanie, to rozwiązywanie istniejącego problemu i zapisywania tego rozwiązania w postaci zrozumiałej dla komputera. Schemat działań, jakie należy podjąć w celu rozwiązania problemu, to nic [&#8230;]</p>
<p>Artykuł <a href="https://kamakaczmarek.net/wprowadzenie-programowania-jezyki-wysokiego-poziomu-instrukcje-bloki-instrukcji-algorytmy-programowanie-proceduralne-obiektowe-zmienne-stale/">1. Wprowadzenie do programowania. Języki wysokiego poziomu, instrukcje i bloki instrukcji, algorytmy, programowanie proceduralne i obiektowe.</a> pochodzi z serwisu <a href="https://kamakaczmarek.net">Kama Kaczmarek</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p><a href="#TaskQuest">TaskQuest</a></p>
<p><a href="#dodatek">Dodatek</a></p>



<p class="wp-block-paragraph">Jak zostać programistą? Trzeba ćwiczyć, ćwiczyć i ćwiczyć. Stawiać przed sobą wyzwania, rozwiązywać problemy i cierpliwie &#8222;klepać&#8221; linijki kodów. Po czasie sami stwierdzicie, że &#8222;nie taki diabeł straszny&#8230;&#8221;.</p>



<p class="wp-block-paragraph"><strong>Programowanie</strong>, to rozwiązywanie istniejącego problemu i zapisywania tego rozwiązania w postaci zrozumiałej dla komputera. Schemat działań, jakie należy podjąć w celu rozwiązania problemu, to nic innego jak <strong>algorytm</strong>.</p>



<p class="wp-block-paragraph"><strong>Programy komputerowe</strong> są wszędzie &#8211; samochody, pralki, lodówki, inteligentne domy&#8230; można wyliczać bez końca. Jak to działa? Wszystko co wprowadzamy do komputera, czy jest to tekst, czy obrazek musi zostać jakoś przez maszynę odczytane. Komputer nie &#8222;widzi&#8221; jak my &#8211; on przetwarza. Ale co? ciągi zer i jedynek &#8211; <strong>system binarny</strong>.</p>



<p class="wp-block-paragraph">Za pomocą zer i jedynek można zapisać wszystko &#8211; zainteresowanych pogłębianiem tematu odsyłam do bardzo fajnego artykułu &#8211; <a href="http://eduinf.waw.pl/inf/alg/006_bin/0009.php" target="_blank" rel="noopener">KLIK</a></p>



<p class="wp-block-paragraph"><strong>Programowanie</strong> jest cyklicznym procesem tworzenia kodu w następujących etapach:</p>



<ol class="wp-block-list">
<li>edycji kodu źródłowego,</li>



<li>uruchamiania programu,</li>



<li>analizie działania i rejestrowania błędów,</li>



<li>powrocie do edycji kodu źródłowego (pkt 1) w celu poprawienia błędów lub dalszego poszerzania funkcjonalności.</li>
</ol>



<p class="wp-block-paragraph">Osobę zajmującą się programowaniem nazywa się <strong>programistą</strong>.</p>



<p class="wp-block-paragraph">Pojęcie &#8222;<strong>aplikacja internetowa</strong>&#8221; nie zostało jednoznacznie określone, jest różnie rozumiane i bardzo ogólne.</p>



<p class="wp-block-paragraph">ale jak wyrocznia Wiki mawia:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><em>Aplikacja internetowa, (ang.) web application – zwana również aplikacją webową, to program komputerowy, który pracuje na serwerze i komunikuje się poprzez sieć komputerową z hostem użytkownika komputera z wykorzystaniem przeglądarki internetowej użytkownika, będącego w takim przypadku interaktywnym klientem aplikacji internetowej. W pracy aplikacji internetowej musi pośredniczyć serwer WWW. Do przygotowania samej aplikacji używa się różnych mechanizmów (np. CGI, JSP, ASP.NET) i języków (np. PHP, Java, C#), jak również serwerów aplikacji. Mechanizm prezentacji danych w przeglądarce określa się czasem mianem cienkiego klienta. Przykładem aplikacji internetowej jest mechanizm edycji treści encyklopedii Wikipedia. Inne witryny WWW należące do tej kategorii to np. serwis aukcyjny Allegro czy księgarnia internetowa Merlin.</em></p>
</blockquote>



<h2 class="wp-block-heading">Algorytmy</h2>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><dfn>Algorytm to zestaw instrukcji, czynności, które należy wykonać, aby zrealizować pewne zadanie w skończonej liczbie kroków.</dfn></p>
</blockquote>



<p class="wp-block-paragraph">Sposób &#8222;naszego myślenia&#8221; możemy zapisywać za pomocą następujących bloków:</p>


<div class="wp-block-image">
<figure class="aligncenter"><img fetchpriority="high" decoding="async" width="689" height="702" src="https://kamakaczmarek.net/wp-content/uploads/tablica.png" alt="" class="wp-image-1217" srcset="https://kamakaczmarek.net/wp-content/uploads/tablica.png 689w, https://kamakaczmarek.net/wp-content/uploads/tablica-294x300.png 294w" sizes="(max-width: 689px) 100vw, 689px" /></figure>
</div>


<p class="wp-block-paragraph">a prosty algorytm przedstawiający sposób myślenia jest taki:</p>


<div class="wp-block-image">
<figure class="aligncenter"><img decoding="async" width="324" height="442" src="https://kamakaczmarek.net/wp-content/uploads/algorytm1.png" alt="" class="wp-image-1218" srcset="https://kamakaczmarek.net/wp-content/uploads/algorytm1.png 324w, https://kamakaczmarek.net/wp-content/uploads/algorytm1-220x300.png 220w" sizes="(max-width: 324px) 100vw, 324px" /></figure>
</div>


<h2 class="wp-block-heading">Języki wysokiego poziomu</h2>



<p class="wp-block-paragraph">Na początku do porozumiewania się z komputerem używano języków niskiego poziomu, czyli krótkich kodów zrozumiałych dla procesora, ale nie koniecznie dla innych <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /> takie języki nazywamy assemblerami. W miarę rozwoju programowania, języki programowania zaczęły się stawać bardziej przyjazne dla programistów. Dzisiaj programujemy tak jak myślimy, wykonujemy kolejne kroki algorytmu ubierając je w odpowiednie instrukcje danego języka.</p>



<p class="wp-block-paragraph">Podam wam teraz prosty przykład:</p>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;"><em>Jeżeli liczba jest większa od zera, to wypisz że jest dodatnia</em></code></pre>



<p class="wp-block-paragraph">aby zakodować to zdanie, nie trzeba się specjalnie głowić &#8211; wystarczy je dosłownie przetłumaczyć na język obcy &#8211; w naszym wypadku jest to język programowania. Języki te są uniwersalne (w większości brzmią jak angielski lub skróty angielskich wyrazów), dlatego w np. PHP należy zapisać powyższe zdanie następująco:</p>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">if($liczba&gt;0) echo "jest dodatnia";</code></pre>



<p class="wp-block-paragraph">if to jeżeli, a echo to wypisz i zamieniając te 2 słowa na polskie otrzymamy to samo zdanie co wyżej &#8211; o to właśnie chodzi w językach wysokiego poziomu &#8211; tak jak myślisz, tak piszesz.</p>



<p class="wp-block-paragraph">Napisany przez nas kod musi zostać zrozumiany przez komputer, aby tak się stało, musi zostać przerobiony na zera i jedynki za pomocą kompilatora (tłumaczy kod na język niskiego poziomu) lub interpretera (analizuje kod źródłowy, a przeanalizowane fragmenty wykonuje).</p>



<h2 class="wp-block-heading">instrukcje i bloki instrukcji</h2>



<p class="wp-block-paragraph">Programy komputerowe składają się z serii instrukcji np. if($liczba&gt;0) echo &#8222;jest dodatnia&#8221;;</p>



<p class="wp-block-paragraph">Pojedyncze instrukcje mogą być łączone w bloki np.</p>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">instrukcja_1; 
{ 
   instrukcja_2; 
   instrukcja_3; 
   { 
      instrukcja_4; 
      { 
         instrukcja_5; 
      } 
   } 
}</code></pre>



<h2 id="dodatek" class="wp-block-heading">Quiz – sprawdź się</h2>



<p class="wp-block-paragraph"><strong>1.</strong> Które zdanie najlepiej opisuje algorytm? a) program napisany w PHP b) zestaw czynności prowadzących do rozwiązania zadania w skończonej liczbie kroków c) ciąg zer i jedynek zrozumiały dla procesora d) narzędzie tłumaczące kod na język maszynowy</p>



<p class="wp-block-paragraph"><strong>2.</strong> Uporządkuj etapy cyklu programowania: a) analiza działania i rejestrowanie błędów b) uruchomienie programu c) edycja kodu źródłowego d) powrót do edycji w celu poprawienia błędów lub rozszerzenia funkcjonalności</p>



<p class="wp-block-paragraph"><strong>3.</strong> Uczeń napisał algorytm:</p>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">1. Weź liczbę. 
2. Dodaj do niej 1. 
3. Wróć do kroku 2.</code></pre>



<p class="wp-block-paragraph">Dlaczego to nie jest poprawny algorytm?</p>



<p class="wp-block-paragraph"><strong>4.</strong> Przetłumacz na zwykłe zdanie po polsku:</p>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">if($wynik&gt;50) echo "zaliczone";</code></pre>



<p class="wp-block-paragraph"><strong>5.</strong> Uzupełnij zdania słowami <em>kompilator</em> lub <em>interpreter</em>: a) ______ analizuje kod źródłowy, a przeanalizowane fragmenty od razu wykonuje. b) ______ tłumaczy kod na język niskiego poziomu.</p>



<p class="wp-block-paragraph"><strong>6.</strong> Czym różni się język niskiego poziomu od języka wysokiego poziomu? Odpowiedz w jednym–dwóch zdaniach.</p>



<p class="wp-block-paragraph"><strong>7.</strong> Znajdź błąd w bloku instrukcji:</p>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">{ instrukcja_1; { instrukcja_2; instrukcja_3; }</code></pre>



<p class="wp-block-paragraph"><strong>8.</strong> Który przykład jest aplikacją internetową w rozumieniu z lekcji? a) kalkulator zainstalowany w telefonie działający bez internetu b) serwis aukcyjny, w którym program działa na serwerze, a użytkownik korzysta z niego przez przeglądarkę c) plik tekstowy zapisany na pendrivie d) edytor zdjęć zainstalowany na komputerze</p>



<p class="wp-block-paragraph"><strong>9.</strong> Jakim blokiem schematu blokowego zapiszesz krok <em>„czy suma XP jest większa lub równa progowi poziomu?”</em> i ile wyjść ma ten blok?</p>



<p class="wp-block-paragraph"><strong>10.</strong> Zadanie praktyczne. Zapisz w pseudokodzie algorytm dla TaskQuest: <em>Gdy użytkownik oznaczy zadanie jako wykonane, dostaje 10 XP. Jeżeli jego suma XP osiągnie co najmniej 100, awansuje na kolejny poziom.</em></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Odpowiedzi</h3>



<ol class="wp-block-list">
<li><strong>b)</strong></li>



<li><strong>c → b → a → d</strong></li>



<li>Nie ma warunku zakończenia – kroki 2 i 3 powtarzają się w nieskończoność, a algorytm musi zakończyć się po skończonej liczbie kroków.</li>



<li><em>Jeżeli wynik jest większy od 50, to wypisz „zaliczone”.</em></li>



<li>a) <strong>interpreter</strong>, b) <strong>kompilator</strong> (tłumaczy kod na język niskiego poziomu – stąd nazwa zgodna z lekcją).</li>



<li>Język niskiego poziomu to krótkie kody zrozumiałe dla procesora, ale trudne dla człowieka (asemblery). Język wysokiego poziomu jest czytelny dla człowieka i przypomina zdania w języku angielskim.</li>



<li>Otwarte są dwa nawiasy <code class="prettyprint lang-sql" style="font-size: 0.85em;">{</code>, a zamknięty tylko jeden <code class="prettyprint lang-sql" style="font-size: 0.85em;">}</code>. Na końcu brakuje <code class="prettyprint lang-sql" style="font-size: 0.85em;">}</code> zamykającego zewnętrzny blok.</li>



<li><strong>b)</strong></li>



<li>Blokiem decyzyjnym (<strong>romb</strong>). Ma dwa wyjścia: TAK i NIE.</li>



<li>Przykładowe rozwiązanie (dopuszczalne różne sformułowania):</li>
</ol>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">JEŻELI zadanie oznaczono jako wykonane TO 
xp = xp + 10 
JEŻELI xp &gt;= 100 
TO poziom = poziom + 1</code></pre>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">Sprawdź: czy jest warunek awansu? czy użyto „większe lub równe”, a nie tylko „większe”?</code></pre>



<h1 id="TaskQuest" class="wp-block-heading">TaskQuest — Twój projekt na cały semestr</h1>



<details class="wp-block-details is-layout-flow wp-block-details-is-layout-flow"><summary><strong></strong><strong>KARTA PRACY</strong></summary>
<h2 class="wp-block-heading">O czym jest ten projekt</h2>



<div>Przez cały kurs będziesz budować <strong>jedną, konkretną aplikację internetową</strong>&nbsp;— nie osobne, niepowiązane ćwiczenia, tylko jeden projekt, do którego co lekcję dokładasz nową „cegiełkę”. Na koniec będziesz miał(a) działającą, kompletną aplikację webową, którą naprawdę możesz pokazać innym (np. w portfolio) i naprawdę używać.</div>



<h2 class="wp-block-heading">Jak działa TaskQuest</h2>



<div><strong>TaskQuest</strong> to aplikacja do zarządzania zadaniami i nauką, w której — tak jak w grze — zdobywasz doświadczenie za wykonaną pracę.</div>



<div>&#8211; Zakładasz konto i się logujesz.</div>



<div>&#8211; Dodajesz zadania (np. „Nauczyć się pętli w PHP”, „Zrobić zadanie z matematyki”) z terminem wykonania.</div>



<div>&#8211; Gdy oznaczysz zadanie jako wykonane, dostajesz <strong>punkty doświadczenia (XP)</strong>.</div>



<div>&#8211; Zebranie odpowiedniej liczby XP daje <strong>awans na wyższy poziom</strong>&nbsp;(Nowicjusz → Wojownik → Mistrz&#8230;).</div>



<div>&#8211; Za konsekwentne wykonywanie zadań każdego dnia rośnie Twoja <strong>passa (streak)</strong>.</div>



<div>&#8211; Za różne osiągnięcia (np. 10 wykonanych zadań, 7-dniowy streak) odblokowujesz <strong>odznaki</strong>.</div>



<div>&#8211; Widzisz <strong>ranking</strong>&nbsp;— jak wypadasz na tle innych uczniów w klasie.</div>



<h2 class="wp-block-heading">Jak będzie wyglądać finalna aplikacja</h2>



<div>Na koniec kursu Twoja aplikacja będzie mieć:</div>



<div>1. <strong>Ekran logowania/rejestracji</strong> — formularz z nazwą użytkownika i hasłem (hasła bezpiecznie zaszyfrowane).</div>



<div>2. <strong>Dashboard (panel główny)</strong> — Twoje imię, aktualny poziom, pasek XP pokazujący postęp do następnego poziomu, aktualny streak.</div>



<div>3. <strong>Listę zadań</strong> — zadania do zrobienia i zadania ukończone, z terminami, możliwością dodania nowego zadania, oznaczenia jako zrobione i usunięcia.</div>



<div>4. <strong>Panel odznak</strong> — zdobyte i niezdobyte odznaki.</div>



<div>5. <strong>Ranking klasy</strong> — tabela z uczniami posortowana wg zdobytego XP.</div>



<div>6. <strong>Dynamiczny pasek XP i ranking</strong>, które odświeżają się bez przeładowania całej strony (dzięki technologii AJAX/JSON w ostatniej lekcji).</div>



<div>Wszystko to zbudujesz krok po kroku — od pojedynczego `echo` w lekcji 2, aż po pełne API w lekcji 24. Każda lekcja ma swoje polecenia, podpowiedzi kodu i checklistę, żebyś mógł/mogła pracować samodzielnie i sam(a) sprawdzić, czy wszystko działa.</div>



<div><strong>Zasada projektu:</strong> wszystkie pliki trzymaj w jednym folderze projektu, np. `taskquest/`. Nie kasuj tego, co zrobiłeś/aś na poprzednich lekcjach — kolejne lekcje rozbudowują istniejące pliki.</div>



<h1>Karta pracy</h1>
<p><strong>Projekt: TaskQuest</strong> — grywalizowana aplikacja do zarządzania zadaniami. Użytkownik loguje się, dodaje zadania, za ich wykonanie zdobywa punkty XP, awansuje na poziomy, zdobywa odznaki i widzi swoją pozycję w rankingu klasy. Każda lekcja rozbudowuje tę samą aplikację o nową funkcję.</p>
<h2>Projektowanie aplikacji — zanim napiszesz pierwszą linijkę kodu</h2>
<h3>Cel lekcji</h3>
<p>Zrozumieć, czym będzie Twoja aplikacja, zanim zaczniesz pisać kod.</p>
<h3>Co dziś budujesz</h3>
<p>Jeszcze nic w kodzie — dziś projektujesz aplikację na papierze/w edytorze tekstu.</p>
<h3>Kroki do wykonania</h3>
<ol>
<li>Przeczytaj sekcję „Jak działa TaskQuest” i „Jak będzie wyglądać finalna aplikacja” powyżej.</li>
<li>Wypisz w punktach wszystkie funkcje aplikacji, jakie widzisz (np. logowanie, dodawanie zadania, system XP…).</li>
<li>Narysuj prosty schemat blokowy (na kartce lub w dowolnym narzędziu) pokazujący: użytkownik dodaje zadanie → oznacza jako wykonane → system dolicza XP → system sprawdza, czy to wystarcza na awans → jeśli tak, poziom rośnie.</li>
<li>Zapisz pseudokodem (zwykłym językiem, nie PHP) regułę: „jeśli suma XP jest większa lub równa progowi poziomu, to…”.</li>
<li>Utwórz na dysku folder projektu, np. taskquest/.</li>
</ol>
<h3>Do samodzielnego sprawdzenia</h3>
<p>☐ Mam listę min. 8 funkcji, które będzie mieć aplikacja.</p>
<p>☐ Mam narysowany schemat blokowy logiki awansu na poziom.</p>
<p>☐ Mam zapisaną regułę awansu w pseudokodzie.</p>
<p>☐ Mam utworzony folder projektu.</p>
<h3>Pytania kontrolne</h3>
<ol>
<li>Czym różni się algorytm od programu?</li>
<li>Dlaczego warto zaprojektować aplikację, zanim zacznie się pisać kod?</li>
</ol>
</details>
<p>Artykuł <a href="https://kamakaczmarek.net/wprowadzenie-programowania-jezyki-wysokiego-poziomu-instrukcje-bloki-instrukcji-algorytmy-programowanie-proceduralne-obiektowe-zmienne-stale/">1. Wprowadzenie do programowania. Języki wysokiego poziomu, instrukcje i bloki instrukcji, algorytmy, programowanie proceduralne i obiektowe.</a> pochodzi z serwisu <a href="https://kamakaczmarek.net">Kama Kaczmarek</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
