Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
00000 003806 19001233 na godz. na dobę w sumie
Projektowanie oprogramowania dla zupełnie początkujących. Owoce programowania. Wydanie V - książka
Projektowanie oprogramowania dla zupełnie początkujących. Owoce programowania. Wydanie V - książka
Autor: Liczba stron: 824
Wydawca: Helion Język publikacji: polski
ISBN: 978-83-283-5565-1 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> webmasterstwo >> funkcjonalność stron
Porównaj ceny (książka, ebook (-35%), audiobook).

Programowanie to nie tylko umiejętność pisania kodu oraz organizowania go w funkcje, procedury i moduły. Nawet najbardziej finezyjne języki i najnowocześniejsze paradygmaty programowania nie zapewnią sukcesu, jeśli projekt aplikacji jest nieprzemyślany, a jej logice brakuje... logiki. Z drugiej strony poświęcenie odrobiny czasu na stworzenie dobrego projektu sprawi, że praca nad pisaniem kodu będzie łatwiejsza, sama aplikacja będzie pracować lepiej i bardziej niezawodnie, a późniejsze modyfikacje i rozwój oprogramowania przysporzą mniej problemów.

Jeśli planujesz napisać swoją pierwszą aplikację, sięgnij po tę książkę. Aby zrozumieć zawartą w niej treść, nie trzeba znać żadnego języka programowania. Pokazano tu, jak działają programy i jak można z ich wykorzystaniem rozwiązywać konkretne zadania. Wiedza o zasadach projektowania jest przekazywana za pomocą pseudokodu i schematów blokowych. Omówiono zarówno podstawowe zagadnienia, takie jak typy danych, zmienne, funkcje, jak i nieco bardziej zaawansowane: programowanie obiektowe, tworzenie graficznych interfejsów użytkownika i pisanie programów sterowanych zdarzeniami. W tym wydaniu książki wprowadzono wiele poprawek i uzupełnień, dotyczących między innymi języków Java, Python i C++ oraz programowania aplikacji dla urządzeń mobilnych.

Dzięki tej książce dowiesz się:

Bez dobrego projektu zawiedzie najlepszy kod!

Znajdź podobne książki Ostatnio czytane w tej kategorii

Darmowy fragment publikacji:

Tytuł oryginału: Starting Out with Programming Logic and Design (5th Edition) Tłumaczenie: Wojciech Moch z wykorzystaniem fragmentów książki „Projektowanie oprogramowania dla zupełnie początkujących. Owoce programowania. Wydanie IV” w tłumaczeniu Krzysztofa Braunera ISBN: 978-83-283-5565-1 Authorized translation from the English language edition, entitled: STARTING OUT WITH PROGRAMMING LOGIC AND DESIGN, 5th Edition, by GADDIS TONY, published by Pearson Education, Inc, publishing as Pearson. Copyright © 2019 by Pearson Education, Inc. or its affiliates. All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording or by any information storage retrieval system, without permission from Pearson Education, Inc. Polish language edition published by HELION S.A. Copyright © 2019. Microsoft® Windows®, and Microsoft Office® are registered trademarks of the Microsoft Corporation in the U.S.A. and other countries. This book is not sponsored or endorsed by or affiliated with the Microsoft Corporation. Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną, fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje naruszenie praw autorskich niniejszej publikacji. Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich właścicieli. Autor oraz Helion SA dołożyli wszelkich starań, by zawarte w tej książce informacje były kompletne i rzetelne. Nie biorą jednak żadnej odpowiedzialności ani za ich wykorzystanie, ani za związane z tym ewentualne naruszenie praw patentowych lub autorskich. Autor oraz Helion SA nie ponoszą również żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji zawartych w książce. Helion SA ul. Kościuszki 1c, 44-100 Gliwice tel. 32 231 22 19, 32 230 98 63 e-mail: helion@helion.pl WWW: http://helion.pl (księgarnia internetowa, katalog książek) Pliki z przykładami omawianymi w książce można znaleźć pod adresem: ftp://ftp.helion.pl/przyklady/pkpro5.zip Drogi Czytelniku! Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres http://helion.pl/user/opinie/pkpro5 Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję. Printed in Poland. • Kup książkę • Poleć książkę • Oceń książkę • Księgarnia internetowa • Lubię to! » Nasza społeczność Spis treści Wstęp ............................................................................... 13 Podziękowania ................................................................ 19 O autorze ......................................................................... 21 Rozdział 1. Wstępne informacje na temat komputerów i programowania ............................................................ 23 1.1 Wstęp ...................................................................................23 1.2 Sprzęt ...................................................................................24 1.3 W jaki sposób komputer przechowuje dane ...........................30 1.4 W jaki sposób działa program ...............................................35 1.5 Rodzaje oprogramowania ......................................................44 Pytania kontrolne ............................................................................45 Rozdział 2. Dane wejściowe, przetwarzanie i dane wyjściowe ..... 51 Projektowanie programu .......................................................51 2.1 2.2 Dane wejściowe, dane wyjściowe i zmienne ...........................58 2.3 Przypisywanie wartości do zmiennych i wykonywanie obliczeń ....69 W CENTRUM UWAGI Obliczanie opłat za dodatkowe minuty ................73 W CENTRUM UWAGI Obliczanie procentów ..........................................74 W CENTRUM UWAGI Obliczanie średniej ..............................................79 W CENTRUM UWAGI Zamiana wzoru matematycznego na wyrażenie ...82 2.4 Deklarowanie zmiennych i typy danych ..................................84 Stałe nazwane .......................................................................90 2.5 2.6 Ręczne śledzenie programu ...................................................91 2.7 Dokumentowanie programu ..................................................93 W CENTRUM UWAGI Korzystanie ze stałych nazwanych, konwencje zapisu i komentarze .............................................94 Projektowanie pierwszego programu .....................................97 Rzut oka na języki Java, Python i C++ .................................100 2.8 2.9 5 Poleć książkęKup książkę 6 Spis treści Pytania kontrolne ..........................................................................121 Ćwiczenia z wykrywania błędów ....................................................126 Ćwiczenia programistyczne ............................................................127 Rozdział 3. Moduły ........................................................................... 131 3.1 Moduły — informacje wstępne ............................................131 3.2 Definiowanie i wywoływanie modułów ................................134 W CENTRUM UWAGI Definiowanie i wywoływanie modułów ..............140 Zmienne lokalne ..................................................................145 3.3 3.4 Przekazywanie argumentów do modułów ............................148 W CENTRUM UWAGI Przekazywanie argumentu do modułu ...............153 W CENTRUM UWAGI Przekazywanie argumentu przez referencję ........159 3.5 Zmienne globalne i stałe globalne ........................................162 W CENTRUM UWAGI Korzystanie ze stałych globalnych ......................165 3.6 Rzut oka na języki Java, Python i C++ .................................167 Pytania kontrolne ..........................................................................179 Ćwiczenia z wykrywania błędów ....................................................183 Ćwiczenia programistyczne ............................................................183 Rozdział 4. Struktury warunkowe i logika boolowska .................. 187 4.1 Struktury warunkowe — informacje wstępne .......................187 W CENTRUM UWAGI Korzystanie z instrukcji If-Then ...........................195 4.2 Struktury warunkowe podwójnego wyboru ..........................198 W CENTRUM UWAGI Korzystanie z instrukcji If-Then-Else ....................199 Porównywanie ciągów znaków ............................................202 4.3 4.4 Zagnieżdżone struktury warunkowe ....................................208 W CENTRUM UWAGI Wielokrotne zagnieżdżenie struktur warunkowych .........................................................211 4.5 Struktura decyzyjna .............................................................215 W CENTRUM UWAGI Korzystanie ze struktury decyzyjnej .....................218 4.6 Operatory logiczne ..............................................................221 Zmienne boolowskie ...........................................................229 4.7 4.8 Rzut oka na języki Java, Python i C++ .................................230 Pytania kontrolne ..........................................................................242 Ćwiczenia z wykrywania błędów ....................................................246 Ćwiczenia programistyczne ............................................................247 Poleć książkęKup książkę Spis treści 7 Rozdział 5. Struktury cykliczne ........................................................ 251 Struktury cykliczne — wprowadzenie ...................................251 5.1 5.2 Pętle warunkowe: While, Do-While i Do-Until ......................253 W CENTRUM UWAGI Projektowanie pętli While ..................................257 W CENTRUM UWAGI Projektowanie pętli Do-While .............................266 5.3 Pętle licznikowe i instrukcja For ............................................272 W CENTRUM UWAGI Projektowanie pętli licznikowej Rozdział 6. za pomocą instrukcji For ......................................................279 5.4 Obliczanie sumy bieżącej .....................................................289 5.5 Wartownik ..........................................................................293 W CENTRUM UWAGI Korzystanie z wartownika ..................................293 Pętle zagnieżdżone .............................................................295 5.6 5.7 Rzut oka na języki Java, Python i C++ .................................298 Pytania kontrolne ..........................................................................308 Ćwiczenia z wykrywania błędów ....................................................311 Ćwiczenia programistyczne ............................................................312 Funkcje ........................................................................... 315 6.1 Wprowadzenie do funkcji: generowanie liczb losowych .......315 W CENTRUM UWAGI Korzystanie z liczb losowych ..............................319 W CENTRUM UWAGI Wykorzystanie liczb losowych do reprezentowania innych wartości ....................................321 6.2 Tworzenie własnych funkcji .................................................322 W CENTRUM UWAGI Modularyzacja kodu z wykorzystaniem funkcji ...330 Inne funkcje biblioteczne .....................................................338 6.3 6.4 Rzut oka na języki Java, Python i C++ .................................349 Pytania kontrolne ..........................................................................357 Ćwiczenia z wykrywania błędów ....................................................359 Ćwiczenia programistyczne ............................................................360 Rozdział 7. Walidacja danych wejściowych ................................... 365 7.1 Garbage In, Garbage Out ....................................................365 7.2 Pętla walidacji danych wejściowych ......................................367 W CENTRUM UWAGI Projektowanie pętli walidacji danych wejściowych ............................................................369 Programowanie defensywne ................................................374 7.3 Poleć książkęKup książkę 8 Spis treści Rozdział 8. 7.4 Rzut oka na języki Java, Python i C++ .................................375 Pytania kontrolne ..........................................................................379 Ćwiczenia z wykrywania błędów ....................................................381 Ćwiczenia programistyczne ............................................................382 Tablice ............................................................................ 385 8.1 Tablice — informacje podstawowe ......................................385 W CENTRUM UWAGI Korzystanie z elementów tablicy w wyrażeniach matematycznych ...........................................392 Sekwencyjne przeszukiwanie tablicy .....................................400 8.2 8.3 Przetwarzanie elementów tablicy .........................................405 W CENTRUM UWAGI Przekazywanie tablicy ........................................412 8.4 Tablice równoległe ..............................................................419 W CENTRUM UWAGI Korzystanie z tablic równoległych ......................420 8.5 Tablice dwuwymiarowe .......................................................424 W CENTRUM UWAGI Korzystanie z tablic dwuwymiarowych ...............427 8.6 Tablice trój- i więcejwymiarowe ...........................................432 8.7 Rzut oka na języki Java, Python i C++ .................................434 Pytania kontrolne ..........................................................................444 Ćwiczenia z wykrywania błędów ....................................................447 Ćwiczenia programistyczne ............................................................448 Rozdział 9. Sortowanie i przeszukiwanie tabel ............................. 453 9.1 Algorytm sortowania bąbelkowego .....................................453 W CENTRUM UWAGI Korzystanie z algorytmu sortowania bąbelkowego ......................................................................460 9.2 Algorytm sortowania przez wybieranie ................................468 9.3 Algorytm sortowania przez wstawianie ................................473 9.4 Algorytm wyszukiwania binarnego ......................................479 W CENTRUM UWAGI Korzystanie z algorytmu wyszukiwania binarnego .....................................................482 9.5 Rzut oka na języki Java, Python i C++ .................................485 Pytania kontrolne ..........................................................................497 Ćwiczenia z wykrywania błędów ....................................................500 Ćwiczenia programistyczne ............................................................501 Poleć książkęKup książkę Spis treści 9 Rozdział 10. Pliki ................................................................................ 503 10.1 Odczyt i zapis do plików — informacje wstępne ..................503 10.2 Przetwarzanie plików za pomocą pętli .................................516 W CENTRUM UWAGI Korzystanie z plików ..........................................520 10.3 Korzystanie z plików i tablic .................................................524 10.4 Przetwarzanie rekordów ......................................................525 W CENTRUM UWAGI Dodawanie i wyświetlanie rekordów ..................530 W CENTRUM UWAGI Wyszukiwanie rekordu .......................................533 W CENTRUM UWAGI Modyfikowanie rekordów ..................................535 W CENTRUM UWAGI Usuwanie rekordów ..........................................540 10.5 Separatory sterowania .........................................................543 W CENTRUM UWAGI Korzystanie z separatorów sterowania ...............544 10.6. Rzut oka na języki Java, Python i C++ .................................550 Pytania kontrolne ..........................................................................570 Ćwiczenia z wykrywania błędów ....................................................574 Ćwiczenia programistyczne ............................................................574 Rozdział 11. Programy sterowane za pomocą menu ....................... 577 11.1 Wprowadzenie do programów sterowanych za pomocą menu ............................................577 11.2 Modularyzacja programu sterowanego za pomocą menu ....587 11.3 Ponowne wyświetlanie menu za pomocą pętli .....................589 W CENTRUM UWAGI Projektowanie programu sterowanego za pomocą menu ................................................................596 11.4 Menu wielopoziomowe .......................................................610 11.5 Rzut oka na języki Java, Python i C++ .................................616 Pytania kontrolne ..........................................................................621 Ćwiczenia programistyczne ............................................................623 Rozdział 12. Przetwarzanie tekstu .................................................... 627 12.1 Wstęp .................................................................................627 12.2 Przetwarzanie poszczególnych znaków w ciągu ...................629 W CENTRUM UWAGI Sprawdzanie hasła ............................................632 W CENTRUM UWAGI Formatowanie numeru telefonu i usuwanie formatowania ....................................................637 12.3 Rzut oka na języki Java, Python i C++ .................................642 Poleć książkęKup książkę 10 Spis treści Pytania kontrolne ..........................................................................649 Ćwiczenia z wykrywania błędów ....................................................651 Ćwiczenia programistyczne ............................................................652 Rozdział 13. Rekurencja ..................................................................... 657 13.1 Wprowadzenie do rekurencji ...............................................657 13.2 Rozwiązywanie zadań za pomocą rekurencji ........................660 13.3 Przykłady algorytmów rekurencyjnych ..................................664 13.4 Rzut oka na języki Java, Python i C++ .................................674 Pytania kontrolne ..........................................................................678 Ćwiczenia programistyczne ............................................................681 Rozdział 14. Programowanie obiektowe .......................................... 683 14.1 Programowanie proceduralne i programowanie obiektowe ....683 14.2 Klasy ...................................................................................687 14.3 Projektowanie klas za pomocą języka UML ...........................698 14.4 Wyznaczanie klas i ich zakresu obowiązków w zadaniu ........700 W CENTRUM UWAGI Wyznaczanie klas ..............................................701 W CENTRUM UWAGI Określanie zakresu obowiązków klasy ................705 14.5 Dziedziczenie ......................................................................711 14.6 Polimorfizm ........................................................................718 14.7 Rzut oka na języki Java, Python i C++ .................................723 Pytania kontrolne ..........................................................................740 Ćwiczenia programistyczne ............................................................744 Rozdział 15. Aplikacje z GUI i programowanie sterowane zdarzeniami ................................................ 747 15.1 Graficzny interfejs użytkownika ............................................747 15.2 Projektowanie interfejsu użytkownika do programu wyposażonego w GUI .........................................................751 W CENTRUM UWAGI Projektowanie okna ...........................................755 15.3 Tworzenie procedury obsługi zdarzenia ...............................758 W CENTRUM UWAGI Projektowanie procedury obsługi zdarzenia ........761 15.4. Projektowanie aplikacji na urządzenia mobilne .....................764 15.5 Rzut oka na języki Java, Python i C++ .................................773 Pytania kontrolne ..........................................................................774 Ćwiczenia programistyczne ............................................................776 Poleć książkęKup książkę Spis treści 11 Dodatek A Tablica kodów ASCII/Unicode ....................................... 779 Dodatek B Symbole na schematach blokowych ............................ 781 Dodatek C Przewodnik po pseudokodzie ...................................... 783 Dodatek D Zamiana liczb dziesiętnych na postać binarną ........... 797 Dodatek E Odpowiedzi do pytań z punktów kontrolnych ........... 799 Skorowidz ...................................................................... 815 Poleć książkęKup książkę 12 Spis treści Poleć książkęKup książkę Wstępne informacje na temat komputerów i programowania Ł A I Z D Z O R 1 TEMATYKA 1.1 Wstęp 1.2 Sprzęt 1.3 W jaki sposób komputer przechowuje dane 1.4 W jaki sposób działa program 1.5 Rodzaje oprogramowania 1.1. Wstęp 1.1 Wstęp Pomyśl przez chwilę, na jak wiele sposobów ludzie korzystają z komputerów. Uczniowie w szkole piszą na nich wypracowania, wyszukują artykuły, wysyłają wiadomości e-mail i biorą udział w zajęciach online. W pracy natomiast za pomocą komputerów anali- zuje się dane, tworzy prezentacje, przeprowadza transakcje biznesowe, nawiązuje kontakty z klientami i współpracownikami, steruje maszynami w fabrykach, a także wykonuje się wiele innych czynności. W domu wykorzystujemy komputery do takich czynności jak płacenie rachunków, zakupy w sieci, kontakty z przyjaciółmi i rodziną oraz granie w gry. Zwróć uwagę, że urządzenia takie jak na przykład smartfony, tablety, odtwarzacze MP3 czy systemy nawigacji samochodowej są także komputerami. W życiu codziennym używamy komputerów niemal na każdym kroku. Komputery potrafią wykonywać tak wiele zadań dlatego, że można je w dowolny spo- sób zaprogramować. Oznacza to, że komputery nie zostały stworzone, aby wykonywać jedno, określone zadanie, ale po to, aby wykonywać zadanie, jakie wskaże im okre- ślony program. Program składa się z szeregu instrukcji, które komputer musi uru- chomić, aby wykonać określone zadanie. Na rysunku 1.1 przedstawione są dwa popu- larne programy: Microsoft Word i Microsoft PowerPoint. Programy to inaczej oprogramowanie. Z punktu widzenia komputera oprogramo- wanie jest rzeczą kluczową — bez niego nie byłby w stanie wykonać żadnej operacji. Programy, dzięki którym nasze komputery są dla nas tak przydatne, tworzą twórcy oprogramowania, czyli programiści. Osoby te posiadają wiedzę dotyczącą projek- towania, tworzenia i testowania programów komputerowych. Bycie programistą jest 23 Poleć książkęKup książkę 24 Rozdział 1. Wstępne informacje na temat komputerów i programowania Rysunek 1.1. Popularne programy komputerowe (zdjęcie dzięki uprzejmości Microsoft Corporation) ekscytującym i satysfakcjonującym zajęciem. W dzisiejszych czasach programistów można znaleźć w bardzo wielu branżach: biznesie, medycynie, organach administracji publicznej, organach ścigania, rolnictwie, szkolnictwie, przemyśle rozrywkowym — niemal w każdej dziedzinie. Dzięki tej książce poznasz podstawowe zagadnienia związane z programowaniem kom- puterów. Zanim jednak przejdziemy do omawiania tych zagadnień, musisz zrozumieć kilka prostych rzeczy dotyczących komputerów i ich działania. W tym rozdziale zdobędziesz wystarczającą wiedzę, która umożliwi Ci dalsze pogłębianie tematyki związanej z komputerami. Na początku omówię fizyczne elementy, z których składa się komputer. W kolejnym kroku przyjrzysz się temu, w jaki sposób komputer prze- chowuje dane i uruchamia programy. Na koniec rozdziału przybliżę główne typy oprogramowania komputerowego. 1.2. Sprzęt 1.2 Sprzęt WYJAŚNIENIE: Sprzętem nazywamy wszystkie urządzenia fizyczne, z których zbudowany jest komputer. W zdecydowanej większości przypad- ków komputery składają się z bardzo podobnych urządzeń. Przez słowo sprzęt (ang. hardware) rozumiemy wszystkie urządzenia fizyczne (kompo- nenty), z których zbudowany jest komputer. Komputer nie jest więc pojedynczym urządzeniem, lecz systemem składającym się z wielu urządzeń, które ze sobą współ- pracują. Podobnie jak w przypadku poszczególnych instrumentów w orkiestrze, każde urządzenie odgrywa w komputerze określoną rolę. Jeśli kiedyś kupowałeś komputer, zauważyłeś zapewne, że jest on opisany za pomocą listy komponentów takich jak procesor, pamięć, napędy, monitor, karta graficzna itp. Jeżeli nie masz dostatecznej wiedzy na temat komputerów lub nie znasz kogoś, kto ją posiada, zrozumienie takiego opisu może okazać się kłopotliwe. Na rysunku 1.2 przedstawiłem główne elementy, z jakich składa się typowy komputer: Poleć książkęKup książkę 1.2. Sprzęt 25 Rysunek 1.2. Typowe elementy, z których składa się komputer (wszystkie zdjęcia © Shutterstock)  centralna jednostka obliczeniowa (CPU),  pamięć główna,  nośniki danych,  urządzenia wejściowe,  urządzenia wyjściowe. Przyjrzyjmy się teraz bliżej każdemu z wymienionych elementów. Centralna jednostka obliczeniowa (CPU) Kiedy komputer wykonuje wskazane przez program działania, mówimy, że uruchomił lub wykonuje dany program. To właśnie centralna jednostka obliczeniowa (ang. central processing unit — CPU) jest elementem komputera odpowiedzialnym za wyko- nywanie programu. Zamiast CPU przeważnie używa się nazwy procesor. Jest on najważniejszym elementem komputera, ponieważ bez niego komputer nie mógłby wykonać żadnego programu. Poleć książkęKup książkę 26 Rozdział 1. Wstępne informacje na temat komputerów i programowania Pierwsze komputery były wyposażone w ogromne procesory, zbudowane z elektrycz- nych i mechanicznych elementów, takich jak lampy elektronowe i przełączniki. Na rysunku 1.3 widoczny jest właśnie taki komputer — dwie kobiety przedstawione na zdjęciu obsługują historyczny komputer ENIAC. Zbudowany w 1945 roku i używany przez armię Stanów Zjednoczonych do wyliczania tablic balistycznych, ENIAC uwa- żany jest za pierwszy na świecie programowalny komputer elektroniczny. Maszyna ta (będąca tak naprawdę jednym wielkim procesorem) mierzyła 2,4 metra wysokości i 30 metrów długości, a ważyła 30 ton. Rysunek 1.3. Komputer ENIAC (zdjęcie dzięki uprzejmości US ARMY Center of Military History) Obecnie CPU to małe chipy zwane także mikroprocesorami. Na rysunku 1.4 widoczny jest inżynier trzymający współczesny mikroprocesor. Poza tym, że dzisiejsze mikro- procesory są znacznie mniejsze od swoich wczesnych elektromechanicznych odpo- wiedników, mają również znacznie większą moc obliczeniową. Pamięć główna (RAM) Wyobraź sobie, że pamięć główna (ang. main memory) to przestrzeń robocza kom- putera. Jest to miejsce, w którym komputer przechowuje uruchomiony program, jak również dane, na których ten program pracuje. Przykładowo załóżmy, że piszesz wypra- cowanie w edytorze tekstowym — w takim przypadku zarówno program w postaci edytora tekstowego, jak i samo wypracowanie zostaną umieszczone w pamięci głównej komputera. Pamięć główną nazywa się także pamięcią o dostępie swobodnym (ang. random- access memory — RAM). Nazwa ta wynika z tego, że procesor musi mieć szybki dostęp do każdej informacji zapisanej w dowolnym miejscu pamięci. RAM jest pamięcią Poleć książkęKup książkę 1.2. Sprzęt 27 Rysunek 1.4. Inżynier trzymający współczesny mikroprocesor (zdjęcie dzięki uprzejmości Chris Ryan/OJO Images/Getty Images) ulotną i wykorzystuje się ją jako tymczasowe miejsce zapisywania informacji — tylko na czas działania programu. Kiedy komputer się wyłączy, wszystkie dane zostaną wymazane z pamięci głównej. Pamięć RAM ma postać płytki z chipami — takiej, jaką widać na rysunku 1.5. Rysunek 1.5. Chipy pamięci (zdjęcie © Garsya/Shutterstock) UWAGA: Inny rodzaj pamięci, która jest zbudowana z chipów, to pamięć tylko do odczytu (ang. read-only memory — ROM). Komputer potrafi odczytać zawar- tość takiej pamięci, ale nie może jej w żaden sposób zmodyfikować lub zapisać w niej nowych danych. ROM jest więc pamięcią nieulotną, co oznacza, że zapisane na niej dane nie zostaną usunięte nawet po wyłączeniu komputera. W pamięci ROM umieszcza się zazwyczaj programy konieczne do pracy systemu. Przykła- dem niech będzie program startowy, który uruchamia się zaraz po włączeniu komputera. Poleć książkęKup książkę 28 Rozdział 1. Wstępne informacje na temat komputerów i programowania Nośniki danych Nośnik danych to taki rodzaj pamięci, w której można zapisać i przechowywać dane przez bardzo długi czas — nawet wtedy, gdy komputer jest wyłączony. Na takich urządzeniach zapisane są programy, które — kiedy zajdzie taka potrzeba — są łado- wane do pamięci głównej. Na nośnikach danych są także zapisywane ważne dane, takie jak dokumenty tekstowe, informacje dotyczące wynagrodzeń pracowników czy wykazy zapasów magazynowych. Najpowszechniejszym przykładem nośnika danych jest dysk twardy. Tradycyjny dysk twardy zapisuje dane na nośnikach magnetycznych w postaci talerzy. Natomiast zysku- jące obecnie coraz większą popularność dyski SSD (ang. solid state drive) zapisują dane w pamięciach będących układami scalonymi. W dysku SSD nie ma żadnych ruchomych elementów i działa on znacznie szybciej od tradycyjnego dysku twardego. Większość komputerów jest wyposażona w jakiś rodzaj nośnika danych — czy to tradycyjny dysk twardy, czy dysk SSD. Istnieją także zewnętrzne dyski, które można podłączyć do któregoś z portów komunikacyjnych komputera. Używa się ich najczę- ściej do przechowywania kopii zapasowych danych lub podczas przenoszenia danych do innego komputera. Poza dyskami zewnętrznymi istnieje również szereg urządzeń służących do kopiowania lub przenoszenia danych pomiędzy komputerami. Są to napędy USB (ang. universal serial bus drive), mające postać małego urządzenia podłączanego do portu USB. Po ich podłączeniu system wykrywa je jako kolejny dysk — jednak w ich wnętrzu tak naprawdę nie kryją się żadne dyski. Urządzenia te zapisują dane w specjalnej pamięci zwanej pamięcią flash. Napędy USB (określane często jako pendrive) są urządze- niami niedrogimi, niezawodnymi i na tyle małymi, że mieszczą się w kieszeni spodni. Do przechowywania danych wykorzystuje się także nośniki optyczne, takie jak dyski CD (ang. compact disc) czy DVD (ang. digital versatile disc). Dane na dyskach optycz- nych nie są zapisane w sposób magnetyczny, lecz zakodowane za pomocą szeregu rowków wytłoczonych na powierzchni płyty. Napędy CD i DVD odczytują zakodo- wane dane za pomocą lasera. Na dysku optycznym można zapisać ogromne ilości danych, a ponieważ nie ma obecnie problemu z dostępnością zapisywalnych płyt CD lub DVD, stanowią one idealny nośnik do przechowywania kopii zapasowych danych. UWAGA: Obecnie popularność zyskuje przechowywanie danych w chmurze. Zapisane w chmurze dane są przechowywane na zdalnych komputerach dostęp- nych przez internet lub w prywatnej sieci danej firmy. Po zapisaniu danych w chmurze możesz uzyskać do nich dostęp z wielu różnych urządzeń oraz z dowol- nego miejsca, pod warunkiem że masz dostęp do sieci. W chmurze można rów- nież zapisywać kopie zapasowe ważnych danych znajdujących się na komputerze. Poleć książkęKup książkę 1.2. Sprzęt 29 Urządzenia wejściowe Dane wejściowe (ang. input) to dane, które komputer pobiera od użytkownika lub z innego urządzenia. Urządzenie, które pobiera te dane i przesyła je do komputera, nazywamy urządzeniem wejściowym (ang. input device). Najpopularniejsze urządzenia wejściowe to myszka, klawiatura, ekran dotykowy, skaner, mikrofon i aparat cyfrowy. Dyski twarde i napędy optyczne także można traktować jako urządzenia wejściowe, ponieważ programy i dane są z nich ładowane do pamięci komputera. Urządzenia wyjściowe Dane wyjściowe (ang. output) to dane, które komputer prezentuje użytkownikowi lub przekazuje do innego urządzenia. Może to być raport sprzedaży, lista nazwisk lub plik graficzny. Dane przekazywane są do urządzenia wyjściowego (ang. output device), które z kolei je formatuje i prezentuje użytkownikowi. Popularnymi przykładami urządzeń wyjściowych są monitor lub drukarka. Dyski twarde i nagrywarki CD także można traktować jako urządzenia wyjściowe, ponieważ komputer wysyła do nich dane, które mają zostać zapisane. Punkt kontrolny 1.1. Co to jest program komputerowy? 1.2. Co to jest sprzęt? 1.3. Wymień pięć głównych elementów komputera. 1.4. Który z komponentów komputera służy do wykonywania programu? 1.5. Który element służy jako przestrzeń robocza komputera, w której na czas działania programu zapisywane są dane i sam program? 1.6. Który element komputera służy do przechowywania danych przez dłuższy okres czasu, nawet wtedy, gdy komputer jest wyłączony? 1.7. Który element komputera pobiera dane od użytkownika lub z innego urządzenia? 1.8. Który element komputera odpowiedzialny jest za formatowanie danych i prezentowanie ich użytkownikowi? Poleć książkęKup książkę 30 Rozdział 1. Wstępne informacje na temat komputerów i programowania 1.3. W jaki sposób komputer przechowuje dane 1.3 W jaki sposób komputer przechowuje dane WYJAŚNIENIE: Wszelkie dane, które mają zostać zapisane w komputerze, są konwertowane do postaci sekwencji złożonej z zer (0) i jedy- nek (1). Pamięć komputera jest podzielona na malutkie obszary zwane bajtami. Jeden bajt pozwala zapisać jedną literę lub niewielką liczbę. Aby komputer mógł zapisać jakąś bardziej znaczącą informację, musi on być wyposażony w bardzo dużą liczbę takich bajtów. Obecnie większość komputerów jest wyposażona w pamięci o rozmiarze wielu milionów, a nawet miliardów bajtów. Każdy bajt jest z kolei podzielony na osiem mniejszych części zwanych bitami. Słowo „bit” oznacza cyfrę binarną (ang. binary digit). Często stosuje się analogię, w której bit przedstawiony jest jako przełącznik — może on być włączony albo wyłączony. Jednak same bity nie są przełącznikami — przynajmniej nie w dosłownym tego słowa znaczeniu. W większości systemów komputerowych bit przyjmuje formę elementu elektronicznego, który charakteryzuje się dodatnim lub ujemnym ładunkiem elek- trycznym. Dodani ładunek można sobie wyobrazić jako przełącznik w pozycji włą- czonej, a ładunek ujemny jako przełącznik w pozycji wyłączonej. Na rysunku 1.6 przedstawiłem coś, co można sobie wyobrazić jako 1 bajt pamięci: szereg przełączników, z których każdy jest włączony albo wyłączony. Rysunek 1.6. Wyobraź sobie bajt jako zespół ośmiu przełączników Kiedy komputer zapisuje w danym bajcie jakąś informację, ustawia on w odpowiedni sposób każdy z tych ośmiu przełączników. Przykładowo na rysunku 1.7 z lewej strony przedstawiłem, jak zostanie zapisana w bajcie liczba 77, natomiast z prawej strony pokazałem, jak zapisana zostanie litera A. Za chwilę dowiesz się, jak można okre- ślić, jaką wartość reprezentuje dana kombinacja ustawień przełączników. Rysunek 1.7. Kombinacje przełączników przedstawiające liczbę 77 i literę A Poleć książkęKup książkę 1.3. W jaki sposób komputer przechowuje dane 31 Zapisywanie liczb Pojedynczy bit może reprezentować liczbę w bardzo ograniczony sposób. W zależno- ści od tego, czy bit jest ustawiony czy nie, reprezentuje on jedną z dwóch wartości. W przypadku systemów komputerowych bit, który nie jest ustawiony, reprezentuje liczbę 0, a bit ustawiony reprezentuje liczbę 1. Doskonale wpisuje się to w naturę binarnego systemu liczbowego. W systemie takim każdą liczbę przedstawia się za pomocą sekwencji zer i jedynek. Oto przykład liczby zapisanej w systemie binarnym: 10011101 Położenie każdej z cyfr wskazuje jednocześnie na wartość, jaką ona reprezentuje. Zaczynając od cyfry położonej najdalej z prawej strony i idąc w lewą stronę, są to kolejno wartości: 20, 21, 22, 23 itd. — przedstawiłem to na rysunku 1.8. Na rysunku 1.9 widoczna jest ta sama sekwencja, tylko z wyliczonymi już kolejnymi wartościami bitów. Zaczynając od cyfry położonej najdalej z prawej strony i idąc w lewą stronę, są to kolejno wartości: 1, 2, 4, 8 itd. Rysunek 1.8. Wartości bitów to kolejne potęgi liczby 2 Rysunek 1.9. Wartości bitów Aby określić, jaką wartość reprezentuje dana sekwencja bitów, należy dodać do sie- bie wartości wszystkich bitów ustawionych na 1. Przykładowo w przypadku liczby binarnej 10011101 jedynki znajdują się na pozycjach reprezentujących wartości 1, 4, 8, 16 i 128. Zilustrowałem to na rysunku 1.10. Suma poszczególnych wartości da nam liczbę 157. Tak więc wartość binarnej liczby 10011101 równa jest 157. Poleć książkęKup książkę 32 Rozdział 1. Wstępne informacje na temat komputerów i programowania Rysunek 1.10. Określanie wartości liczby binarnej 10011101 Na rysunku 1.11 pokazałem, w jaki sposób możesz sobie wyobrazić liczbę 157 zapi- saną w 1 bajcie pamięci. Każdą jedynkę reprezentuje bit w pozycji włączonej, a każe zero — bit w pozycji wyłączonej. Rysunek 1.11. Kombinacja bitów reprezentująca liczbę 157 Kiedy wszystkie bity ustawione są na 0 (wyłączone), wartość bajta jest równa 0. Kiedy wszystkie bity ustawione są na 1 (włączone), wartość bajta jest równa największej wartości, jaką można w nim zapisać. Największa wartość, jaką można zapisać w 1 bajcie to 1 + 2 + 4 + 8 + 16 + 32 + 64 + 128 = 255. Ograniczenie to wynika z faktu, że bajt składa się tylko z 8 bitów. A co w sytuacji, gdy chcesz zapisać liczbę większą niż 255? Odpowiedź na to pytanie jest prosta: wykorzystaj więcej niż 1 bajt. Przykładowo wykorzystajmy 2 bajty — da nam to w sumie 16 bitów. W tym przypadku wartości kolejnych bitów będą równe: 20, 21, 22, 23 itd. — aż do 215. Na rysunku 1.12 pokazałem, że największa wartość, jaką można zapisać za pomocą 2 bajtów, wynosi 65535. Jeżeli będziemy chcieli zapisać jeszcze większą wartość, będziemy musieli użyć jeszcze większej liczby bajtów. WSKAZÓWKA: Jeśli przytłaczają Cię te wszystkie informacje, nie przejmuj się! Pisząc programy, nie musimy zamieniać liczb na wartości w systemie binarnym. Jednak wiedza dotycząca tego, w jaki sposób komputer zapisuje informacje, ułatwi Ci naukę i sprawi, że będziesz lepszym programistą. Poleć książkęKup książkę 1.3. W jaki sposób komputer przechowuje dane 33 Rysunek 1.12. Większą liczbę można zapisać za pomocą 2 bajtów Zapisywanie znaków Każda informacja w pamięci komputera musi zostać zapisana za pomocą liczby binar- nej. Dotyczy to także znaków — takich jak litery czy znaki przestankowe. Kiedy kom- puter zapisuje w pamięci znak, zamienia go najpierw do postaci kodu numerycznego. Następnie taki kod numeryczny zapisywany jest w pamięci komputera za pomocą liczby binarnej. Na przestrzeni lat rozwinęło się wiele różnych sposobów kodowania znaków. Z historycznego punktu widzenia najważniejszym z nich jest system ASCII, który jest akronimem nazwy American Standard Code for Information Interchange. Kodowanie ASCII to zestaw 128 kodów, które reprezentują litery w języku angiel- skim, znaki przestankowe oraz kilka innych znaków. Przykładowo dużą literę A repre- zentuje kod o numerze 65. Jeżeli więc wpiszesz na klawiaturze literę A, w pamięci komputera zostanie zapisana liczba 65 (oczywiście za pomocą systemu binarnego). Przedstawiłem to na rysunku 1.13. Rysunek 1.13. Litera A jest zapisana w pamięci jako liczba 65 WSKAZÓWKA: Skrót ASCII wymawia się „aski”. Jeśli Cię to interesuje, to literę B reprezentuje liczba 66, literę C — liczba 67 itd. W dodatku A znajduje się tabela kodów ASCII oraz wartości, jakim one odpowiadają. Zestaw znaków ASCII został stworzony na początku lat sześćdziesiątych XX wieku i ostatecznie zyskał aprobatę większości producentów sprzętu komputerowego. Jest to jednak zestaw bardzo ograniczony — można za jego pomocą zakodować tylko 128 znaków. Aby temu zaradzić, na początku lat dziewięćdziesiątych XX wieku stwo- rzono nowy zestaw znaków, o nazwie Unicode. Jest to bardzo obszerny zestaw, który jednocześnie jest kompatybilny z systemem ASCII, ale można za jego pomocą kodo- wać znaki z bardzo wielu języków. Obecnie Unicode jest standardowym system kodo- wania znaków w przemyśle komputerowym. Poleć książkęKup książkę 34 Rozdział 1. Wstępne informacje na temat komputerów i programowania Zapisywanie bardziej skomplikowanych liczb Przed chwilą wyjaśniłem Ci, jak w pamięci przechowywane są wartości liczbowe. Być może zwróciłeś wtedy uwagę, że za pomocą systemu binarnego można wyrażać tylko liczby całkowite — począwszy od 0. Za pomocą opisanej przeze mnie prostej tech- niki nie da się przedstawić liczb ujemnych i zmiennoprzecinkowych (np. 3,14159). Komputery jednak potrafią zapisywać w pamięci zarówno liczby ujemne, jak i zmien- noprzecinkowe, ale aby to było możliwe, poza system binarnym korzysta się także z róż- nych metod kodowania. Na przykład liczby ujemne koduje się za pomocą techniki zwanej uzupełnieniem do 2, a ułamki — za pomocą zapisu zmiennoprzecinkowego (ang. floating-point notation). Nie musisz wiedzieć, jak działają te kodowania — wystar- czy Ci wiedza, że służą one do zapisywania w systemie binarnym liczb ujemnych i ułamkowych. Inne typy danych Komputery są często określane mianem urządzeń cyfrowych. Przymiotnika „cyfrowy” używamy w przypadku rzeczy, które w jakikolwiek sposób korzystają z liczb binarnych. Cyfrowe dane (ang. digital data) to dane zapisane w systemie binarnym, a urządze- nie cyfrowe to urządzenie, które wykorzystuje podczas działania dane binarne. W tym podrozdziale omówiłem, w jaki sposób w systemie binarnym zapisywane są liczby i znaki, jednak komputery operują także na wielu innych typach danych cyfrowych. Wyobraź sobie zdjęcia, jakie wykonujesz swoim aparatem cyfrowym. Obrazy te składają się z malutkich kolorowych kropek zwanych pikselami (słowo to pochodzi od angielskiego wyrażenia picture element). Na rysunku 1.14 pokazałem, że każdy piksel obrazu zamieniany jest na liczbę, która odpowiada jego kolorowi. Liczba ta jest zapisywana w pamięci za pomocą systemu binarnego. Rysunek 1.14. Obraz cyfrowy jest zapisywany w systemie binarnym (zdjęcie dzięki uprzejmości Gaddis, Tony) Muzyka, którą odtwarzasz z płyt CD, iPoda czy odtwarzacza MP3, też ma postać cyfrową. Utwór zapisany cyfrowo jest podzielony na malutkie kawałki zwane prób- kami. Każda próbka jest zamieniana na wartość binarną, która z kolei może zostać zapisana w pamięci. Z im większej liczby próbek składa się dany utwór muzyczny, tym dokładniej odzwierciedla on oryginalne nagranie. Jedna sekunda utworu o jako- ści CD składa się z ponad 44000 próbek! Poleć książkęKup książkę 1.4. W jaki sposób działa program 35 Punkt kontrolny 1.9. 1.10. Ile pamięci będziesz potrzebować, aby zapisać niewielką liczbę lub jedną literę alfabetu? Jak inaczej określamy mały „przełącznik”, który można ustawić w pozycji włączonej bądź wyłączonej? Jak nazywa się system liczbowy, w którym wartości zapisujemy za pomocą szeregu zer i jedynek? 1.12. Do czego służy ASCII? 1.13. Za pomocą którego systemu kodowania można przedstawić wszystkie znaki 1.11. wszystkich języków świata? 1.14. Co oznaczają wyrażenia „dane cyfrowe” i „urządzenie cyfrowe”? 1.4. W jaki sposób działa program 1.4 W jaki sposób działa program WYJAŚNIENIE: Procesor komputera potrafi zrozumieć jedynie instrukcje zapisane w języku maszynowym. Ponieważ język ten jest na tyle trudny, że człowiekowi bardzo ciężko byłoby napisać za jego pomocą cały program, stworzono inne języki programowania komputerów. Wcześniej wspomniałem, że procesor jest najważniejszym elementem komputera, ponieważ to on odpowiada za wykonanie programu. Czasami mówi się, że procesor to „mózg komputera”, jednak jest to tylko popularna metafora, a sam procesor jest po prostu urządzeniem elektronicznym, którego zadaniem jest wykonywanie okre- ślonych operacji — w szczególności takich jak:  odczytywanie danych z pamięci głównej;  dodawanie do siebie dwóch liczb;  odejmowanie jednej liczby od drugiej;  mnożenie dwóch liczb;  dzielenie jednej liczby przez drugą;  przenoszenie danych z jednego obszaru pamięci do innego;  sprawdzanie, czy dana wartość jest równa innej wartości;  itp. Zapewne wywnioskowałeś z tej listy, że procesor zajmuje się głównie wykonywaniem na danych prostych operacji. Jednak sam z siebie nie jest on w stanie wykonać żad- nej operacji — trzeba mu powiedzieć, co ma rozbić, i właśnie to jest zadaniem pro- gramu. Program jest niczym innym jak zbiorem instrukcji, które ma wykonać procesor. Każda instrukcja w programie to polecenie wykonania określonej operacji wydane procesorowi. Oto przykład instrukcji, jaka może wystąpić w programie: 10110000 Poleć książkęKup książkę 36 Rozdział 1. Wstępne informacje na temat komputerów i programowania Zarówno dla mnie, jak i dla Ciebie jest to szereg zer i jedynek. Jednak dla procesora jest to polecenie wykonania określonej operacji1. Ponieważ procesor rozumie jedynie instrukcje zapisane w języku maszynowym, jest ona zapisana za pomocą zer i jedy- nek — polecenia w języku maszynowym (ang. machine language) są zawsze zapisane w systemie binarnym. Dla każdej operacji, którą potrafi wykonać dany procesor, istnieje osobna instrukcja w języku maszynowym. Przykładowo istnieje osobna instrukcja dla dodawania liczb, osobna dla odejmowania liczb itd. Kompletny zestaw instrukcji, które potrafi wyko- nać dany procesor, nazywa się listą rozkazów procesora (ang. instruction set). UWAGA: Obecnie istnieje wielu producentów procesorów komputerowych — najbardziej znanymi są firmy Intel, AMD i Motorola. Jeżeli spojrzysz na swój komputer, być może znajdziesz na nim naklejkę z logo danego producenta. Każda rodzina procesorów charakteryzuje się inną listą rozkazów procesora, którą potrafią zrozumieć jedynie procesory tej rodziny. Przykładowo procesory Intel rozumieją instrukcje pochodzące z ich listy rozkazów, ale nie będą w stanie zrozu- mieć instrukcji przeznaczonych dla procesorów Motorola. Instrukcja w języku maszynowym, którą przedstawiłem wcześniej, to tylko jeden z przykładów. Aby komputer mógł wykonać jakąś sensowną czynność, potrzebnych będzie znacznie więcej instrukcji. Ponieważ sam procesor rozumie jedynie bardzo elementarne rozkazy, będzie on musiał wykonać ich bardzo wiele, aby wykonać jakieś znaczące działanie. Przykładowo, jeśli chcemy, aby komputer obliczył wartość odse- tek, jakie zostaną naliczone w ciągu roku na rachunku oszczędnościowym, procesor będzie musiał wykonać bardzo dużą liczbę instrukcji — ponadto instrukcje te będą musiały być uruchomione w odpowiedniej kolejności. Nie jest niczym niezwykłym program składający się z tysięcy, a nawet wielu milionów instrukcji w języku maszy- nowym. Programy są zazwyczaj zapisane na nośnikach danych — na przykład na dysku twardym. Kiedy instalujesz na komputerze program, jest on kopiowany z płyty CD lub z pliku pobranego z sieci na dysk twardy komputera. Pomimo faktu, że dany program jest już zapisany na dysku twardym, za każdym razem, gdy procesor ma go wykonać, program ten musi najpierw zostać skopiowany do pamięci głównej komputera. Powiedzmy, że na dysku twardym znajduje się edytor tekstowy. Aby go uruchomić, musisz kliknąć myszką odpowiednią ikonkę. Spowo- duje to skopiowanie programu z dysku twardego do pamięci głównej. Następnie procesor przystąpi do wykonywania kopii programu zapisanej już w pamięci głównej komputera. Proces ten przedstawiłem na rysunku 1.15. 1 Przedstawiony przykład to prawdziwa instrukcja dla procesora Intel. Nakazuje ona przenie- sienie wartości do procesora. Poleć książkęKup książkę 1.4. W jaki sposób działa program 37 Rysunek 1.15. Program najpierw jest kopiowany do pamięci głównej, a następnie uruchamiany (dzięki uprzejmości Lefteris Papaulakis/Shutterstock, Garsya/Shutterstock oraz marpan/Shutterstock) Kiedy procesor przechodzi do wykonywania kolejnych instrukcji zapisanych w pro- gramie, dochodzi do tak zwanego cyklu rozkazowego. Cykl ten składa się z trzech faz i jest powtarzany dla każdej instrukcji w programie. Fazy te są następujące: 1. Pobranie. Program składa się z długiej sekwencji instrukcji w języku maszynowym. Pierwsza faza cyklu rozkazowego ma za zadanie pobrać (odczytać) kolejną instrukcję z pamięci głównej i przekazać ją do procesora. 2. Tłumaczenie. Instrukcja zapisana w języku maszynowym to liczba w systemie binarnym reprezentująca określony rozkaz, który ma wykonać procesor. W tej fazie procesor tłumaczy instrukcję pobraną z pamięci i sprawdza, który rozkaz powinien wykonać. 3. Wykonanie. W ostatniej fazie cyklu procesor wykonuje dany rozkaz. Rysunek 1.16 ilustruje te trzy fazy. Rysunek 1.16. Cykl rozkazowy (dzięki uprzejmości Garsya/Shutterstock i marpan/Shutterstock) Poleć książkęKup książkę 38 Rozdział 1. Wstępne informacje na temat komputerów i programowania Z języka maszynowego na język asemblera Komputer potrafi wykonywać tylko programy zapisane w języku maszynowym. Jak wspomniałem wcześniej, taki program może składać się z tysięcy, a nawet milionów instrukcji zapisanych w systemie binarnym i jego pisanie byłoby zajęciem bardzo nudnym i czasochłonnym. Byłoby to także bardzo trudne, gdyż postawienie zera lub jedynki w nieodpowiednim miejscu spowodowałoby błąd programu. Procesor komputera rozumie jedynie instrukcje zapisane w języku maszynowym, jed- nak dla człowieka pisanie programu w tym języku jest niepraktyczne. Z tego powodu u zarania dziejów komputerów2 wymyślono język zwany językiem asemblera. Zamiast z liczb w systemie binarnym korzysta się w nim z kilkuliterowych skrótów zwanych mnemonikami. Przykładowo w języku asemblera mnemonika add oznacza operację dodawania, mnemonika mul oznacza mnożenie, a mnemonika mov oznacza operację przeniesienia wartości do określonego miejsca w pamięci. Kiedy programista pisał pro- gram w języku asemblera, posługiwał się takimi skrótowymi mnemonikami zamiast liczbami w systemie binarnym. UWAGA: Istnieje wiele różnych odmian języka asemblera. Wspomniałem wcze- śniej, że każda rodzina procesorów charakteryzuje się swoją własną listą rozka- zów. Analogicznie zazwyczaj każda rodzina procesorów ma swój własny język asemblera. Procesor komputerowy nie jest jednak w stanie wykonać programu zapisanego w języku asemblera — rozumie on jedynie język maszynowy. Z tego powodu stworzono spe- cjalne programy zwane asemblerami, których zadaniem jest przetłumaczenie pro- gramu napisanego w języku asemblera na program w języku maszynowym. Proces ten przedstawiłem na rysunku 1.17. Program w języku maszynowym wygenerowany przez asembler może już zostać wykonany przez procesor. Rysunek 1.17. Asembler tłumaczy program zapisany w języku asemblera na program w języku maszynowym 2 Pierwszy język asemblera został stworzony najprawdopodobniej w latach czterdziestych XX wieku na Uniwersytecie Cambridge i korzystano z niego podczas pracy z komputerem EDSAC. Poleć książkęKup książkę 1.4. W jaki sposób działa program 39 Języki wysokiego poziomu Pomimo faktu, że dzięki językowi asemblera nie ma już konieczności pisania pro- gramu w języku maszynowym, nie jest on pozbawiony pewnych wad. Język asemblera pełni głównie rolę zastępczą dla języka maszynowego i podobnie jak w jego przypadku wymaga od programisty dobrej znajomości danego procesora. Ponadto, aby napisać nawet najprostszy program w języku asemblera, trzeba użyć bardzo wielu instrukcji. Ponieważ z natury język asemblera jest bardzo bliski językowi maszynowemu, nazywa się go językiem niskiego poziomu (ang. low-level language). W latach pięćdziesiątych XX wieku pojawiła się nowa generacja języków programo- wania zwanych językami wysokiego poziomu (ang. high-level language). To właśnie dzięki nim możemy tworzyć potężne i złożone programy, bez konieczności posiada- nia wiedzy na temat samego procesora, a jednocześnie nie potrzebujemy do tego ogromnej liczby niskopoziomowych instrukcji. Ponadto większość języków wysokiego poziomu zawiera łatwe do zrozumienia słowa. Przykładowo, kiedy programista piszący program w języku COBOL (jeden z pierwszych języków wysokiego poziomu, stwo- rzony w latach pięćdziesiątych XX wieku) chciał wyświetlić na ekranie komputera komunikat „Hello world”, wystarczyło, że użył takiej oto instrukcji: Display Hello world Ta sama operacja w języku asemblera wymagałaby użycia wielu instrukcji i wiedzy na temat sposobu komunikowania się procesora z monitorem. Ten przykład pokazuje, że dzięki językom wysokiego poziomu programista może się skoncentrować na tym, jakie zadania powinien wykonać program, a nie na tym, jak procesor będzie wyko- nywał dany program. Od tamtego czasu powstały tysiące języków wysokiego poziomu. W tabeli 1.1 zamie- ściłem listę kilku najbardziej popularnych. Jeśli uczysz się na kierunku związanym z branżą informatyczną, najprawdopodobniej poznasz jeden lub kilka spośród tych języków. Każdy język wysokiego poziomu charakteryzuje się zestawem słów, które programista musi poznać, aby mógł z niego korzystać. Słowa występujące w danym języku wyso- kiego poziomu nazywa się słowami kluczowymi (ang. key words) lub słowami zare- zerwowanymi (ang. reserved words). Każde słowo kluczowe ma określone znaczenie i nie może zostać wykorzystane do żadnego innego celu. Wcześniej pokazałem przy- kład instrukcji w języku COBOL, w której występuje słowo kluczowe Display, słu- żące do wyświetlania komunikatu na ekranie komputera. W języku Python do tego samego celu służy słowo kluczowe print. Poza słowami kluczowymi w językach programowania występują także operatory, które wykonują na danych określone działania. Przykładowo w każdym języku wystę- pują operatory matematyczne, które służą do wykonywania działań arytmetycznych. W Javie i w wielu innych językach znak + jest operatorem służącym do dodawania do siebie dwóch liczb. Następujące wyrażenie dodaje do siebie liczby 12 i 75: 12 + 75 Poleć książkęKup książkę 40 Rozdział 1. Wstępne informacje na temat komputerów i programowania Tabela 1.1. Języki programowania Język Ada BASIC Opis Język Ada został stworzony w latach 70. XX w. i używany był głównie przez departament obrony Stanów Zjednoczonych. Język nazwano na cześć hrabiny Ady Lovelace, uważanej za osobę mającą ogromny wpływ na dziedzinę programowania. BASIC jest językiem ogólnego zastosowania, a jego nazwa to akronim od Beginners All-purpose Symbolic Instruction Code. Powstał w latach 60. XX w. jako prosty język do nauki programowania. Obecnie można znaleźć wiele odmian języka BASIC. FORTRAN Język FORmula TRANslator był pierwszym językiem programowania wysokiego COBOL Pascal C# Java C i C++ poziomu. Powstał w latach 50. XX w. i służył do przeprowadzania skomplikowanych obliczeń matematycznych. Język COBOL został stworzony w latach 50. XX w., a jego nazwa jest akronimem od Common Business-Oriented Language. Służył głównie do tworzenia aplikacji biznesowych. Pascal powstał w 1970 r. i pierwotnie służył jako język dydaktyczny do nauki programowania. Język nazwano na cześć słynnego matematyka, fizyka i filozofa, Blaise a Pascala. C i C++ (ta druga nazwa wymawiana jako „c plus plus”) to języki ogólnego zastosowania o ogromnych możliwościach stworzone przez firmę Bell Labolatories. Język C powstał w 1972 r., a język C++ w 1983 r. Nazwę C# wymawia się jako „c szarp”. Język ten służy do tworzenia aplikacji dla platformy .NET i powstał około 2000 r. z inicjatywy firmy Microsoft. Język Java został stworzony we wczesnych latach 90. XX w. przez firmę Sun Microsystems (której właścicielem jest obecnie Oracle). Można dzięki niemu tworzyć zarówno aplikacje działające na komputerze, jak i aplikacje internetowe działające na serwerach WWW. Język JavaScript powstał w latach 90. XX w. i wykorzystywany jest do przetwarzania stron WWW. Mimo częściowego pokrewieństwa nazwy ma on niewiele wspólnego z językiem Java. Python to język ogólnego zastosowania stworzony w latach 90. XX w. Stał się popularnym narzędziem do tworzenia aplikacji biznesowych i naukowych. Ruby to język ogólnego zastosowania stworzony w latach 90. XX w. Zyskuje popularność jako język do tworzenia aplikacji działających na serwerach WWW. Visual Basic Visual Basic (często nazywany także VB) to język i środowisko programistyczne stworzone przez firmę Microsoft. Dzięki niemu można bardzo szybko tworzyć aplikacje dla systemu Windows. Język VB powstał w latach 90. XX w. JavaScript Python Ruby Poza słowami kluczowymi i operatorami każdy język charakteryzuje się także okre- śloną składnią (ang. syntax), czyli zestawem zasad, których należy bezwzględnie przestrzegać, pisząc program w danym języku. Składnia wskazuje, w jaki sposób należy Poleć książkęKup książkę 1.4. W jaki sposób działa program 41 używać w programie słów kluczowych, operatorów i znaków przestankowych. Pod- czas nauki danego języka programowania musisz poznać dokładnie jego składnię. Poszczególne instrukcje, których będziesz używać w programie pisanym w języku wysokiego poziomu, nazywamy poleceniami (ang. statements). Polecenie może się składać ze słów kluczowych, operatorów, znaków przestankowych oraz innych dopusz- czalnych elementów, ułożonych w odpowiedniej kolejności tak, aby wykonać okre- śloną operację. UWAGA: Języki ludzkie także charakteryzują się składnią. Pamiętasz, jak podczas nauki języka polskiego poznawałeś zasady związane z podmiotami i orzeczeniami oraz innymi częściami zdania? Uczyłeś się wtedy właśnie składni języka polskiego. Pomimo że ludzie podczas mówienia i pisania bardzo często łamią zasady składni, ich rozmówcy nie mają raczej problemu ze zrozumieniem. Niestety komputery są pozbawione tej cechy. Jeżeli pisząc program złamiesz chociaż jedną zasadę składni, program się nie uruchomi. Kompilatory i interpretery Ponieważ procesor komputera rozumie jedynie rozkazy w języku maszynowym, pro- gramy napisane w językach wysokiego poziomu muszą zostać najpierw przetłumaczone na język maszynowy. Po napisaniu programu w języku wysokiego poziomu progra- mista musi skorzystać z kompilatora lub interpretera, aby przetłumaczyć program na język maszynowy. Kompilator to program, którego zadaniem jest przetłumaczenie programu napisanego w języku wysokiego poziomu na program w języku maszynowym. Taki program w języku maszynowym może być następnie uruchomiony w dowolnej chwili. Przedstawiłem to na rysunku 1.18. Na rysunku widać, że kompilacja i uruchomienie programu to dwa odrębne procesy. Interpreter to program, który jednocześnie tłumaczy i wykonuje instrukcje w języku wysokiego poziomu. Interpreter odczytuje pojedyncze polecenie w programie, następ- nie tłumaczy je na język maszynowy i natychmiast wykonuje wynikowy kod maszy- nowy. Działanie to odbywa się dla każdego polecenia w programie. Proces ten poka- załem na rysunku 1.19. Ponieważ interpretery łączą tłumaczenie kodu i jego wykonanie, nie tworzą zazwyczaj osobnego programu w języku maszynowym. UWAGA: Ponieważ skompilowany program w momencie uruchomienia jest już w całości przetłumaczony na język maszynowy, działa on szybciej od programu uruchomionego za pomocą interpretera. Polecenia w języku wysokiego poziomu, które tworzy programista, nazywamy kodem źródłowym lub po prostu kodem. Zazwyczaj programista pisze program w pliku teksto- wym, po czym zapisuje go na dysku twardym. Następnie musi za pomocą kompilatora Poleć książkęKup książkę 42 Rozdział 1. Wstępne informacje na temat komputerów i programowania Rysunek 1.18. Kompilowanie programu zapisanego w języku wysokiego poziomu i jego uruchomienie (dzięki uprzejmości marpan/Shutterstock) Rysunek 1.19. Wykonywanie programu w języku wysokiego poziomu za pomocą interpretera (dzięki uprzejmości marpan/Shutterstock) przetłumaczyć kod na program w języku maszynowym lub skorzystać z interpretera, aby przetłumaczyć i wykonać kod programu. Jeśli jednak w programie znajdą się jakieś błędy składniowe, nie będzie on mógł zostać przetłumaczony. Błąd składniowy (ang. syntax error) to błąd wynikający najczęściej z literówki, brakującego znaku przestankowego lub nieprawidłowego zastosowania operatora. W momencie wystą- pienia takiego błędu kompilator lub interpreter wyświetli komunikat informujący o błędzie składniowym w kodzie programu. Programista musi wtedy poprawić błąd i ponownie przystąpić to tłumaczenia programu na język maszynowy. Poleć książkęKup książkę 1.4. W jaki sposób działa program 43 Zintegrowane środowisko programistyczne (IDE) Chociaż do tworzenia programu można wykorzystać edytor tekstowy taki jak Notat- nik (będący częścią systemu operacyjnego Windows), większość programistów korzy- sta ze specjalnego oprogramowania, zwanego zintegrowanym środowiskiem pro- gramistycznym (ang. integrated development environment — IDE). Większość takich środowisk składa się z następujących elementów:  edytor tekstowy wyposażony w specjalne narzędzia ułatwiające pisanie poleceń w danym języku wysokiego poziomu;  kompilator lub interpreter;  narzędzia do testowania programów i wychwytywania błędów. Na rysunku 1.20 przestawiłem ekran programu Microsoft Visual Studio — popu- larnego środowiska służącego do tworzenia programów w językach C++, Visual Basic i C#. Innymi przykładami zintegrowanych środowisk programistycznych są pakiety Eclipse, NetBeans, Dev-C++ i jGRASP. Rysunek 1.20. Zintegrowane środowisko programistyczne (dzięki uprzejmości Microsoft Corporation) Punkt kontrolny 1.15. W którym języku muszą być zapisane instrukcje, aby zrozumiał je procesor? 1.16. Do której pamięci kopiowany jest program, zanim procesor zacznie 1.17. go wykonywać? Jaki proces następuje, kiedy procesor przechodzi do wykonywania kolejnych instrukcji zapisanych w programie? Poleć książkęKup książkę 44 Rozdział 1. Wstępne informacje na temat komputerów i programowania 1.18. Co to jest język asemblera? 1.19. Który rodzaj języków programowania umożliwia tworzenie potężnych i złożonych programów, bez konieczności posiadania wiedzy na temat procesora? 1.21. 1.20. Każdy język programowania charakteryzuje się zestawem zasad, których należy przestrzegać, pisząc program w danym języku. Jak nazywa się ten zestaw zasad? Jak nazywa się program, którego zadaniem jest przetłumaczenie programu zapisanego w języku wysokiego poziomu na program w języku maszynowym? Jak nazywa się program, który jednocześnie tłumaczy i wykonuje kolejne instrukcje programu zapisanego w języku wysokiego poziomu? Jak nazywa się błąd wynikający z literówki w słowie kluczowym, brakującego znaku przestankowego czy niewłaściwego użycia operatora? 1.22. 1.23. 1.5. Rodzaje oprogramowania 1.5 Rodzaje oprogramowania WYJAŚNIENIE: Programy zazwyczaj zaliczają się do jednej z dwóch kategorii: oprogramowania systemowego lub oprogramowania użytko- wego. Oprogramowanie systemowe składa się z szeregu progra- mów, które odpowiadają za pracę komputera i powiększają jego możliwości. Oprogramowanie użytkowe sprawia, że komputer staje się przydatnym narzędziem w codziennej pracy. Aby działać, komputer potrzebuje oprogramowania. Wszystko, co robi komputer — od momentu, gdy go włączysz, aż do chwili jego wyłączenia — odbywa się dzięki oprogramowaniu. Istnieją dwie kategorie oprogramowania: oprogramowanie syste- mowe i oprogramowanie użytkowe. Większość programów komputerowych można z łatwością zaklasyfikować do jednej z tych kategorii. Przyjrzyjmy się więc im bliżej. Oprogramowanie systemowe Programy, które odpowiadają za podstawowe operacje komputera, nazywa się opro- gramowaniem systemowym. Składają się na nie następujące programy:  System operacyjny. System operacyjny to zestaw najważniejszych programów zapewniających pracę komputera. Zadaniem systemu operacyjnego jest sterowanie sprzętem, z jakiego składa się dany komputer, zarządzanie wszystkimi urządzeniami podłączonymi do komputera, umożliwienie odczytu i zapisu danych na nośnikach danych, umożliwienie uruchomienia na komputerze innych programów. Dzisiaj najczęściej używanymi systemami operacyjnymi są Windows, Mac OS, iOS, Android i Linux. Poleć książkęKup książkę 1.5. Rodzaje oprogramowania 45 Pytania kontrolne  Programy narzędziowe. Programy narzędziowe wykonują specjalistyczne zadania zape
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:

Projektowanie oprogramowania dla zupełnie początkujących. Owoce programowania. Wydanie V
Autor:

Opinie na temat publikacji:


Inne popularne pozycje z tej kategorii:


Czytaj również:


Prowadzisz stronę lub blog? Wstaw link do fragmentu tej książki i współpracuj z Cyfroteką: