{"id":1125,"date":"2021-05-16T11:57:00","date_gmt":"2021-05-16T09:57:00","guid":{"rendered":"https:\/\/trzykody.pl\/?page_id=1125"},"modified":"2026-02-20T19:20:21","modified_gmt":"2026-02-20T18:20:21","slug":"hello-world","status":"publish","type":"page","link":"https:\/\/trzykody.pl\/index.php\/python\/hello-world\/","title":{"rendered":"Hello World"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><strong>Program komputerowy to uporz\u0105dkowany zestaw instrukcji wykonywanych przez procesor. Nawet najprostszy program musi zosta\u0107 zapisany w okre\u015blonym j\u0119zyku, przetworzony przez kompilator lub interpreter i uruchomiony w \u015brodowisku wykonawczym. Tradycyjnie pierwszy program wypisuje na ekranie tekst \u201eHello World\u201d. Nie chodzi o sam napis, lecz o sprawdzenie ca\u0142ego \u0142a\u0144cucha: edycja \u2192 kompilacja \/ interpretacja \u2192 uruchomienie \u2192 wyj\u015bcie na ekran. To symboliczny pocz\u0105tek pracy z j\u0119zykiem i \u015brodowiskiem. Hello World.<\/strong><\/p>\n\n\n\n<div class=\"wp-block-rank-math-toc-block\" id=\"rank-math-toc\"><h2>Spis tre\u015bci<\/h2><nav><ol><li class=\"\"><a href=\"#hello-world-minimalny-program-jako-weryfikacja-dzialania-kompilatora-interpretera-i-srodowiska-uruchomieniowego\">Hello World &#8211; minimalny program jako weryfikacja dzia\u0142ania kompilatora, interpretera i \u015brodowiska uruchomieniowego<\/a><ol><li class=\"\"><a href=\"#c\">C<\/a><\/li><li class=\"\"><a href=\"#c-1\">C++<\/a><\/li><li class=\"\"><a href=\"#python\">Python<\/a><\/li><\/ol><\/li><li class=\"\"><a href=\"#hello-world-rozszerzenie-programu-o-interakcje-z-uzytkownikiem-i-wprowadzenie-do-print-input-python\">Hello World &#8211; rozszerzenie programu o interakcj\u0119 z u\u017cytkownikiem i wprowadzenie do print input Python<\/a><ol><li class=\"\"><a href=\"#print-mechanizm-dzialania\">print() &#8211; mechanizm dzia\u0142ania<\/a><\/li><li class=\"\"><a href=\"#input-ogolna-idea\">input() &#8211; og\u00f3lna idea<\/a><\/li><\/ol><\/li><li class=\"\"><a href=\"#funkcja-input-python-mechanizm-dzialania-typy-danych-i-konwersja-wejscia-tekstowego-na-wartosci-liczbowe\">funkcja input Python &#8211; mechanizm dzia\u0142ania, typy danych i konwersja wej\u015bcia tekstowego na warto\u015bci liczbowe<\/a><ol><li class=\"\"><a href=\"#konwersja-typow\">Konwersja typ\u00f3w<\/a><\/li><li class=\"\"><a href=\"#rozbicie-na-etapy-dla-przejrzystosci\">Rozbicie na etapy dla przejrzysto\u015bci<\/a><\/li><\/ol><\/li><li class=\"\"><a href=\"#input-w-pythonie-zaleznosc-miedzy-standardowym-wejsciem-buforowaniem-i-przeplywem-wykonania-programu\">input w Pythonie &#8211; zale\u017cno\u015b\u0107 mi\u0119dzy standardowym wej\u015bciem, buforowaniem i przep\u0142ywem wykonania programu<\/a><ol><li class=\"\"><a href=\"#przyklad-z-petla\">Przyk\u0142ad z p\u0119tl\u0105<\/a><\/li><\/ol><\/li><li class=\"\"><a href=\"#print-input-python-budowanie-prostych-programow-interaktywnych-i-zaleznosc-miedzy-danymi-wejsciowymi-a-przetwarzaniem\">print input Python &#8211; budowanie prostych program\u00f3w interaktywnych i zale\u017cno\u015b\u0107 mi\u0119dzy danymi wej\u015bciowymi a przetwarzaniem<\/a><ol><li class=\"\"><a href=\"#odpowiednik-w-c\">Odpowiednik w C<\/a><\/li><\/ol><\/li><li class=\"\"><a href=\"#hello-world-znaczenie-edukacyjne-minimalnych-programow-oraz-rola-komentarzy-w-zrozumieniu-kodu\">Hello World &#8211; znaczenie edukacyjne minimalnych program\u00f3w oraz rola komentarzy w zrozumieniu kodu<\/a><\/li><li class=\"\"><a href=\"#uwagi-praktyczne-najczestsze-bledy-przy-pracy-z-input-i-print\">Uwagi praktyczne &#8211; najcz\u0119stsze b\u0142\u0119dy przy pracy z input i print<\/a><\/li><\/ol><\/nav><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"hello-world-minimalny-program-jako-weryfikacja-dzialania-kompilatora-interpretera-i-srodowiska-uruchomieniowego\">Hello World &#8211; minimalny program jako weryfikacja dzia\u0142ania kompilatora, interpretera i \u015brodowiska uruchomieniowego<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Najprostszy mo\u017cliwy program to taki, kt\u00f3ry nie przyjmuje danych wej\u015bciowych i generuje jedno wyj\u015bcie tekstowe. Jego celem jest sprawdzenie:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>czy kompilator jest poprawnie zainstalowany,<\/li>\n\n\n\n<li>czy \u015bcie\u017cki systemowe s\u0105 ustawione,<\/li>\n\n\n\n<li>czy program da si\u0119 zbudowa\u0107,<\/li>\n\n\n\n<li>czy potrafimy go uruchomi\u0107.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"c\">C<\/h3>\n\n\n\n<pre class=\"wp-block-preformatted\">#include &lt;stdio.h&gt;int main() {<br>    printf(\"Hello World\\n\");<br>    return 0;<br>}<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Wyja\u015bnienie:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>#include &lt;stdio.h><\/code> &#8211; do\u0142\u0105czenie biblioteki standardowej odpowiedzialnej m.in. za operacje wej\u015bcia i wyj\u015bcia.<\/li>\n\n\n\n<li><code>int main()<\/code> &#8211; punkt wej\u015bcia programu. Ka\u017cdy program w C zaczyna wykonanie od funkcji <code>main<\/code>.<\/li>\n\n\n\n<li><code>{ ... }<\/code> &#8211; blok instrukcji.<\/li>\n\n\n\n<li><code>printf(\"Hello World\\n\");<\/code> &#8211; wypisanie tekstu. <code>\\n<\/code> oznacza znak nowej linii.<\/li>\n\n\n\n<li><code>return 0;<\/code> &#8211; kod zako\u0144czenia programu. Zero oznacza poprawne wykonanie.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Program trzeba skompilowa\u0107, np.:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">gcc program.c -o program<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">a nast\u0119pnie uruchomi\u0107:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">.\/program<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"c-1\">C++<\/h3>\n\n\n\n<pre class=\"wp-block-preformatted\">#include &lt;iostream&gt;int main() {<br>    std::cout &lt;&lt; \"Hello World\" &lt;&lt; std::endl;<br>    return 0;<br>}<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">R\u00f3\u017cnice wzgl\u0119dem C:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>u\u017cycie strumienia <code>std::cout<\/code>,<\/li>\n\n\n\n<li>operator <code>&lt;&lt;<\/code> do przekazywania danych do strumienia,<\/li>\n\n\n\n<li><code>std::endl<\/code> wymusza now\u0105 lini\u0119 i opr\u00f3\u017cnienie bufora.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"python\">Python<\/h3>\n\n\n\n<pre class=\"wp-block-preformatted\">print(\"Hello World\")<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">W Pythonie nie ma funkcji <code>main<\/code> ani etapu kompilacji w klasycznym sensie. Interpreter wykonuje kod bezpo\u015brednio.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Uruchomienie:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">python program.py<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Na tym etapie mamy program bez interakcji. Kolejny krok to mo\u017cliwo\u015b\u0107 komunikacji z u\u017cytkownikiem.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"hello-world-rozszerzenie-programu-o-interakcje-z-uzytkownikiem-i-wprowadzenie-do-print-input-python\">Hello World &#8211; rozszerzenie programu o interakcj\u0119 z u\u017cytkownikiem i wprowadzenie do print input Python<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Program, kt\u00f3ry tylko wypisuje tekst, jest jednostronny. Bardziej interesuj\u0105cy jest taki, kt\u00f3ry:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>pobiera dane,<\/li>\n\n\n\n<li>przetwarza je,<\/li>\n\n\n\n<li>zwraca wynik.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">W Pythonie podstawowe operacje wej\u015bcia i wyj\u015bcia realizuj\u0105 funkcje <code>print()<\/code> oraz <code>input()<\/code>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"print-mechanizm-dzialania\">print() &#8211; mechanizm dzia\u0142ania<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><code>print()<\/code>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>przyjmuje argumenty dowolnego typu,<\/li>\n\n\n\n<li>konwertuje je do postaci tekstowej,<\/li>\n\n\n\n<li>zapisuje je na standardowe wyj\u015bcie (stdout),<\/li>\n\n\n\n<li>domy\u015blnie dodaje znak nowej linii.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Przyk\u0142ad:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">print(\"Witaj\")<br>print(123)<br>print(3.14)<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Ka\u017cdy argument zostaje przekszta\u0142cony do typu <code>str<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Mo\u017cna kontrolowa\u0107 separator i zako\u0144czenie linii:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">print(\"A\", \"B\", \"C\", sep=\",\")<br>print(\"Koniec\", end=\"!\")<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><code>sep<\/code> okre\u015bla separator mi\u0119dzy argumentami, <code>end<\/code> znak ko\u0144cowy.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"input-ogolna-idea\">input() &#8211; og\u00f3lna idea<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><code>input()<\/code>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>zatrzymuje wykonanie programu,<\/li>\n\n\n\n<li>oczekuje na dane ze standardowego wej\u015bcia (klawiatura),<\/li>\n\n\n\n<li>zwraca je jako \u0142a\u0144cuch znak\u00f3w (<code>str<\/code>).<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Przyk\u0142ad:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">name = input(\"Podaj imi\u0119: \")<br>print(\"Cze\u015b\u0107\", name)<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Tu zachodzi wa\u017cna rzecz: <code>input()<\/code> zawsze zwraca tekst, nawet je\u015bli u\u017cytkownik wpisze liczb\u0119.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"funkcja-input-python-mechanizm-dzialania-typy-danych-i-konwersja-wejscia-tekstowego-na-wartosci-liczbowe\">funkcja input Python &#8211; mechanizm dzia\u0142ania, typy danych i konwersja wej\u015bcia tekstowego na warto\u015bci liczbowe<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Wej\u015bcie u\u017cytkownika jest strumieniem znak\u00f3w. Interpreter nie zgaduje, czy \u201e123\u201d to liczba czy tekst. Traktuje to jako <code>str<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Przyk\u0142ad b\u0142\u0119dny logicznie:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">a = input(\"Podaj pierwsz\u0105 liczb\u0119: \")<br>b = input(\"Podaj drug\u0105 liczb\u0119: \")<br>print(a + b)<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Je\u015bli u\u017cytkownik wpisze 2 i 3, wynik b\u0119dzie <code>23<\/code>, nie <code>5<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dlaczego? Operator <code>+<\/code> dla typu <code>str<\/code> oznacza konkatenacj\u0119.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"konwersja-typow\">Konwersja typ\u00f3w<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Aby wykona\u0107 dzia\u0142anie arytmetyczne, trzeba jawnie przekszta\u0142ci\u0107 typ:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">a = int(input(\"Podaj pierwsz\u0105 liczb\u0119: \"))<br>b = int(input(\"Podaj drug\u0105 liczb\u0119: \"))<br>print(a + b)<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Kroki:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><code>input()<\/code> pobiera tekst.<\/li>\n\n\n\n<li><code>int()<\/code> pr\u00f3buje przekonwertowa\u0107 tekst na liczb\u0119 ca\u0142kowit\u0105.<\/li>\n\n\n\n<li>Je\u015bli tekst nie reprezentuje liczby, wyst\u0105pi wyj\u0105tek <code>ValueError<\/code>.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Mo\u017cna te\u017c u\u017cywa\u0107:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>float()<\/code> &#8211; liczby zmiennoprzecinkowe,<\/li>\n\n\n\n<li><code>str()<\/code> &#8211; konwersja do tekstu,<\/li>\n\n\n\n<li><code>bool()<\/code> &#8211; rzadziej, bo dzia\u0142a specyficznie.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"rozbicie-na-etapy-dla-przejrzystosci\">Rozbicie na etapy dla przejrzysto\u015bci<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Czasami lepiej zapisa\u0107 to w dw\u00f3ch liniach:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">text = input(\"Podaj liczb\u0119: \")<br>number = int(text)<br>print(number * 2)<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">To czytelniejsze podczas nauki.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"input-w-pythonie-zaleznosc-miedzy-standardowym-wejsciem-buforowaniem-i-przeplywem-wykonania-programu\">input w Pythonie &#8211; zale\u017cno\u015b\u0107 mi\u0119dzy standardowym wej\u015bciem, buforowaniem i przep\u0142ywem wykonania programu<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Warto zrozumie\u0107, co dzieje si\u0119 wewn\u0119trznie.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Standardowe wej\u015bcie (stdin):<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>jest strumieniem,<\/li>\n\n\n\n<li>mo\u017ce pochodzi\u0107 z klawiatury,<\/li>\n\n\n\n<li>mo\u017ce pochodzi\u0107 z pliku,<\/li>\n\n\n\n<li>mo\u017ce pochodzi\u0107 z potoku systemowego.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><code>input()<\/code>:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>wy\u015bwietla opcjonalny komunikat,<\/li>\n\n\n\n<li>czeka na lini\u0119 zako\u0144czon\u0105 Enterem,<\/li>\n\n\n\n<li>usuwa znak nowej linii,<\/li>\n\n\n\n<li>zwraca tekst.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Program nie wykonuje kolejnych instrukcji, dop\u00f3ki u\u017cytkownik nie poda danych. To istotne przy projektowaniu interaktywnych aplikacji.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"przyklad-z-petla\">Przyk\u0142ad z p\u0119tl\u0105<\/h3>\n\n\n\n<pre class=\"wp-block-preformatted\">while True:<br>    text = input(\"Wpisz co\u015b (stop ko\u0144czy): \")<br>    if text == \"stop\":<br>        break<br>    print(\"Wpisa\u0142e\u015b:\", text)<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Tu widzimy:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>niesko\u0144czon\u0105 p\u0119tl\u0119,<\/li>\n\n\n\n<li>warunek zako\u0144czenia,<\/li>\n\n\n\n<li>zale\u017cno\u015b\u0107 przep\u0142ywu sterowania od danych wej\u015bciowych.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">To podstawowy model dialogu z u\u017cytkownikiem.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"print-input-python-budowanie-prostych-programow-interaktywnych-i-zaleznosc-miedzy-danymi-wejsciowymi-a-przetwarzaniem\">print input Python &#8211; budowanie prostych program\u00f3w interaktywnych i zale\u017cno\u015b\u0107 mi\u0119dzy danymi wej\u015bciowymi a przetwarzaniem<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Po\u0142\u0105czenie <code>print()<\/code> i <code>input()<\/code> tworzy minimalny model aplikacji konsolowej.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Schemat:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>wy\u015bwietlenie komunikatu,<\/li>\n\n\n\n<li>pobranie danych,<\/li>\n\n\n\n<li>przetworzenie,<\/li>\n\n\n\n<li>wy\u015bwietlenie wyniku.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Przyk\u0142ad &#8211; obliczenie pola prostok\u0105ta:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">width = float(input(\"Szeroko\u015b\u0107: \"))<br>height = float(input(\"Wysoko\u015b\u0107: \"))<br>area = width * height<br>print(\"Pole:\", area)<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Tu wida\u0107:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>jawne przekszta\u0142cenie typu,<\/li>\n\n\n\n<li>przechowywanie danych w zmiennych,<\/li>\n\n\n\n<li>operacj\u0119 arytmetyczn\u0105,<\/li>\n\n\n\n<li>prezentacj\u0119 wyniku.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Program jest sekwencyjny. Instrukcje wykonuj\u0105 si\u0119 w kolejno\u015bci zapisu.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"odpowiednik-w-c\">Odpowiednik w C<\/h3>\n\n\n\n<pre class=\"wp-block-preformatted\">#include &lt;stdio.h&gt;int main() {<br>    double width;<br>    double height;    printf(\"Szerokosc: \");<br>    scanf(\"%lf\", &amp;width);    printf(\"Wysokosc: \");<br>    scanf(\"%lf\", &amp;height);    double area = width * height;<br>    printf(\"Pole: %lf\\n\", area);    return 0;<br>}<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">W C trzeba:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>jawnie deklarowa\u0107 typy,<\/li>\n\n\n\n<li>przekazywa\u0107 adres zmiennej do <code>scanf<\/code>,<\/li>\n\n\n\n<li>u\u017cywa\u0107 odpowiednich specyfikator\u00f3w formatu.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">W Pythonie mechanizm jest uproszczony kosztem utraty \u015bcis\u0142ej kontroli typ\u00f3w na poziomie kompilacji.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"hello-world-znaczenie-edukacyjne-minimalnych-programow-oraz-rola-komentarzy-w-zrozumieniu-kodu\">Hello World &#8211; znaczenie edukacyjne minimalnych program\u00f3w oraz rola komentarzy w zrozumieniu kodu<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Komentarze s\u0105 elementem sk\u0142adni ignorowanym przez interpreter lub kompilator. S\u0142u\u017c\u0105 cz\u0142owiekowi.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">W Pythonie:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># To jest komentarz<br>print(\"Hello\")  # Ten fragment wypisuje tekst<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">W C i C++:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\/\/ komentarz jednoliniowy<br>\/* komentarz<br>   wieloliniowy *\/<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">W materia\u0142ach edukacyjnych cz\u0119sto ka\u017cda linia kodu jest opisana. To pomaga w analizie:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">name = input(\"Imi\u0119: \")   # pobranie tekstu<br>print(\"Witaj\", name)     # wy\u015bwietlenie komunikatu<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Podczas pisania w\u0142asnych program\u00f3w warto komentowa\u0107:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>nietrywialne fragmenty,<\/li>\n\n\n\n<li>za\u0142o\u017cenia,<\/li>\n\n\n\n<li>ograniczenia,<\/li>\n\n\n\n<li>powody decyzji projektowych.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Nie ma sensu komentowa\u0107 oczywisto\u015bci typu <code>i = i + 1 # zwi\u0119ksz i o 1<\/code>, je\u015bli kontekst jest jasny.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"uwagi-praktyczne-najczestsze-bledy-przy-pracy-z-input-i-print\">Uwagi praktyczne &#8211; najcz\u0119stsze b\u0142\u0119dy przy pracy z input i print<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Zapominanie o konwersji typu.<\/li>\n\n\n\n<li>Zak\u0142adanie, \u017ce u\u017cytkownik zawsze wpisze poprawne dane.<\/li>\n\n\n\n<li>Brak obs\u0142ugi wyj\u0105tk\u00f3w przy konwersji.<\/li>\n\n\n\n<li>Mylenie konkatenacji tekstu z dodawaniem liczb.<\/li>\n\n\n\n<li>Nieu\u015bwiadomienie sobie, \u017ce <code>input()<\/code> zawsze zwraca <code>str<\/code>.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Przyk\u0142ad obs\u0142ugi b\u0142\u0119du:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">text = input(\"Podaj liczb\u0119: \")try:<br>    number = int(text)<br>    print(\"Podwojenie:\", number * 2)<br>except ValueError:<br>    print(\"To nie jest poprawna liczba\")<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">To ju\u017c wprowadza podstawy obs\u0142ugi wyj\u0105tk\u00f3w.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Minimalny program typu Hello World jest tylko punktem startowym. Od pojedynczego wywo\u0142ania <code>print()<\/code> przechodzi si\u0119 do interakcji, przetwarzania danych i sterowania przep\u0142ywem programu. Mechanizmy <code>input()<\/code> i <code>print()<\/code> s\u0105 prostym, ale fundamentalnym modelem komunikacji mi\u0119dzy u\u017cytkownikiem a programem dzia\u0142aj\u0105cym w trybie konsolowym. Zrozumienie ich dzia\u0142ania upraszcza dalsz\u0105 nauk\u0119 struktur danych, funkcji, modu\u0142\u00f3w i bardziej z\u0142o\u017conych konstrukcji j\u0119zyka.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Program komputerowy to uporz\u0105dkowany zestaw instrukcji wykonywanych przez procesor. Nawet najprostszy program musi zosta\u0107 zapisany w okre\u015blonym j\u0119zyku, przetworzony przez kompilator lub interpreter i uruchomiony w \u015brodowisku wykonawczym. Tradycyjnie pierwszy program wypisuje na ekranie tekst \u201eHello World\u201d. Nie chodzi o sam napis, lecz o sprawdzenie ca\u0142ego \u0142a\u0144cucha: edycja \u2192 kompilacja \/ interpretacja \u2192 uruchomienie \u2192 wyj\u015bcie na ekran. To symboliczny pocz\u0105tek pracy z j\u0119zykiem i \u015brodowiskiem. Hello World. Hello World &#8211; minimalny program jako weryfikacja dzia\u0142ania kompilatora, interpretera i \u015brodowiska uruchomieniowego Najprostszy mo\u017cliwy program to taki, kt\u00f3ry nie przyjmuje danych wej\u015bciowych i generuje jedno wyj\u015bcie tekstowe. Jego celem jest sprawdzenie: C #include &lt;stdio.h&gt;int main() { printf(&#8222;Hello World\\n&#8221;); return 0;} Wyja\u015bnienie: Program trzeba skompilowa\u0107, np.: gcc program.c -o program a nast\u0119pnie uruchomi\u0107: .\/program C++ #include &lt;iostream&gt;int main() { std::cout &lt;&lt; &#8222;Hello World&#8221; &lt;&lt; std::endl; return 0;} R\u00f3\u017cnice wzgl\u0119dem C: Python print(&#8222;Hello World&#8221;) W Pythonie nie ma funkcji main ani etapu kompilacji w klasycznym sensie. Interpreter wykonuje kod bezpo\u015brednio. Uruchomienie: python program.py Na tym etapie mamy program bez interakcji. Kolejny krok to mo\u017cliwo\u015b\u0107 komunikacji z u\u017cytkownikiem. Hello World &#8211; rozszerzenie programu o interakcj\u0119 z u\u017cytkownikiem i wprowadzenie do print input Python Program, kt\u00f3ry tylko wypisuje tekst, jest jednostronny. Bardziej interesuj\u0105cy jest taki, kt\u00f3ry: W Pythonie podstawowe operacje wej\u015bcia i wyj\u015bcia realizuj\u0105 funkcje print() oraz input(). print() &#8211; mechanizm dzia\u0142ania print(): Przyk\u0142ad: print(&#8222;Witaj&#8221;)print(123)print(3.14) Ka\u017cdy argument zostaje przekszta\u0142cony do typu str. Mo\u017cna kontrolowa\u0107 separator i zako\u0144czenie linii: print(&#8222;A&#8221;, &#8222;B&#8221;, &#8222;C&#8221;, sep=&#8221;,&#8221;)print(&#8222;Koniec&#8221;, end=&#8221;!&#8221;) sep okre\u015bla separator mi\u0119dzy argumentami, end znak ko\u0144cowy. input() &#8211; og\u00f3lna idea input(): Przyk\u0142ad: name = input(&#8222;Podaj imi\u0119: &#8222;)print(&#8222;Cze\u015b\u0107&#8221;, name) Tu zachodzi wa\u017cna rzecz: input() zawsze zwraca tekst, nawet je\u015bli u\u017cytkownik wpisze liczb\u0119. funkcja input Python &#8211; mechanizm dzia\u0142ania, typy danych i konwersja wej\u015bcia tekstowego na warto\u015bci liczbowe Wej\u015bcie u\u017cytkownika jest strumieniem znak\u00f3w. Interpreter nie zgaduje, czy \u201e123\u201d to liczba czy tekst. Traktuje to jako str. Przyk\u0142ad b\u0142\u0119dny logicznie: a = input(&#8222;Podaj pierwsz\u0105 liczb\u0119: &#8222;)b = input(&#8222;Podaj drug\u0105 liczb\u0119: &#8222;)print(a + b) Je\u015bli u\u017cytkownik wpisze 2 i 3, wynik b\u0119dzie 23, nie 5. Dlaczego? Operator + dla typu str oznacza konkatenacj\u0119. Konwersja typ\u00f3w Aby wykona\u0107 dzia\u0142anie arytmetyczne, trzeba jawnie przekszta\u0142ci\u0107 typ: a = int(input(&#8222;Podaj pierwsz\u0105 liczb\u0119: &#8222;))b = int(input(&#8222;Podaj drug\u0105 liczb\u0119: &#8222;))print(a + b) Kroki: Mo\u017cna te\u017c u\u017cywa\u0107: Rozbicie na etapy dla przejrzysto\u015bci Czasami lepiej zapisa\u0107 to w dw\u00f3ch liniach: text = input(&#8222;Podaj liczb\u0119: &#8222;)number = int(text)print(number * 2) To czytelniejsze podczas nauki. input w Pythonie &#8211; zale\u017cno\u015b\u0107 mi\u0119dzy standardowym wej\u015bciem, buforowaniem i przep\u0142ywem wykonania programu Warto zrozumie\u0107, co dzieje si\u0119 wewn\u0119trznie. Standardowe wej\u015bcie (stdin): input(): Program nie wykonuje kolejnych instrukcji, dop\u00f3ki u\u017cytkownik nie poda danych. To istotne przy projektowaniu interaktywnych aplikacji. Przyk\u0142ad z p\u0119tl\u0105 while True: text = input(&#8222;Wpisz co\u015b (stop ko\u0144czy): &#8222;) if text == &#8222;stop&#8221;: break print(&#8222;Wpisa\u0142e\u015b:&#8221;, text) Tu widzimy: To podstawowy model dialogu z u\u017cytkownikiem. print input Python &#8211; budowanie prostych program\u00f3w interaktywnych i zale\u017cno\u015b\u0107 mi\u0119dzy danymi wej\u015bciowymi a przetwarzaniem Po\u0142\u0105czenie print() i input() tworzy minimalny model aplikacji konsolowej. Schemat: Przyk\u0142ad &#8211; obliczenie pola prostok\u0105ta: width = float(input(&#8222;Szeroko\u015b\u0107: &#8222;))height = float(input(&#8222;Wysoko\u015b\u0107: &#8222;))area = width * heightprint(&#8222;Pole:&#8221;, area) Tu wida\u0107: Program jest sekwencyjny. Instrukcje wykonuj\u0105 si\u0119 w kolejno\u015bci zapisu. Odpowiednik w C #include &lt;stdio.h&gt;int main() { double width; double height; printf(&#8222;Szerokosc: &#8222;); scanf(&#8222;%lf&#8221;, &amp;width); printf(&#8222;Wysokosc: &#8222;); scanf(&#8222;%lf&#8221;, &amp;height); double area = width * height; printf(&#8222;Pole: %lf\\n&#8221;, area); return 0;} W C trzeba: W Pythonie mechanizm jest uproszczony kosztem utraty \u015bcis\u0142ej kontroli typ\u00f3w na poziomie kompilacji. Hello World &#8211; znaczenie edukacyjne minimalnych program\u00f3w oraz rola komentarzy w zrozumieniu kodu Komentarze s\u0105 elementem sk\u0142adni ignorowanym przez interpreter lub kompilator. S\u0142u\u017c\u0105 cz\u0142owiekowi. W Pythonie: # To jest komentarzprint(&#8222;Hello&#8221;) # Ten fragment wypisuje tekst W C i C++: \/\/ komentarz jednoliniowy\/* komentarz wieloliniowy *\/ W materia\u0142ach edukacyjnych cz\u0119sto ka\u017cda linia kodu jest opisana. To pomaga w analizie: name = input(&#8222;Imi\u0119: &#8222;) # pobranie tekstuprint(&#8222;Witaj&#8221;, name) # wy\u015bwietlenie komunikatu Podczas pisania w\u0142asnych program\u00f3w warto komentowa\u0107: Nie ma sensu komentowa\u0107 oczywisto\u015bci typu i = i + 1 # zwi\u0119ksz i o 1, je\u015bli kontekst jest jasny. Uwagi praktyczne &#8211; najcz\u0119stsze b\u0142\u0119dy przy pracy z input i print Przyk\u0142ad obs\u0142ugi b\u0142\u0119du: text = input(&#8222;Podaj liczb\u0119: &#8222;)try: number = int(text) print(&#8222;Podwojenie:&#8221;, number * 2)except ValueError: print(&#8222;To nie jest poprawna liczba&#8221;) To ju\u017c wprowadza podstawy obs\u0142ugi wyj\u0105tk\u00f3w. Minimalny program typu Hello World jest tylko punktem startowym. Od pojedynczego wywo\u0142ania print() przechodzi si\u0119 do interakcji, przetwarzania danych i sterowania przep\u0142ywem programu. Mechanizmy input() i print() s\u0105 prostym, ale fundamentalnym modelem komunikacji mi\u0119dzy u\u017cytkownikiem a programem dzia\u0142aj\u0105cym w trybie konsolowym. Zrozumienie ich dzia\u0142ania upraszcza dalsz\u0105 nauk\u0119 struktur danych, funkcji, modu\u0142\u00f3w i bardziej z\u0142o\u017conych konstrukcji j\u0119zyka.<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":1031,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-1125","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/trzykody.pl\/index.php\/wp-json\/wp\/v2\/pages\/1125","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/trzykody.pl\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/trzykody.pl\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/trzykody.pl\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/trzykody.pl\/index.php\/wp-json\/wp\/v2\/comments?post=1125"}],"version-history":[{"count":1,"href":"https:\/\/trzykody.pl\/index.php\/wp-json\/wp\/v2\/pages\/1125\/revisions"}],"predecessor-version":[{"id":1126,"href":"https:\/\/trzykody.pl\/index.php\/wp-json\/wp\/v2\/pages\/1125\/revisions\/1126"}],"up":[{"embeddable":true,"href":"https:\/\/trzykody.pl\/index.php\/wp-json\/wp\/v2\/pages\/1031"}],"wp:attachment":[{"href":"https:\/\/trzykody.pl\/index.php\/wp-json\/wp\/v2\/media?parent=1125"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}