490 likes | 690 Views
Wprowadzenie. PK1 Rybnik. Dr inż. Roman Starosolski Pokój nr 527 , Akademicka 16 (AEiI), Gliwice rstaros@star.iinf.polsl.gliwice.pl http://sun.iinf.polsl.gliwice.pl/~ cki / regulaminy materiały zasoby. Tematyka wykładów. Wprowadzenie przedmiot, wykłady, laboratoria, regulamin
E N D
PK1 Rybnik Dr inż. Roman Starosolski Pokój nr 527, Akademicka 16 (AEiI), Gliwice rstaros@star.iinf.polsl.gliwice.pl http://sun.iinf.polsl.gliwice.pl/~cki/ • regulaminy • materiały • zasoby
Tematyka wykładów • Wprowadzenie • przedmiot, wykłady, laboratoria, regulamin • Komputer – historia, podstawy budowy • Języki programowania • Język Pascal • przegląd konstrukcji języka • programowanie strukturalne • rekurencja • Abstrakcyjne Typy Danych • programowanie modularne
Książki oPascalu • Niklaus Wirth „Algorytmy + struktury danych = programy”. WNT, Warszawa • inne …
Regulamin przedmiotu • Przedmiot składa się z wykładu oraz ćwiczeń laboratoryjnych odbywających się raz w tygodniu. • Obecność na ćwiczeniach laboratoryjnych jest obowiązkowa. Dwukrotna nieusprawiedliwiona nieobecność na laboratorium powoduje skreślenie z listy ćwiczących i nie zaliczenie przedmiotu. Zgodnie z Regulaminem Studiów w Poli-tech-nice Śląskiej fakt nieobecności zgłaszany jest Dziekanowi. W przypadku nie uzyskania zaliczenia, studentowi przysługuje prawo odwołania się do Dziekana, który może zarządzić komisyjne sprawdzenie wiadomości.
Zaliczenie przedmiotu polega na zdobyciu więcej niż 15 punktów na 30 możliwych w ciągu całego semestru, przy czym należy uzyskać co najmniej 3 punkty (ocena 3.0) za każdy z dwóch pisanych na laboratorium programów zaliczeniowych. Maksymalna liczba 30 jest sumą punktów uzyskanych za kartkówki (5 x 1pkt), programy (2 x 5pkt) oraz sprawdziany z wykładów (3 x 5pkt). Ocena na zaliczenie przedmiotu przyznawana jest w zależności od liczby zdobytych przez studenta punktów, w sposób następujący: Regulamin przedmiotu
Regulamin przedmiotu • Kartkówki są niezapowiedziane i ich forma zależna jest od osób prowadzących zajęcia. Zamiast przeprowadzenia kartkówki osoba prowadząca zajęcia może "punktować" aktywność studentów na zajęciach. Sprawdziany z wykładów są wcześniej zapowiedziane i odbywają się w czasie trwania ćwiczeń laboratoryjnych. Nie przewiduje się możliwości poprawiania kartkówek i sprawdzianów. W przypadku nieobecności studenta, zaległa kartkówka jest przez niego pisana na najbliższych ćwiczeniach laboratoryjnych, a zaległe sprawdziany z wykładów w terminie podanym przez wykładowcę. W przypadku oceny programów, osoba prowadząca zajęcia ma prawo do zweryfikowania autorstwa oddawanego programu w sposób, jaki uzna za odpowiedni. Przekroczenie terminu oddania programu powoduje obniżenie jego oceny (liczby punktów) o 0.5 za każdy tydzień opóźnienia (zaokrąglane na niekorzyść studenta).). Ocena za działający poprawnie program i prawidłowo napisane sprawozdanie, nie może spaść poniżej 3.0.
Regulamin przedmiotu • Przedmiot kończy się egzaminem. Warunkiem dopuszczenia do egzaminu jest wcześniejsze uzyskanie zaliczenia przedmiotu. Egzamin składa się z części pisemnej i części ustnej. Student zostaje dopuszczony do części ustnej po zdaniu części pisemnej. W czasie trwania egzaminu student zobowiązany jest do posiadania przy sobie dowolnego dokumentu tożsamości z aktualnym zdjęciem i okazania go na żądanie osoby egzaminującej.
Istnieje możliwość uzyskania całkowitego lub częściowego (tylko z części pisemnej) zwolnienia z egzaminu. Warunkiem jest uzyskanie odpowiedniej oceny na zaliczenie. Regulamin przedmiotu
Regulamin przedmiotu • Posiadanie pozytywnej oceny końcowej z egzaminu jest warunkiem koniecznym do uczestnictwa w zajęciach z przedmiotu Programowanie Komputerów odbywających się na semestrze II. W przypadkach nieobjętych tym regulamine decyduje wykładowca przedmiotu.
Historia komputerów • 1623-24 Wilhelm Schickard - pierwszy mechaniczny kalkulator. • 1642 francuski filozof i matematyk Błażej Pascal (Blaise Pascal) zbudował mechaniczną maszynę dodającą. • 1670 Gottfried Wilhelm Leibnitz udoskonalił tę maszynę uzupełniając jej możliwości o mnożenie. • 1804 Joseph Marie Jacquard – krosna z perforowanymi płytkami do sterowania procesem tkania. • lata 80 XIX wieku - amerykański statystyk Herman Hollerith wykorzystał tę ideę do automatycznego przetwarzania danych.
Historia komputerów • 1822 roku brytyjski matematyk i wynalazca Charles Babbage opracował zasady działania nowoczesnego komputera cyfrowego. • 1847 George Boole opublikował pracę „The Mathematical Analysis of Logic: Being an Essay Towards a Calculus of Deductive Reasoning” - podstawy logiki jako działu matematyki. • 1939-1944 Howard Aiken, matematyk z uniwersytetu Harvard, skonstruował cyfrowy komputer - elektromechaniczny, sterowany programem na papierowej rolce (Harvard Mark I). • 1936-1949, Konrad Zuse opracował w Niemczech serię czterech komputerów, Z1-Z4 (Z1 - mechaniczny, pozostałe elektromechaniczne). • 1945 roku został zbudowany komputer według koncepcji węgiersko-amerykańskiego matematyka Johna von Neumanna: Zarówno program, jak i dane przechowywane są w takich komputerach w pamięci.
Historia komputerów • 1946 – ENIAC, lampowy • koniec lat 50 – tranzystory • koniec lat 60 – układy scalone • połowa lat 70 – pierwszy mikroprocesor ogólnego zastosowania, początek szybkiego wzrostu mocy obliczeniowych.
Komputer • Procesor • Zadania, możliwości • Język maszynowy • Słowo komputerowe
Komputer • Pamięć • Przeznaczenie pamięci operacyjnej (von Neumann) • Struktura pamięci: Bit, Bajt, • Sposoby reprezentowania obiektów w PaO • Adresowanie • Rodzaje pamięci, przeznaczenie i parametry • ROM – Read Only Memory • RAM – Random Access Memory • cena, typ, prędkość pamięci, pojemność (kB, MB, GB) • (Cache Memory – nie zawsze tam, gdzie na schemacie)
Komputer • Urządzenia wejścia/wyjścia • Urządzenia wewnętrzne • Interfejsy urządzeń zewnętrznych
Komputer • Urządzenia wejścia/wyjścia (typowe) • klawiatura • monitor • pamięci masowe • interfejsy komunikacyjne • urządzenia wskazujące • urządzenia akwizycji obrazu • drukarki • karty dźwiękowe • uniwersalne interfejsy urządzeń (RS-232, USB, …) • interfejsy dedykowane ( -> ABS, … :-)
Komputer • Jak realizowane są programy w komputerze? • Komputer jako synteza sprzętu i oprogramowania. • Oprogramowanie systemowe i użytkowe. • Możliwości, zalety i wady współczesnych komputerów.
Języki programowania • Język maszynowy (1GL) • Assembler (2GL), translator • Języki wysokiego poziomu (3GL) • FLOW-MATIC - 1952 Grace Hopper. FORTRAN (IBM) - w 1954 roku rozpoczęto prace, zakończono w 1957. 1958 - ALGOL. 1959 – COBOL. przełom lat 50 i 60 LISP. 1963 PL/I. • połowa lat 60 BASIC (Beginner's All-Purpose Symbolic Instruction Code) • koniec lat 60 Pascal (Niklaus Wirth) • 1972 C (Dennis M. Ritchie, AT&T Bell Laboratories) • 1975 Ada • początek lat 80” C++ (Bjarne Stroustrup, AT&T Bell Laboratories)
Języki programowania • 4GL - Języki zapytań zbliżone do do języka naturalnego (SQL, QBE) • 5GL – Prolog
Języki programowania • Pojęcie translatora • interpreter • kompilator • kompilator skrośny (cross-compiler)
Rozwiązywanie zadań z użyciem komputera • Definicja problemu (język naturalny) • Analiza zadania (język naturalny) • Algorytm rozwiązania (język naturalny, schemat blokowy, pseudo-kod) • Kod źródłowy programu (język programowania) • Program wykonywalny (język maszynowy) • Uruchomiony program wykonywalny • Koszty błędów na poszczególnych etepach • Rola testowania i uruchamiania • Błędy kompilacji, błędy wykonania programu
Pascal - język programowania • Definicja języka • alfabet • zbiór słów kluczowych • syntaktyka (składnia) • semantyka
program nazwa; … begin pierwsza instrukcja; druga instrukcja; ... ostatnia instrukcja end. nagłówek programu sekcja deklaracji pętla główna | | instrukcje pętli głównej | | koniec p.g. i programu Pascal – ogólna struktura
Pascal – pierwszy przykład program hello; begin writeln(’Hello world’) end. • słowo kluczowe, identyfikator, podprogram
Identyfikatory • Identyfikator jest ciągiem znaków z następującego zbioru: • litery a-z, A-Z (duże i małe litery nie są w Pascalu rozróżniane, winnych językach czasami są) • cyfry 0-9 • znak podkreślenia _
Identyfikatory • Pierwszym znakiem identyfikatora nie może być żadna cyfra. • Identyfikator nie może być identyczny z żadnym ze słów kluczowych języka Pascal. • Identyfikator definiowany przez użytkownika nie powinien być jednobrzmiący z nazwą istniejącego podprogramu z biblioteki (np. writeln), chociaż da się tak zrobić. • Język Pascal nie nakłada żadnego ograniczenia na długość identyfikatora. Jednak wersja Turbo Pascal odróżnia tylko początkowe 63 znaki indentyfikatora.
Poprawne: x Xmax Xk_10 zmienna5 r2002m2 R2d2 PaScAl pe4 Q_3_4 Błędne: 6 2zmienna program k-2 wartość a b 2R2D pi.3 Do #4 Identyfikatory
Komentarze (* komentarz – stara składnia *) { komentarz } • Nie mieszaj obu typów komentarzy • Używaj tylko { komentarza } • Po co nam komentarz?
Zmienne • Co to jest zmienna • nazwa • typ • rozmiar • zbiór operacji • adres • wartość
Deklaracja zmiennej var nazwa_zmiennej: typ_zmiennej; np.: var i:integer; var s:string;
Przypomnienie – systemy dziesiątkowy, dwójkowy, szesnastkowy • To było w gimnazjum czy w liceum?
Deklaracja zmiennej program przyklad_1; var k:integer; begin k:=5; { od tego miejsca k pamięta liczbę 5 } k:=k+k; { od tego miejsca k pamięta liczbę 5+5=10 } writeln(k) { wypisanie k, czyli 10 } end.
Instrukcja przypisania nazwa_zmiennej := nowa_wartość; np.: k := 1; k := k + 1;
Typy proste typy porządkowe typy rzeczywiste Typy złożone tablice rekordy … Ypy standardowe (predefiniowane) Typy niestandardowe Typy
Standardowe porządkowe typy proste (kompilator 16-bit) • Typy całkowite shortint [-128..127](liczba 8-bitowa ze znakiem) integer [-32768..32768](16-b ze zn.) longint [-2147483648..2147483647] (32-b ze zn.) byte [0..255](8-b bez znaku) word [0..65535](16-b bez znaku) • Typ znakowy char [#0,..., ’0’, ’1’,..., ’A’, ’B’,..., #255] (8-b) • Typ logiczny boolean [FALSE, TRUE] (8-b)
Standardowe rzeczywistetypy proste real [2.9e-39..1.7e38] (11..12cyfr dziesiętnych, 6B) single [1.5e-45..3.4e38](7..8 cyfr, 4B) double [5.0e-324..1.7e308] (15..16 cyfr, 8B) extended [3.4e-4932..1.1e4932] (19..20 cyfr, 10B) comp [-9.2e18..9.2e18] (19-20 cyfr, tylko całkowite, 8B) • Ograniczenia typów rzeczywistych i porządkowych • stałe MaxInt i MaxLongint
Zapisywanie liczb całkowitych • ciąg cyfr dziesiętnych, ewewentualnie poprzedzony znakiem “-” (minus) 123, -84, 0, 789, 00004 • ciąg cyfr szesnastkowych poprzedzony znakiem “$” $10 (czyli dziesiętnie 16), $ff, $FF (255), $5 (5)
Zakres liczb całkowitych • Kompilator wykryje tylko niektóre błędy program typy_1; var x: longint; y: integer; begin x := 40000; { w zakresie longint, ale poza integer } y := x; { y nie potrafi przechować 40000 } writeln(y) { wypisze się -25536 } end.
Zakres liczb całkowitych • Kompilator wykryje tylko niektóre błędy program typy_2; var x,y: integer; { tak, można wymienić kilka zmiennych } begin x := 200; { w zakresie integer } y := x*x; { wynik poza zakresem y } writeln(y) { wypisze się -25536 } end.
Zapisywanie liczb rzeczywistych • Zapis dziesiętny .14, -2.71828, 4.0, 4, -9999.999 • Zapis wyładniczy <mantysa>E<cecha> (=mantysa*10cecha) 0.345E-5 (=0,00000345 =0,345*10-5) 345E6 (=345000000 =345*106) 3.45E+8 (=345000000 =3,45*108)
Konwersje typów liczbowych • automatyczna konwersja całkowita -> rzeczywistej • brak konwersji automatycznej rzeczywista -> całkowita trunc(l_rzecz) round(l_rzecz)
Zapisywanie znaków • pojedynczy znak ujęty w apostrofy ’a’, ’0’, ’+’, ’#’ • kod znaku, poprzedzony znakiem „#” #0, #1, #10, #13, #27, #65 (to samo co ’A’), #255
Kody ASCII - kody sterujące Dec Hex Ctl Name Control Meaning | Dec Hex Ctl Name Control Meaning --- --- --- ---- -------------------- | --- --- --- ---- -------------------- 0 00 ^@ NUL null (end string) | 16 10 ^P DLE data line escape 1 01 ^A SOH start of heading | 17 11 ^Q DC1 dev ctrl 1 (X-ON) 2 02 ^B STX start of text | 18 12 ^R DC2 device ctrl 2 3 03 ^C ETX end of text | 19 13 ^S DC3 dev ctrl 3 (X-OFF) 4 04 ^D EOT end of transmission | 20 14 ^T DC4 device ctrl 4 5 05 ^E ENQ enquiry | 21 15 ^U NAK negative acknowledge 6 06 ^F ACK acknowledge | 22 16 ^V SYN synchronous idle 7 07 ^G BEL bell | 23 17 ^W ETB end transmit block 8 08 ^H BS backspace | 24 18 ^X CAN cancel 9 09 ^I HT TAB horizontal tab | 25 19 ^Y EM end of medium 10 0a ^J LF line feed | 26 1a ^Z SUB substitute 11 0b ^K VT vertical tab | 27 1b ^[ ESC escape 12 0c ^L FF form feed | 28 1c ^\ FS file separator 13 0d ^M CR carriage return | 29 1d ^] GS group separator 14 0e ^N SO shift out | 30 1e ^^ RS record separator 15 0f ^O SI shift in | 31 1f ^_ US unit separator
Kody ASCII – pozostałe 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 00 10 20 ! " # $ % & ' ( ) * + , - . / 30 0 1 2 3 4 5 6 7 8 9 : ; < = > ? 40 @ A B C D E F G H I J K L M N O 50 P Q R S T U V W X Y Z [ \ ] ^ _ 60 ` a b c d e f g h i j k l m n o 70 p q r s t u v w x y z { | } ~ • Zapamiętaj układ znaków! • cyfry • małe litery (alfabet łaciński / angielski) • duże litery
Znak a jego kod • ord(znak) chr(liczba) program konwersja; var x: integer; c: char; begin writeln(‘podaj cyfre’); readln(x); c := chr(x+ord(‘0’)); writeln(c); end.
Zapisywanie wartości logicznych • tylko dwie możliwości false true