rsob@mif.pg.gda.pl www.mif.pg.gda.pl/homepages/rsob p.518 gmach B czwartek: 12.00-13.00 www.moodle.pg.gda.pl klucz dostępu:odra1304



Podobne dokumenty
Algorytm. a programowanie -

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Technologie informacyjne - wykład 12 -

Programowanie komputerów

I. KARTA PRZEDMIOTU CEL PRZEDMIOTU

Programowanie w języku C++ Grażyna Koba

Spis treści. Podstawy posługiwania się komputerem

Programowanie w języku Python. Grażyna Koba

Algorytm. Krótka historia algorytmów

I. KARTA PRZEDMIOTU CEL PRZEDMIOTU

INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE

O higienie pracy, komputerze, sieciach komputerowych i Internecie

Systemy operacyjne. Instrukcja laboratoryjna. Ćwiczenie 1: Polecenia systemu UNIX/LINUX. Opracował: dr inż. Piotr Szpryngier

1. Zaczynamy! (9) 2. Edycja dokumentów (33)

Sieci i systemy operacyjne I Ćwiczenie 1. Podstawowe polecenia systemu Unix

Technologie Informacyjne

Rok akademicki: 2014/2015 Kod: CCB s Punkty ECTS: 3. Poziom studiów: Studia I stopnia Forma i tryb studiów: -

3.1. Na dobry początek

WYMAGANIA EDUKACYJNE Z ZAJĘĆ KOMPUTEROWYCH DLA KLASY SZÓSTEJ W ZAKRESIE WIADOMOŚCI I UMIEJĘTNOŚCI UCZNIÓW

biegle i poprawnie posługuje się terminologią informatyczną,

Wiadomości i umiejętności

Spis treści 3. Spis treści

Plan nauczania informatyki Opracował: mgr Daniel Starego

ZAJĘCIA KOMPUTEROWE KLASA IV. Opis wymagań, które uczeń powinien spełnić, aby uzyskać ocenę:

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Przedmiotowy system oceniania z informatyki

System komputerowy. Sprzęt. System komputerowy. Oprogramowanie

Wymagania - informatyka

Informatyka Arkusz kalkulacyjny Excel 2010 dla WINDOWS cz. 1

Zapisywanie algorytmów w języku programowania

Wymagania edukacyjne z informatyki dla klasy szóstej szkoły podstawowej.

Wstęp do Informatyki i Programowania Laboratorium: Lista 0 Środowisko programowania

Informatyka. Michał Rad

Podstawy Informatyki. Wykład 4 Komendy UNIXa, cd

14. Przedmiot: N/PM2012/11/14/I1 INFORMATYKA moduł 1 Semestr. Liczba tygodni Liczba godzin w tygodniu Liczba godzin w semestrze ECTS

Kryteria oceniania z Technologii Informacyjnej

Spis treści. Rozdział 3. Podstawowe operacje na plikach...49 System plików Konsola Zapisanie rezultatu do pliku... 50

Wstęp 7 Rozdział 1. OpenOffice.ux.pl Writer środowisko pracy 9

System operacyjny UNIX Ćwiczenie 1. Podstawowe polecenia systemu Unix

Język programowania PASCAL

Programowanie i techniki algorytmiczne

OLIMPIADA INFORMATYCZNA 2010 ROK ETAP SZKOLNY

Skorzystaj z Worda i stwórz profesjonalnie wyglądające dokumenty.

dr inż. Jarosław Forenc

Wstęp do poradnika metodycznego Przykładowy rozkład materiału 13 I rok nauczania...13 II rok nauczania...13 Rozkład materiału:...

1. Narzędzia główne: WORD 2010 INTERFEJS UŻYTKOWNIKA. wycinamy tekst, grafikę

Wstęp do Informatyki dla bioinformatyków

Praktyka Programowania

Algorytmy, reprezentacja algorytmów.

ROZKŁAD MATERIAŁU ZAJĘCIA KOMPUTEROWE KL.V

CZĘŚĆ A PIERWSZE KROKI Z KOMPUTEREM

I. KARTA PRZEDMIOTU CEL PRZEDMIOTU

METODY KOMPUTEROWE W OBLICZENIACH INŻYNIERSKICH

d) program działający w środowisku Windows 10. Edytorem tekstu jest: a) Paint b) WordPad c) PowerPoint d) Excel

METODY KOMPUTEROWE W OBLICZENIACH INŻYNIERSKICH

Technologie informacyjne

Nazwa wariantu modułu (opcjonalnie): Laboratorium programowania w języku C++

Programowanie dla początkujących w 24 godziny / Greg Perry, Dean Miller. Gliwice, cop Spis treści

SZCZEGÓŁOWY HARMONOGRAM SZKOLENIA

PLAN WYNIKOWY Z INFORMATYKI DLA KLASY VI

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

5. Arkusz kalkulacyjny Excel 205

Telnet. Telnet jest najstarszą i najbardziej elementarną usługą internetową.

Podstawy Programowania

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++

Moduł 2 Użytkowanie komputerów i zarządzanie plikami wymaga od kandydata znajomości obsługi komputera osobistego.

I. KARTA PRZEDMIOTU CEL PRZEDMIOTU WYMAGANIA WSTĘPNE W ZAKRESIE WIEDZY, UMIEJĘTNOŚCI I INNYCH KOMPETENCJI EFEKTY KSZTAŁCENIA

Rozkład materiału realizacji informatyki w szkole podstawowej w wymiarze 2 godzin w cyklu trzyletnim

Instrukcja konfiguracji funkcji skanowania

SERWER AKTUALIZACJI UpServ

Tematy lekcji informatyki klasa 4a luty/marzec 2013

Podstawy programowania wykład

1 Podstawy c++ w pigułce.

PRZEWODNIK PO PRZEDMIOCIE

PRZEWODNIK PO PRZEDMIOCIE

Wymagania edukacyjne na poszczególne oceny. z przedmiotu Informatyki. w klasie VI

Rozkład materiału do zajęć z informatyki. realizowanych według podręcznika

KARTA KURSU. Wstęp do programowania

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.

Scenariusz szkolenia

KARTA PRZEDMIOTU. Programowanie aplikacji internetowych

BASH - WPROWADZENIE Bioinformatyka 4

Informatyka Arkusz kalkulacyjny Excel 2010 dla WINDOWS cz. 1

INFORMATYKA KLASA IV

KATEGORIA OBSZAR WIEDZY

Tematy lekcji informatyki klasa 4a listopad 2012

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 1. Karol Tarnowski A-1 p.

Podstawy i języki programowania

3. Karta przedmiotu ważna od roku akademickiego: 2012/ Forma kształcenia: studia pierwszego stopnia studia drugiego stopnia 1

Spis treści. Rozdział 1. Wprowadzenie, czyli kilka słów o komputerze / 11

Wymagania edukacyjne i kryteria oceniania w klasie VI 2013/2014 OBSZARY AKTYWNOŚCI UCZNIA PODLEGAJĄCE OCENIE

Teraz bajty. Informatyka dla szkoły podstawowej. Klasa IV

Terminal ABA-X3 może być wykorzystywany jako terminal znakowy. Funkcja ta może być zrealizowana na kilka sposobów:

Teraz bajty. Informatyka dla szkoły podstawowej. Klasa 4 Wymagania edukacyjne na poszczególne oceny szkolne dla klasy 4

KARTA KURSU. Techniki informatyczne

Język ludzki kod maszynowy

Wykład Ćwiczenia Laboratorium Projekt Seminarium

PRZEWODNIK PO PRZEDMIOCIE

Transkrypt:

rsob@mif.pg.gda.pl www.mif.pg.gda.pl/homepages/rsob p.518 gmach B czwartek: 12.00-13.00 www.moodle.pg.gda.pl klucz dostępu:odra1304 1

Informacja o prawach autorskich Materiał jest kompilacją różnych tekstów, w tym również autorów nieznanych, z moimi uzupełnieniami i komentarzami. Nie próbowałem uzyskać zgody autorów na umieszczenie fragmentów ich prac (zdjęć) w tych notatkach, gdyż są one przeznaczone wyłącznie do wykładów: i Podstawy programowania na Wydziale Fizyki Technicznej i Matematyki Stosowanej Politechniki Gdańskiej. W mojej ocenie odpowiada to wymaganiom Ustawy z dnia 4 lutego 1994 r. o prawie autorskim i prawach pokrewnych art.. 29: Wolno przytaczać w utworach stanowiących samoistną całość urywki rozpowszechnionych utworów lub drobne utwory w całości, w zakresie uzasadnionym wyjaśnianiem, analizą krytyczną, nauczaniem lub prawami gatunku twórczości 2

Konspekt wykładu Technologia informacyjna: Informatyka. Jak i dlaczego należy uczyć się informatyki na Matematyce Algorytm. System komputerowy System operacyjny. Linux LaTeX i HTML Język programowania. Cykl wytwarzania programu Liczby w systemach komputerowych: Pamięć operacyjna i liczby dwójkowe. Liczby całkowite Liczby zmiennoprzecinkowe Wskazania, referencje Iteracja: Procesor. Polecenie warunkowe. Polecenie wyboru Polecenia iteracyjne. Wektory i macierze. Operacje na plikach dyskowych Cechy dobrego stylu programowania. Testowanie programu Algorytmy iteracyjne Literatura: Notatki i przykłady do wykładu w systemie Moodle Kernigan B.W., Ritchie D.M. Język ANSI C, WNT, Warszawa (biblioteka) 2g 2g 2g 2g 2g 2g 2g 2g 4g 4g 2g 2g 3

Konspekt laboratorium Laboratorium: Korzystanie z edytora dokumentów i przygotowanie doku-mentu matematycznego - pakiet MSOffice/OpenOffice 2 g Korzystanie z arkusza kalkulacyjnego - pakiet MS Office/OpenOffice 4 g Sprawdzian z zakresu narzędzi biurowych + program Moodle 2 g Praca w środowisku LINUX - sesja terminalowa, sprawdzian 4 g Przygotowanie dokumentu matematycznego z zastosowaniem LaTeXa 4 g Program GNUPlot 2 g Przygotowanie strony internetowej z zastosowaniem HTML i LateX-a 4 g Prezentacja matematyczna wykonana z zastosowaniem LaTeX Beamer, sprawdzian 4 g Podstawy programowania w C (Dev C++) 2 g Literatura: Kopertowska M.: Przetwarzanie tekstów, W-wa: Mikom, seria: ECUK, wyd. III zmienione, 2006 Kopertowska M.: Arkusze kalkulacyjne, W-wa: Mikom, seria: ECUK, wyd. III zmienione, 2007 Kopertowska M.: Grafika menedżerska i prezentacyjna, W-wa: Mikom, seria: ECUK, wyd.iii, zmienione, 2006 Notatki o systemie Linux w systemie Moodle Diller A.: LaTeX. Wiersz po wierszu, Gliwice: Helion, 2001 (biblioteka) Lamport L.: Latex : system przygotowywania dokumentów : przewodnik użytkownika i podręcznik, Kraków: Ariel, 1992 (biblioteka) Lamport L.: LATEX Podręcznik i przewodnik użytkownika, W-wa: WNT, 2004 www.latex-project.org/ www.gnuplot.info/ 4

Forma i warunki zaliczenia Sprawdzian na wykładzie w drugiej części semestru (początek stycznia). 50% oceny z wykładu + 50% oceny z laboratorium Oceny z laboratorium: prowadzący laboratorium 5

Dlaczego informatyka jest ważna dla matematyków? Komputer kiedyś maszyny matematyczna Copyright (c) 1997. Maxfield & Montrose Interactive Inc. http://www.maxmon.com/history.htm I nie jest to pierwsza maszyna matematyczna. W wykonaniu drewnianym nazywała się: computare (łac.) [1] Bauer F.L., Goos G.: Informatyka, WNT, Warszawa, 1977 6

Liczydło 3000 p.n.e. - Dlaczego? 7

Dlaczego? Suwak logarytmiczny Outhred W. (1622)[2] 8

Dlaczego? Blaise Pascal (1642) Gottfried von Leibniz (1673) http://www.maxmon.com/history.htm 9

Dlaczego? Maszyna analityczna Babbege a (1835)[2], Augusta Ada Byron pierwsza programistka! Konrad Zuse MARK I, ENIAC, http://pl.wikipedia.org/wiki/grafika:odra_1001 10

Dlaczego? IBM S360, PDP 11,. Odra 1204 od 1967 [2], RIAD 20, Kalkulator od 1966, 11

Dlaczego? Spectrum, Atari, Commodore 64,.., PC Notebook od 1989 [2] 12

Mgr inż. Dlaczego? http://www.asus.com/products http://pl.wikipedia.org/wiki/grafika:odra_1305 13

Cel Elementarna wiedza o sposobie korzystania z aplikacji przydatnych na studiach, Elementarna wiedza o sposobie funkcjonowania sprzętu komputerowego, Znajomość języka programowania, Wiedza o konstruowaniu algorytmów dla komputerów, Wiedzy o projektowaniu i produkowaniu programów. Warto w tym miejscu zwrócić uwagę na sformułowanie: produkcja oprogramowania. W dalszej części będę wielokrotnie wracał do tego sformułowania by spróbować utrwalić przekonanie, że rola programisty jest coraz mniejsza, natomiast rośnie rola projektanta oprogramowania i zarządzania procesem jego wytwarzania. 14

Dlaczego? Cel a + b = a, dla b > 0 0,1 + 0,1 + 0,1 0,1 0,1 0,1 0 0.125 + 0.125 + 0.125 0.125 0.125 0.125 = 0 15

Cel Faktura VAT Faktura VAT Nazwa Cena netto VAT Cena brutto 7,25 zł 22% 8,85 zł 7,25 zł 22% 8,85 zł 7,25 zł 22% 8,85 zł 7,25 zł 22% 8,85 zł 7,25 zł 22% 8,85 zł! Razem do zapłacenia: 44,23 zł Jak stosując tak prymitywne operacje jakie wykonuje procesor uzyskujemy efekty, dzięki którym niektórzy zaczynają wierzyć w "inteligencję" komputerów? 16

Wprowadzenie Użytkownicy Informatyka a) b) c) Administratorzy i serwisanci Programiści i projektanci oprogramowania oraz konstruktorzy Naukowcy 17

Wprowadzenie Informatyka jest nauką o przetwarzaniu informacji, zwłaszcza przy użyciu automatycznych środków pomocniczych Władysław Turski 1. Informacją w ramach tego wykładu będą liczby 2. Inne typy informacji (tekst, dźwięk, obraz) sprowadzimy do formy liczby 3. Automatycznym środkiem pomocniczym jest komputer z mikroprocesorem półprzewodnikowym Informatyka (ang. computer science) 18

Wprowadzenie Szybkość zmian Dzisiaj Nowe algorytmy Nowe języki programowania Nowe parametry sprzętu, nowi użytkownicy komputerów Nowe zastosowania, nowe metody projektowania i wdrażania oprogramowania Czas 19

Technologia informacyjna Wprowadzenie znać definicję jednostki fizycznej sekunda zgodną z układem jednostek SI, to wiedza, umieć wykonać pojedynczy zegarek cyfrowy sterowany radiowym wzorcem czasu, to technika, umieć wykonać w dowolnym miejscu na Ziemi, o dowolnej godzinie 1000 takich zegarków w ciągu godziny i to tak, aby wykonanie jednego zegarka nie było droższe niż 1 euro, to technologia. Skutki komputer jest coraz tańszy i dostępniejszy (pomimo, że jest coraz szybszy i pojemniejszy), oprogramowanie komputerów ma coraz większą wielkość; często jest wytwarzane prawie automatycznie i coraz trudniej zapanować nad jego wewnętrzną strukturą i działaniem 20

Inżynieria oprogramowania 30% - projekt 20% - programowanie 50% - testowanie Gdzieś w Internecie 21

Wprowadzenie Sposób działania komputera jest dokładnie taki sam jak przed pół wiekiem. Natomiast powszechność i dostępność sprzętu komputerowego spowodowała pojawienie się nowej, ważnej i trudnej ścieżki poszukiwań i badań naukowych związanych z metodami projektowania oprogramowania i metodami zarządzania procesami wytwarzania oraz stosowania oprogramowania. Przejście informatyki z fazy rozważań o algorytmach w skali mikro do opracowywania narzędzi i metod projektowania, implementowania oraz wdrażania systemów informatycznych to zasadnicza zmiana, jaka nastąpiła w ostatnich 25 latach. I jeśli dzisiaj mówimy o IT, to odnosi się to nie tylko do parametrów sprzętu, ale przede wszystkim do sposobu jego produkcji i do sposobu produkcji oprogramowania. 22

Wprowadzenie Informatyka (ang. computer science). Fragment z książki Davida Harela Rzecz o istocie informatyki. Algorytmika : "Mimo oszałamiającej szybkości, z jaką niektóre z innowacji technicznych stają się bezużyteczne i są zastępowane następnymi, podstawy informatyki, czyli główne koncepcje uważane za istotne w informatycznym programie nauczania, zmieniają się powoli, jeśli w ogóle się zmieniają". Oznacza to, że informatyka wychodzi z początkowej fazy rozwoju zbliżonej do działalności artystycznej (ang. art of programming) i w wielu obszarach przechodzi do fazy działalności produkcyjnej, w której liczą się: czas wykonania i wdrożenia oprogramowania, koszty tego procesu oraz sterowanie jakością wykonanego oprogramowania. 23

Jak się uczyć? Samodzielne próby Wymiana doświadczeń w środowisku studenckim i zawodowym. Internet Czasopisma Książki i podręczniki Opanowanie sposobu korzystania z odpowiednich środków pomocniczych oraz narzędzi programowych jest elementem najmniej istotnym. Umiejętności tworzenia algorytmów oraz języki programowania. Techniki projektowania oraz wytwarzania oprogramowania. Z tej wiedzy wynikają ostateczne kryteria oceny stawiane algorytmom. 24

Algorytm, klasa Przetwarzanie informacji i algorytm Sformułowanie zadania przetwarzania informacji Algorytm Program 25

Algorytm, klasa Na algorytm musi, zatem składać się opis trzech elementów: informacji znanych (zwanych też danymi) informacji poszukiwanych (zwanych też wynikami) i metody otrzymania wyników na podstawie danych. Informacje znane (dane) Metoda przekształcania danych na wyniki Algorytm Informacje poszukiwane (wyniki) 26

Algorytm, klasa Konstruowanie i badanie algorytmów bez zdefiniowanego zbioru informacji znanych i szukanych jest jak badanie przebiegu zmienności funkcji bez znajomości jej dziedziny Zadanie otrzymania wyniku na podstawie danych może być rozwiązane różnymi sposobami, a jeśli da się je doprowadzić do postaci algorytmu, to mówimy o algorytmizacji problemu. Kiedyś można było powiedzieć: jestem dobrym informatykiem, bo umiem zalgorytmizować każdy problem i napisać program, który go rozwiązuje. Dzisiaj są to zaledwie podstawy tego zawodu. 27

Algorytm, klasa Klasa jest elementem konstrukcji programu, elementem języka programowania opisującym algorytm. Zanim poznamy język programowania pozwalający na definiowanie klas do ich definiowania zastosuję ilustrację nazwa klasy dane metody i operacje niezbędne do otrzymania wyników 28

Algorytmizacja przykład 1 Wyznaczyć pierwiastki równania kwadratowego zapisanego w postaci wielomianowej: Dane: współczynniki a,b,c Wyniki: pierwiastki (x 1,x 2 ) Metoda: 2 ax bx c + + = 0 2 Δ= b 4ac gdy Δ>0 x 1 = b + 2a Δ x 2 = b 2a Δ gdy Δ=0 gdy Δ<0 x 1 = x 2 = b 2a równanie nie ma pierwiastków w zbiorze liczb rzeczywistych. 29

Algorytmizacja przykład 2 Wyznaczyć pierwiastki równania kwadratowego zapisanego w postaci kanonicznej: ( ) 2 + = 0 a x x y w w Dane: współczynniki a,x w,y w Wyniki: pierwiastki (x 1,x 2 ) Metoda: gdy y w a>0 x 1 = x w y w a x 2 = x w + y w a gdy y w =0 x x = 1 = 2 x w gdy y w a<0 równanie nie ma pierwiastków w zbiorze liczb rzeczywistych 30

Algorytmizacja przykład 3 Wyznacz wartość dopłaty albo zwrotu podatku dochodowego od osób fizycznych Dane: przychody, koszty uzyskania, wpłacona zaliczka na podatek dochodowy, wydatki, które można odpisać od podstawy opodatkowania, wydatki, których część można odpisać od wartości podatku itp. Wyniki: wysokość dopłaty albo zwrotu podatku Metoda: sposób otrzymania wyniku najprościej uzyskać w informatorze dodawanym do deklaracji podatkowej wydawanej w okienku informacji przykładowo w: XX Urząd Skarbowy ul. YY nn kk-kkk Mmmm, pokój:. xxxxxxx Szczegółowe pytania o sposób obliczania podatku najbezpieczniej zadawać Urzędom Skarbowym na piśmie. Odpowiedź Urzędu nie jest jednak wiążąca (waga interpretacji odpowiedzi z urzędu skarbowego co kilka lat ulega zmianie). Trzeba liczyć na szczęście w życiu lub urok osobisty. 31

Algorytmizacja przykład 4 Schudnij stosując dietę dla smakoszy z nadwagą Dane: składniki: 6 dużych zielonych cebul, 1 lub 2 puszki pomidorów (mogą być świeże pomidory), duża główka kapusty, 2 zielone papryki, pęczek zielonego selera, 1 torebka przyprawy do zup. Wyniki: schudnięcie bez zaprzestawania spożywania jedzenia Metoda: podany w literaturze źródłowej (Wieczór Wybrzeża, 20.07.98 str.3) sposób otrzymania wyniku jest następujący: pokroić jarzyny w małe lub średnie kawałki i zalać wodą, gotować na dużym ogniu 10 min., zmniejszyć gaz i gotować powoli aż do czasu, gdy jarzyny będą miękkie. 32

Algorytmizacja przykład 5 Wyznacz największy wspólny dzielnik (NWD) dwóch liczb całkowitych Dane: dwie nieujemne liczby całkowite a i b. Wyniki: największy wspólny podzielnik c liczb a i b. Metoda: iteracyjna do { // powtarzaj r = a%b; //co oznacza r = a mod b, reszta z dzielenia a = b; b = r; } while (r!= 0); // dopoki r rozne od 0 c = a; 33

Algorytmizacja przykład 5 Metoda: rekurencyjna // zastosuj ponownie ze zmienionymi parametrami int NWD(int a, int b){ if (b!= 0) return NWD(b, a % b); else return a; };... c = NWD(a,b)); bez dzielenia () while (a!=b) { //powtarzaj tak długo jak ( a>b ) if a = a - b; else b = b - a; }; c = a; 34

Algorytmizacja przykłady Przykład: 1 i 2 3 4 5 Dane Metody Wyniki a) b) c) d) Linią przerywaną oznaczono te elementy algorytmu, które nie są w pełni zdefiniowane. 35

Algorytmizacja przykłady Poprawna, precyzyjna i jednoznaczna definicja wszystkich elementów składowych algorytmu determinuje powodzenie programisty przy opracowywaniu i wdrażaniu programu. Opracowywanie i wdrażanie dużych systemów informatycznych, zbudowanych z wielu współpracujących ze sobą programów, też jest uzależnione od jakości zdefiniowania tych samych trzech elementów, które składają się na definicję algorytmu: danych, wyników i sposobu otrzymania wyników na podstawie danych. Praktyka inżynierska pokazuje, że właściwa realizacja tych trzech punktów wcale nie jest taka prosta, a nabycie umiejętności formułowania wymagań definiujących algorytm jest istotnym elementem wykształcenia informatycznego. Przykładami nieprecyzyjnych określeń są przymiotniki: dobry, piękny, zdrowy, sprawiedliwy. Istotę problemy precyzyjnego formułowania wymagań (życzeń) jest bajka o rybaku i złotej rybce. W bajce rybka spełniła nie tylko trudne do zrealizowania życzenie rybaka, aby stał się bogaty, ale również domyśliła się, co dla rybaka oznacza "piękna żona" (trzecie życzenie w wersji, którą znam dotyczyło okazałego domu). Dla programisty określenie piękna nie wystarczyłoby do zdefiniowania algorytmu "modyfikacji" dotychczasowej żony rybaka, nawet gdyby to była żona wirtualna. 36

Algorytmizacja przykłady Algorytm Euklidesa jest najstarszym opisanym algorytmem iteracyjnym tzn. algorytmu który jest tak sformułowany, że otrzymanie wyniku (osiągnięcie celu) wymaga wielokrotnego wykonania tego samego zestawu poleceń. Przez tą właściwość algorytm Euklidesa jest historycznie ważnym algorytmem. Robienie niektórych zupek jest bez wątpienia jeszcze starszym algorytmem niż algorytm Euklidesa, ale nie jest to algorytm iteracyjny. Istotną cechą algorytmu jest jego następująca własność: dla każdego ustalonego zestawu danych algorytmu otrzymanie wyników wymaga skończonej liczby kroków. Czasami ta liczba jest bardzo duża, ale jest to zawsze liczba skończona. 37

Algorytmizacja przykłady Algorytm Euklidesa jest najstarszym opisanym algorytmem iteracyjnym tzn. algorytmu który jest tak sformułowany, że otrzymanie wyniku (osiągnięcie celu) wymaga wielokrotnego wykonania tego samego zestawu poleceń. Przez tą właściwość algorytm Euklidesa jest historycznie ważnym algorytmem. Robienie niektórych zupek jest bez wątpienia jeszcze starszym algorytmem niż algorytm Euklidesa, ale nie jest to algorytm iteracyjny. Istotną cechą algorytmu jest jego następująca własność: dla każdego ustalonego zestawu danych algorytmu otrzymanie wyników wymaga skończonej liczby kroków. Czasami ta liczba jest bardzo duża, ale jest to zawsze liczba skończona. 38

Algorytmy właściwości Przykładowymi cechami mierzalnymi są: wielkość programu, czas jego wykonywania, dokładność obliczeń, złożoność obliczeniowa zastosowanego algorytmu, złożoność pamięciowa zastosowanego algorytmu. Przykładowymi cechami niemierzalnymi są: poprawność - posiadanie tej cechy przez program oznacza, że program wytwarza pożądane wyniki na podstawie założonych danych, wykonalność -algorytm składa się z kroków wykonalnych dla wykonawcy algorytmu (np. komputera), testowalność -właściwość ta oznacza możliwość wykonania testów pozwalających rozstrzygnąć czy program bądź algorytm posiada niektóre z wyżej wymieniowych cech 39

Algorytmy klasyfikacja Przykładowo wyróżnia się algorytmy: numeryczne, graficzne, sterowania, komunikacyjne, kryptograficzne itp Czasami grupuje się algorytmy stosujące zbliżone metody rozwiązania zadania i otrzymania wyników. Przykładami mogą być tu grupy algorytmów i programów: deterministycznych, iteracyjnych, rekurencyjnych, losowych, heurystycznych, genetycznych. 40

Algorytmy czas życia Czy algorytmy i programy opracowane ponad 25 lat temu są nadal przydatne? Problem roku 2000 pokazał, że nie tylko algorytmy, ale również całe systemy informatyczne opracowane przed wielu laty są nadal stosowane. A jeśli tak, to czy w takim razie postęp technologiczny nie ma wpływu na rozwój zasad wytwarzania algorytmów? I tu odpowiedź jest twierdząca: ma wpływ na rozwój algorytmów. Ma wpływ poprzez: stosowanie i rozwój algorytmów wcześniej znanych, lecz niestosowanych ze względu na długi czas ich wykonywania lub zbyt dużą ilość danych bądź wyników. Przykładem może być rozwój algorytmów o złożonej postaci przetwarzanej informacji (skompresowany dźwięk albo obraz nieruchomy i ruchomy) rozwój algorytmów udostępniania danych szerokiemu gronu ich odbiorców w dowolnym miejscu i czasie, rozwój algorytmów związanych z uproszczeniem sposobu korzystania z komputera i lepszym oraz wygodniejszym sposobem wykorzystania jego zasobów, rozwój algorytmów usprawniających techniki wytwarzania oprogramowania. 41

Algorytmy zapisywanie Konstruując algorytm trzeba posiadać metodę jego zapisania. Spośród wielu znanych (teksty w języku naturalnym (np. polskim), diagramy, formalne zapisy o charakterze matematycznym) dalej będę stosował rzeczywisty język programowania C/C++. Powodem wybrania tej formy jest wymaganie, aby opracowane przez nas algorytmy rozwiązywania problemów można było samodzielnie uruchomić i sprawdzić ich działanie. Zapisywanie algorytmów w abstrakcyjnych językach opisu algorytmów może nas narazić na niejednoznaczności w ich interpretacji. Język programowania jest środkiem komunikacji między programistą a komputerem. Środkiem komunikacji między człowiekiem i maszyną. 42

Język programowania Dobry język programowania, to taki język, który pozwala na sprawną komunikację z komputerem. Na rysunku pokazano umiejscowienie języka programowania między algorytmem, a technologią. Szybkość zmian Dzisiaj Nowe algorytmy Nowe języki programowania Nowe parametry sprzętu, nowi użytkownicy komputerów Nowe zastosowania, nowe metody projektowania i wdrażania oprogramowania Czas 43

Język programowania Biorąc pod uwagę: złożoność konstrukcji poleceń języka programowania, wymaganą wiedzę o sposobie funkcjonowania systemu komputerowego oraz sprawność otrzymywania wyników można wyróżnić następujące generacje języków programowania: 1G - języki maszynowe (zapisy binarne poleceń dla procesora), 2G - języki niskiego poziomu (np. Asembler procesora 8080), 3G - języki średniego poziomu (np. BASIC, Pascal, C++, Fortran, Java, Cobol, C), 4G - języki wysokiego poziomu (np. język zapytań SQL), 5G lepsze niż 4G, choć definicja nie jest jednoznaczna. Oznaczenie 1G pochodzi od słów "pierwszej generacji" (ang. generation). Kolejny rysunek ilustruje wzajemne związki wymienionych generacji języków programowania na tle podanych wcześniej kryteriów ich oceny. Im wyższy numer generacji języka programowania tym osiągnięcie celu wymaga mniejszej wiedzy o systemie i mniejszego nakładu pracy. 44

Język programowania Sprawność uzyskania wyniku 5GL 4GL 3GL Nakład pracy 2GL Wiedza o systemie 1GL 45

System komputerowy Oprogramowanie A Użytkownik B Warstwa oprogramowania użytkowego Warstwa systemu operacyjnego Warstwa sprzętu C D Administrator systemu Sprzęt 46

System komputerowy Myszka Klawiatura Monitor Drukarka Dyski magnetyczne, CD, DVD Inne Magistrala Procesor Pamięć 47

System komputerowy Podstawowymi jednostkami funkcjonalnymi w warstwie urządzeń są: Procesor (na dzisiaj z wbudowanym koprocesorem arytmetycznym) -umożliwia automatyczną realizację rozkazów pobieranych z pamięci 450 operacyjnej. 385 MFLOPS 400 350 300 250 200 150 100 100 50 0 1 5 14 20 1982 1985 1990 1995 1999 2004 Pamięć operacyjna -umożliwia zapisanie, przechowywanie i odczytywanie oddzielnie adresowanych liczb dwójkowych stanowiących rozkazy dla procesora oraz dane tych rozkazów. W pamięci operacyjnej są zapisane rozkazy aktualnie działającego programu. Magistrala (nazywana również szyną) - stanowi środek komunikacji pomiędzy elementami komputera. Magistrala służy do przesyłania adresowanych wartości liczbowych. Adresy określają miejsce zapisania bądź odczytania tych wartości. Urządzenia pamięci masowych, klawiatury, monitora ekranowego, drukarki, modemu, przyłącza sieciowego, skanera. 48

System komputerowy System operacyjny to zespół programów, które realizują dwie podstawowe funkcje: oddzielają użytkownika systemu od warstwy sprzętowej maskując szczegóły organizacji sprzętu oraz zapewniają efektywne zarządzanie zasobami systemu komputerowego (pamięcią operacyjną, pamięcią dyskową i czasem procesora). 49

System komputerowy Dostarcza tych środków trzema drogami: Poprzez graficzny interfejs użytkownika (ang. GUI Graphic User Interface) bądź też poprzez zestaw komend operatorskich (ang. shell) (interfejsy A, C, D), Poprzez zestaw programów systemowych (interfejsy A, C, D), Poprzez zestaw przywołań systemowych i API (ang. API Application Programming Interface) dostępnych dla programisty (interfejs B). Oprogramowanie A Użytkownik B Warstwa oprogramowania użytkowego Warstwa systemu operacyjnego Warstwa sprzętu C D Administrator systemu Sprzęt Systemy z graficznym interfejsem użytkownika (Windows, Linux z interfejsem graficznym, System 7 ) są dobrymi przykładami systemów oddzielających użytkownika od urządzeń. Użytkownik często nie wie gdzie zlokalizowane są jego pliki czy oprogramowanie użytkowe. I wiedza taka nie jest mu potrzebna do sprawnego korzystania z komputera. 50

System komputerowy Nr wersji Data pojawienia się na rynku Sumaryczna wielkość systemu w KB Rodzaj dysku 1.00 04.08.81 13.3 Dyskietka SS - 180kB 1.10 07.05.82 14.3 Dyskietka DS - 360kB 2.00 08.03.83 40.9 XT, dysk stały do 32MB 2.10 20.10.83 (01.84) 40.9 Płaskie napędy dyskietkowe 3.00 14.08.84 60.4 AT, dysk stały do n*32mb 3.10 07.03.85 62.5 Sieć komputerowa 3.20 21.03.86 69.6 3.30 17.03.87 78.8 Dyskietki 3.5'' 4.00 17.06.88 106.5 Dysk stały - powyżej 32MB 4.01 07.04.89 108.3 Zarządzanie pamięcią operacyjną 5.00 04.09.91 118.7 Dwa dyski stałe, dyskietki 2.88 MB, zarządzanie pamięcią 6.0 1992 Kompresja dysku, laptop 6.2 1993 6.22 31.05.94 133.6 51

System komputerowy Podstawowe zadania realizowane przez system operacyjny to: Zainicjowanie pracy systemu komputerowego poprzez: Rozpoznawanie struktury systemu, Zainicjowanie pracy poszczególnych urządzeń zewnętrznych, Załadowanie odpowiedniej części oprogramowania ładującego system do pamięci operacyjnej, Interpretacja poleceń użytkownika wydawanych poprzez interfejs graficzny jak i komend operatorskich, Obsługa wszystkich urządzeń zewnętrznych dołączonych do systemu komputerowego, Obsługa plików z danymi i programami, umieszczonych i dostępnych na urządzeniach zewnętrznych obejmująca: Definicję sposobu identyfikacji tych plików, Rozmieszczenie plików na urządzeniach zewnętrznych, Różne formy dostępu do plików, Przenoszenie plików między różnymi urządzeniami (kopiowanie) i kontrolę poprawności operacji przenoszenia, Przepisywanie do pamięci operacyjnej i uruchamianie, Ochronę przed zniszczeniem. 52

System operacyjny Linux Użytkownik Oprogramowanie A B Warstwa oprogramowania użytkowego Warstwa systemu operacyjnego Warstwa sprzętu C D Administrator systemu Sprzęt Krótka historia: ATT Bell Laboratories Multics -> UNIX->UNIX ->XENIX ->BSD UNIX ->MINIX ->AI/X, HP-UX itp ->LINUX Literatura: Korzystając z wyszukiwarki (np. Google) zadać pytanie "Linux tutorial". Można liczyć na tysiące odpowiedzi (patrz plik Linux tutorial.pdf). Odpowiedzi wyszukiwarek często się zmieniają, gdyż zmienia się zawartość serwerów internetowych 53

System operacyjny Linux Tryb emulacji terminala dokładne odtworzenie sposobu pracy terminala dołączanego do serwera za pomocą interfejsu szeregowego. Pierwsze terminale (monitor + klawiatura + odrobina elektroniki) były dołączane do serwerów Unix-owych bezpośrednio za pomocą specjalnego kabla wieloprzewodowego, bądź za pomocą modemu i wolnego łącza telefonicznego. Terminale bezpośrednio dołączone do serwera Terminal Serwer Terminal 54

System operacyjny Linux Terminal dołączony do serwera przez sieć telefoniczną Modem Modem Serwer Terminal 55

System operacyjny Linux Oprogramowanie emulatora terminala w sieci laboratorium Lokalna sieć komputerowa w laboratorium Przełącznik Serwer z systemewm LINUX Komputer osobisty z oprogramowaniem emulatora terminala 56

System operacyjny Linux Oprogramowanie emulatora terminala w mieszkaniu Rozległa sieć komputerowa Ruter Ruter Serwer Komputer osobisty z oprogramowaniem emulatora terminala w mieszkaniu użytkownika 57

System operacyjny Linux Inicjowanie pracy Podstawą pracy w ramach laboratorium będzie sesja terminalowa z realizowana ze środowiska Windows. Studenci wydziału FTiMS mają konta na serwerze olimp.mif.pg.gda.pl. Sesja terminalowa Podstawą pracy będzie usługa telnet. Gdyby usługa telnet dostępna w systemie Windows nie dawała możliwości współpracy z serwerem, to proszę skorzystać z programu puty.exe i otworzyć sesję SSH (Bezpieczny terminal/konsola): http://www.chiark.greenend.org.uk/ ~sgtatham/putty/. Po uruchomieniu programu putty należy podać nazwę serwera, wybrać protokół SSH (Secure Shell) oraz otworzyć sesję. 58

System operacyjny Linux 59

System operacyjny Linux Należy wybrać odpowiedź TAK. Odpowiedź TAK spowoduje nawiązanie bezpiecznego połączenia z serwerem. Bezpieczeństwo połączenia z serwerem będzie polegało na przesyłaniu zaszyfrowanej informacji między terminalem i serwerem. Serwer będzie oczekiwał na podanie loginu. Loginem jest ciąg znaków, który przydzielił administrator systemu. Dla studentów WFTiMS login to: pierwsza litera imienia + 7 liter z nazwiska bądź całe nazwisko gdy jest krótsze niż 7 znaków. 60

System operacyjny Linux Po podaniu loginu należy podać hasło: nr pesel 61

System operacyjny Linux Otwarcie sesji: login: <login_uzytkownika> password: <haslo_uzytkownika> // bez echa na ekranie > Niepoprawne otwarcie sesji (niepoprawny login albo hasło): login incorrect login: <login_uzytkownika> password: <haslo_uzytkownika> // bez echa na ekranie 62

System operacyjny Linux Gdyby okazało się, że wielkość znaków na ekranie jest zbyt mała, to należy nacisnąć na prawy klawisz myszy i wybrać opcję "Change Settings". W oknie przedstawionym na rysunku 7 wybrać opcję "Terminal" i zmienić wielkość fontów terminala (np. ustawić na 12). 63

System operacyjny Linux 64

System operacyjny Linux Zmiana hasła: >passwd Changing password for user rsob. Changing password for rsob (current) UNIX password: New UNIX password: Zamknięcie sesji: >logout //albo >exit 65

System operacyjny Linux Program mc 66

System operacyjny Linux Program mc Pomoc F1 Prywatne menu F2 Wyświetlanie zawartości pliku F3 Edycja zawartości pliku tekstowego F4 Kopiowanie pliku, plików lub folderu F5 Okna Przełączanie pomiędzy oknami Tab Zamiana położenia okien <CTRL>U Zaznaczenie grupy plików + Odwrócenie zaznaczeń * Kopiowanie z usunięciem pliku, plików lub folderu; zmiana nazwy pliku F6 Utworzenie foldera F7 Usunięcie pliku, plików lub foldera F8 Linia menu F9 Zakończenie pracy z programem mc F10 Włączenie i wyłączenie okien <CTRL>O Zaznaczenie/(usunięcie zaznaczenia) pliku Ins Usunięcie zaznaczenia pliku - Edytor Utworzenie nowego pliku <SHIFT>F4 Edytowanie pliki już istniejącego F4 Zapisanie zawartości pliku F2 Zmiana nazwy edytowanego pliku <SHIFT> F2 Zakończenie edycji F10 Usunięcie linii <CTRL> Y 67

System operacyjny Linux Program mc 68

System operacyjny Linux Identyfikacja plików i ich atrybuty Nazwa pliku: 14 znaków ASCI (najczęściej litery, cyfry, _,.) brak rozszerzenia pliku. Pliki wykonywalne posiadają atrybut wykonalności. Nazwa ich nie identyfikuje. Efekt wykonania polecenia: ls -l [rsob@mifgate rsob]$ ls -l total 40 -rw-r--r-- 1 rsob staff 1084 Oct 5 2003 acm.txt drwxr-xr-x 6 rsob staff 4096 Jan 24 15:25 Archi -rw------- 1 rsob staff 409 Nov 3 2003 dead.letter drwx------ 2 rsob staff 4096 May 4 20:23 mail -rw-r--r-- 1 rsob staff 1955 Dec 11 12:10 monika4.cpp -rwxr-xr-x 1 rsob staff 11471 Nov 6 2003 pr drwxr-xr-x 3 rsob staff 4096 Nov 24 08:46 public_html [rsob@mifgate rsob]$ 69

System operacyjny Linux Użytkownicy pliku: właściciel, grupa użytkowników, pozostali Atrybuty pliku (prawa dostępu): z r w x r w x r w x -- ------------ ------------ ------------ uprawnienia uprawnienia uprawnienia właściciela grupy pozostałych użytkowników z - typ opisu: 'd' - folder, ' ' - plik r - prawo do czytania w - prawo do pisania x - prawo do wykonania (uruchomienia) - - brak prawa Zmiana atrybutów pliku: chmod nowe_atrybuty nazwa_liku nowe_atrybuty: trzy cyfrowa liczba ósemkowa. (777)8 - rwx rwx rwx (751)8 - rwx r-x --x (530)8 - r-x -wx --- 70

System operacyjny Linux Utworzenie pliku tekstowego (edytor tekstowy - vi, pico, emacs... albo wprost z linii poleceń terminala: cat > tekst tekst probny <ctrl D> Wyświetlenie zawartości pliku tekstowego: cat nazwa_pliku more Kopiowanie pliku: cp nazwa_pliku folder cp nazwa_pliku nowa_nazwa Przenoszenie plików do innych folderów i zmiana nazwy pliku: mv nazwa_pliku folder mv nazwa_pliku nowa_nazwa Łączenie plików tekstowych: cat plik_2 >> plik_1 71

System operacyjny Linux Polecenia i funkcje obsługi plików Wyświetlenie zawartości foldera: ls // wykaz plików dir // wykaz plików ls -l // lista plików z długim opisem pliku Utworzenie foldera: mkdir nazwa_foldera Zmiana widocznego foldera: cd nazwa_foldera Usunięcie pustego foldera: rmdir nazwa_foldera Usunięcie foldera z plikami: rm -r nazwa_foldera Nazwa_foldera (np.): rsob/teksty/zaleczenia Ścieżka dostępu 72

System operacyjny Linux Pomoc (trzeba znać angielski!) man nazwa polecenia Przykład: man ls Poruszanie się po tekście pomocy: klawisze strzałka w górę i w dół, klawisze strona w górę i w dół Wyjście z pomocy: klawisz <q> Strona o komendach Linuxa http://www.ss64.com/bash/ 73

System operacyjny Linux Usługi internetowe E-mail: Program pine 74

System operacyjny Linux Usługi internetowe ftp File Transport Protocol 75

System operacyjny Linux Usługa FTP w systemie Windows98/2000/XP: Uruchomienie w środowisku Windows: Start-> Uruchom->ftp Zgłoszenie aktywności usługi w oknie konsoli: ftp> Polecenia usługi: help wyświetlenie na ekranie wszystkich poleceń help xxxx - wyświetlenie na ekranie informacji o poleceniu xxxx open otwarcie sesji z odległym (zdalnym) serwerem open sad.mif.pg.gda.pl user udostępnienie użytkownikowi zawartości jego foldera na odległym serwerze dir wyświetlenie zawartości aktywnego foldera binary ustawienie trybu przesyłania plików binarnych put wysłanie do foldera na odległym serwerze lokalnego pliku (pliku ze środowiska Windows) put c:\xxx.yyy xxx.yy get odebranie z foldera na odległym serwerze pliku get xxxx.yyy c:\xxx.yyy quit zakończenie pracy 76

System operacyjny Linux Bezpieczna usługa FTP (program WinSCP) 77

System operacyjny Linux Nowa sesja: Nazwa hosta: serwer laboratoryjny 'olimp'. Nazwa użytkownika: login studenta. Protokół: SFTP (bezpieczny protokół) 78

System operacyjny Linux Okno z zawartością foldera Okno z zawartością foldera użytkownika w komputerze osobistym rsob na serwerze 'olimp' Edytuj plik - F4 Kopiuj - F5 Przenieś plik - F6 Utwórz folder (katalog) - F7 Usuń plik - F8 Zakończenie sesji - F10 79

LaTeX Historia: TeX - narzędzie (język i kompilator) profesjonalnego składu drukarskiego tekstów naukowych, w szczególności matematycznych. Nazwa pochodzi od greckiego τεχηε - rzemiosło. Autorem TeX-a jest Donald E. Knuth - matematyk i informatyk. Autor kilkutomowej książki Sztuka programowania (ang. The Art of Computer Programming). Strona książki http://www-cs-staff.stanford.edu/~uno/taocp.html 80

LaTeX [Zdjęcie ze strony www.amazon.com] 81

LaTeX Książka została w ostatnich latach przetłumaczona na polski, ale jej nakład jest już wyczerpa-ny. 82

LaTeX W roku 1985 (po ośmiu latach prac nad definicją języka opisu dokumentu) uznano, że nie ma potrzeby dalszego wzbogacania języka TeX. TeX jest standardem wykonywania dokumentów naukowych stosowanym w wielu wydawnictwach matematycznych. Donald Knuth jest autorem przetłumaczonego na polski przewodnika po języku TeX: Knuth D.E.: TeX - Przewodnik użytkownika, Warszawa: WNT, 2005 METAFONT - narzędzie do definiowania czcionek używanych w składzie drukarskim opracowane przez Donalda Knutha 83

LaTeX LaTeX - Leslie Lamport TeX - zestaw makr, które pozwalają korzystać z TeX-a osobom o niedużym przygotowaniu zecerskim i otrzymywać profesjonalne dokumenty (z drukarskiego punktu widzenia). W języku polskim wydano kilka podręczników LaTeXa, w tym podręcznik Lamporta: Lamport L.: Latex - Podręcznik i przewodnik użytkownika, Warszawa: WNT, 2004 84

LaTeX TeX i LaTeX to starszy sposób myślenia o opracowywanym dokumencie. We współczesnych programach typu WYSIWYG (ang. What You See Is What You Get - to co widzisz jest tym co otrzymasz). Plik tekstowy zawiera tekstową definicję dokumentu. Definicja ta jest konwertowana na plik graficzny. Narzędzia: pakiet protext - http://www.tug.org/protex t/ (TeX User Group) Pliki z czcionkami, pakiety Edycja Kompilacja Plik źródłowy tekstu/bibliografii Plik do wynikowe (DVI, PDF, PS) Sprawdzenie tekstu 85

LaTeX Plik tekstowy definiujący dokument z zastosowaniem LaTeXa zawiera: Definicję szablonu dokumentu obejmującą: deklarację klasy dokumentu wraz z opcjami zmiany formatu strony, zmiany zestawu domyślnych czcionek, zmiany formatu nagłówków i stopek stron, definicje nietypowych czcionek, przywołanie pakietów narodowych, przywołanie pakietów rozszerzających zbiór komend definiujących zawartość dokumentu (np. grafika), definicje elementów strony tytułowej dokumentu otoczenia zdefiniowane przez autora tekstu oraz zdefiniowane w pakietach rozszerzających, Zawartość dokumentu: struktura dokumentu (rozdziały, podrozdziały i spis treści), treść dokumentu w sformatowanych akapitach, listy, wyliczenia i opisy, odnośniki do elementów dokumentu, przypisy, wzory w tekście i wzory wydzielone (numerowane i nienumerowane), tabele i spis tabel, rysunki i dołączone elementy graficzne, spis rysunków, indeks, bibliografia. 86

LaTeX Przykładowa definicja dokumentu (czcionka Courier) wraz z wyjaśnieniami (czcionka TimesRoman) : \documentclass[format strony]{klasa dokumentu} klasa dokumentu: report, book, article format strony: a4paper, letter Dla dokumentu klasy: report: Definicja tytułu: \title{tytuł raportu} Określenie autora: \author{imię i nazwisko autora} - zawsze, gdy jest tytuł raportu Początek tekstu raportu: \begin{document} Wygenerowanie tytułu: \maketitle Koniec tekstu raportu: \end{document} % komentarz 87

Przykład: LaTeX % Przykład do wykładu 'Elementy i narzędzia informatyki' \documentclass[a4paper]{report} \title{raport} \author{rs} \begin{document} \maketitle \end{document} 88

LaTeX Przykład: Raport będzie przygotowany w języku polskim i będzie się składał z 2 rozdziałów i podrozdziałów: \documentclass[a4paper]{report} \usepackage[cp1250]{inputenc} % obsługa znaków polskiego alfabetu % zgodnie ze standardem Windows \usepackage{polski} % stosowanie polskiego słownika % polskich liter i fontów % polskich reguł dzielenia wyrazów \title{raport} \author{rs} \begin{document} \maketitle % Wyświetlenie strony tytułowej \tableofcontents % Spis treści \chapter{pierwszy} % Pierwszy rozdział raportu \section{pierwszy-podpierwszy} % Sprawdzanie ortografii w środowisku % Technicenter Tekst rozdziału pierwszego, punkt pierwszy. \chapter{drugi} % Drugi rozdział raportu Tekst rozdziału drugiego, punkt pierwszy. \section{drugi-podpierwszy} \end{document} 89

LaTeX Formatowanie tekstu: {\em wyróżnienie} tekstu \begin{em} wyróżnienie \end{em}tekstu {\bf pogrubienie} tekstu {\sl pochylenie} tekstu % patrz wyróżnienie tekst {\tt maszyny do pisania} tekst \begin{verbatim} maszyny do pisania \end{verbatim} i jeszcze kilka innych (do samodzielnego rozpoznania w ramach laboratorium i samodzielnej nauki). Znaki z innych języków: \^{u}, \`{u}, \'{u}, \"{u}, \~{u}, \={u}, \.{u}, \u{u}, \v{u}, \H{u}, \t{u}, \c{u}, \d{u}, \b{u}, \dag, \S, \copyright, \pounds, \#, \$, \%, \&, \_, \{, \}. fi fi % efekty zecerskie 90

Lista, wyliczenie i opis \begin{itemize} \item piewszy \item drugi \item trzeci \end{itemize}, LaTeX \begin{enumerate} \item piewszy \item drugi \item trzeci \end{enumerate} \begin{description} \item[pierwszy] piewszy \item[drugi] drugi \item[drugi] trzeci \end{description} 91

LaTeX Zagnieżdżenie list, wyliczeń i opisów: \begin{itemize} \item piewszy \item drugi \begin{itemize} \item piewszy \item drugi \begin{description} \item[pierwszy] piewszy \item[drugi] drugi \item[drugi] trzeci \end{description} \item trzeci \begin{enumerate} \item piewszy \item drugi \item trzeci \end{enumerate} \end{itemize} \item trzeci \end{itemize} 92

GNUPlot GNU - GNU's Not Unix: http://www.gnu.org.pl/, http://www.gnu.org/ Free Software Foundation: http://www.fsf.org/ GNUPlot: http://www.gnuplot.info/ http://gnuplot.sourceforge.net/demo_4.2/ 93

GNUPlot proste wykresy: np.: plot sin(x)/x wykresy do plików graficznych # Czyszczenie 'ekranu' clear # Skierowanie wyniku do pliku graficznego typu GIF set terminal gif # Nazwa pliku z wynikowym wykresem set output 'MSSD04.gif' # Na wykresie bedzie siatka set grid # Ustaw tekst na wykresie set label "r" at 0.5,-0.02 font "Symbol,12" set label "Q" at -0.07, 0.55 # Cztery zaleznosci definiujace wykresy p001(x)=x/(1+x) p1(x) =(1-x)*x*exp( 0.1*(x-1))/(1-x*x+x*x*(1-exp( 0.1*(x-1)))) p2(x) =(1-x)*x*exp( 1.0*(x-1))/(1-x*x+x*x*(1-exp( 1.0*(x-1)))) p10(x) =(1-x)*x*exp(10.0*(x-1))/(1-x*x+x*x*(1-exp(10.0*(x-1)))) # Wykonanie wykresu plot [p=0:1.0] [0:0.6] p001(p) title "model M/M/1/-/0", p1(p) title "a = 0.1", p2(p) title "a = 1", p10(p) title "a = 10" with lines 1000 # 'Sprzatanie' unset label unset grid demo programu 94

Cykl wytwarzania programu, pierwszy program Narzędzia programowe służące do: utworzenia tekstu programu i przetłumaczenia go na formę zrozumiałą dla procesora są przykładami programów należących do warstwy oprogramowania użytkowego. Uzyskanie z pliku tekstowego zawierającego program napisany przez programistę, pliku zawierającego wartości, które procesor potrafi zinterpretować jako rozkazy i dane wymaga wykonania szeregu czynności. Ze względu na cykliczny charakter tych czynności mówimy o cyklu wytwarzania programu. Tradycyjny i typowy cykl wytwarzania programu wygląda tak jak to przedstawia rysunek 95

Cykl wytwarzania programu, pierwszy program Edycja Plik źródłowy Kompilacja Pliki biblioteczne Plik źródłowy Łączenie Plik wykonywalne Uruchomienie i testowanie 96

Cykl wytwarzania programu, pierwszy program Edycja programu jest pierwszą fazą cyklu i w wyniku edycji powstaje plik zawierający program w postaci źródłowej. Postać źródłowa programu to plik zawierający tekst, który opisuje algorytm w języku programowania. Kompilacja programu Jest to faza, w której z pliku źródłowego wytwarzany jest plik zawierający program przetłumaczony do postaci zrozumiałej dla procesora, ale nie nadaje się on do uruchomienia. Plik ten jest nazywany plikiem relokowalnym. W przypadku, gdy program w postaci źródłowej zawierał tekst, którego kompilator nie potrafił zinterpretować pojawiają się informację o rodzaju rozpoznanych błędów programowania i plik przeznaczony do następnej fazy nie powstaje. Należy powrócić do pierwszej fazy cyklu i poprawić błędy rozpoznane przez kompilator. 97

Cykl wytwarzania programu, pierwszy program Łączenie pliku relokowalnego z bibliotekami funkcji i procedur (standardowymi i prywatnymi) oraz określenie operacyjnej komputera. Biblioteka lokalizacji programu w pamięci jest plikiem zawierającym wcześniej skompilowane programy zawierające najczęściej stosowane funkcje. Biblioteka pozwala uniknąć wielokrotnego pisania i kompilowania tych funkcji. Krok ten czasami jest nazywany konsolidacją. Ostateczny rezultat tej fazy to plik zawierający program wykonywalny (w postaci zrozumiałej dla procesora i systemu operacyjnego, w którego środowisku będzie uruchomiony). W tej fazie mogą pojawić się błędy związane z niedostępnością bibliotek lub błędy związane z niepoprawnym definiowaniem funkcji bibliotecznych. Ich poprawienie najczęściej wymaga ponownego ustawienia parametrów łączenia plików, bądź powrotu do fazy edycji. 98

Cykl wytwarzania programu, pierwszy program Uruchamianie i testowanie programu W tej fazie programista sprawdza, w jakiej mierze wykonywany program działa zgodnie z oczekiwaniami odbiorcy programu. Stąd już przy rozpoczęciu pisania programu warto spróbować odpowiedzieć na pytanie jak program powinien działać i w jaki sposób przekonać się, że jest taki jak miał być. Przydatność programu i zakres jego zastosowania muszą być przez autora programu potwierdzone za pomocą odpowiednich testów. Testowanie programu zazwyczaj wymaga jego wielokrotnego uruchomienia z różnymi zestawami danych. Bardzo często okazuje się, że program nie funkcjonuje zgodnie z naszymi oczekiwaniami i należy wrócić do fazy edycji. 99

Cykl wytwarzania programu, pierwszy program Narzędzia programowe stosowane przy wytwarzaniu oprogramowania Nazwa fazy Edycja Kompilacja Łączenie Uruchamianie i testowanie Nazwa narzędzia Edytor Kompilator Linker Debuger DevC++, Visual Studio C++ 6, Visual Studio C++ 2008 100

Cykl wytwarzania programu, pierwszy program Wszystkie przykłady programów i algorytmów w I i II semestrze będą podane w języku ANSI C i C++. Jest to pewne odstępstwo od praktyki szkoły średniej, w której przedmiot tego typu opierał się na języku Pascal. Powodem, który przemawiał za Pascalem było przekonanie, że jest to język o dużych walorach dydaktycznych i przez to język, którego łatwiej się nauczyć i nauczyć innych. Niewątpliwie język Pascal ma wiele walorów o charakterze dydaktycznym, ale wynikają one z faktu, iż jest on bardziej oddalony" od komputera niż język C. Jestem przekonany, że początkujący programista nie powinien być z założenia odsuwany od "bliższego" spotkania ze sposobem działania komputera. Dodatkowe powody, dla których bardziej odpowiedni na tym poziomie nauczania i w tym miejscu procesu nauczania informatyki jest język C są następujące: znajomość języka C otwiera drogę do szybkiego opanowania innych języków programowania takich jak C++, C#, Java, PHP. wymagania rynku pracy dla studentów, byłych studentów i absolwentów ANSI - Amerykański Instytut Standar-dów (ang. American National Standards Institute) [http://pl.wikipedia.org/wiki/ansi] C# Java C++ C PHP 101

Cykl wytwarzania programu, pierwszy program Języka programowania, podobnie jak języka naturalnego, można nauczyć się dwoma metodami: przez podanie formalnej definicji języka obejmującej jego alfabet, składnię i semantykę albo przez rozpoczęcie samodzielnego pisania coraz bardziej złożonych programów. Najpopularniejszym przykładem stosowania obu metod nauczania jest nauka pływania. Można zacząć od ćwiczeń teoretycznych na brzegu basenu albo wrzucić uczących się do basenu i pomóc tym, którzy mają kłopoty z utrzymaniem się na powierzchni wody. Zastosuję drugą metodę. Najprostszy program int main () { // naglowek programu (funkcja główna) //blok programu return 0; } 102

Cykl wytwarzania programu, pierwszy program /* Program wyznaczajacy czas wielokrotnego obliczania wartosci funkcji sinus*/ #include "stdio.h #include "time.h #include "math.h const int N 10000; int i,j,pocz,kon; float x; time_t tp; struct tm *p_tp; int main() { time (&tp); p_tp = localtime(&tp); pocz = p_tp->tm_sec; printf("prosze czekac!\n"); printf("start : %s\n",asctime(p_tp)); /* Obliczanie wartosci funkcji sinus */ for (i = 1;i <= N;i++) for (j = 1;j <= N;j++) x=sin(m_pi*i*j/(n*n)); /* Zapis 1 */ time(&tp); p_tp = localtime(&tp); printf("stop : %s\n", asctime(p_tp)); kon = p_tp->tm_sec; if (kon - pocz < 0) kon = kon + 60; printf("czas obliczen: %2d [s]\n", kon - pocz); return 0; } (* Program wyznaczajacy czas wielokrotnego obliczania wartosci funkcji sinus*) program Przyklad; uses crt, Dos const N = 10000; var i,j :integer; x :real; hp,mp,sp,csp,hk,mk,sk,csk:word; begin gettime(hp,mp,sp,csp); writeln('prosze czekac!','start:',hp:2,':',mp:2,':', sp:2); (* Obliczanie wartosci funkcji sinus *) for i := 1 to N do for j := 1 to N do x:=sin(pi*i*j/(n*n)); (* Zapis 1 *) gettime(hk,mk,sk,csk); writeln('stop :',hk:2,':',mk:2,':', sk:2); if sk - sp < 0 then sk := sk + 60; writeln('czas obliczen :',sk - sp:2); readln; end. 103

Cykl wytwarzania programu, pierwszy program Zapis DevC++ 4.9.2 DJGPP Turbo C2.0.1 Borland C++ 3.0 Microsoft Visual C++ v.6 Free PASCAL Turbo PASCAL 7.0 1 25[s] 10[s] 13[s] 13[s] 12[s] 11[s] 49[s] 30[kB] 163[kB] 30[kB] 33[kB] 197[kB] 20[kB] 11[kB] 2 9[s] 5[s] 12[s] 7[s] 8[s] 14[s] 47[s] 3 27 [s] 12 [s] 16 [s] 16[s] 14 [s] 104

Cykl wytwarzania programu, pierwszy program C PASCAL /* Zapis nr 1 */ (* Zapis nr 1 *) x = sin(m_pi * i * j/(n*n)); x := sin(pi * i * j /(N*N)); jest odpowiednikiem następującej zależności matematycznej: a zapis 2: x = π i j sin n n /* Zapis nr 2 */ (* Zapis nr 2 *) x = sin(m_pi * (i/n) * (j/n)) x := sin(pi * (i / n) * (j / n)); odpowiada zależności postaci: x = sin π i n j n 105

Cykl wytwarzania programu, pierwszy program Zastanawiające jest jednak znaczne skrócenie czasu trwania programu napisanego w języku C. Dokładniejsza analiza działania programu pokazuje, że program ten nie działa właściwie i wartości funkcji sinus są wyznaczane niepoprawnie. Źródłem błędu jest sposób interpretowania przez kompilator języka C wyniku dzielenia dwóch liczb całkowitych (i/n oraz j/n). Uzyskanie poprawnych wyników wymaga poinformowania kompilatora, że wynik dzielenia ma być potraktowany jako liczba zmiennoprzecinkowa, a nie całkowita. C /* Zapis nr 3 */ x = sin(m_pi * ((float)i/n)) *((float)j/n)); 106

Cykl wytwarzania programu, pierwszy program Już pierwsze przykłady pokazują, że konstruowanie algorytmów dla komputerów i programowanie wcale nie musi być banalnie proste. Pokazują, że korzystając z tych samych opisów algorytmów, ale różnych języków ich wyrażania oraz różnych narzędzi ich kompilowania otrzymujemy programy o zupełnie różnej wielkości, różnym czasie wykonania i co najgorsze programy poprawne oraz niepoprawne. 107