Informatyka 1 Wykład I Wprowadzenie Robert Muszyński ZPCiR IIAiR PWr pokój 331 budynek C3 email: mucha@diablo.ict.pwr.wroc.pl Copyright c 2001 2005 Robert Muszyński Niniejszy dokument zawiera materiały do wykładu na temat podstaw programowania w językach wysokiego poziomu. Jest on udostępniony pod warunkiem wykorzystania wyłącznie do własnych, prywatnych potrzeb i może być kopiowany wyłącznie w całości, razem ze stroną tytułową. Skład FoilTEX
Wprowadzenie 1 Literatura 1. W. Paluszyński, Kurs informatyki z ćwiczeniami: Unix, Pascal i struktury danych, Oficyna Wydawnicza Politechniki Wrocławskiej, Wrocław 1994. 2. R. Kott, Programowanie w języku Pascal, WNT, Warszawa 1990. 3. B. W. Kernighan, R. Pike, Lekcja programowania (w serii Inżynieria oprogramowania), WNT Warszawa 2002 4. N. Wirth, Algorytmy + struktury danych = programy, WNT, Warszawa 2000. 5. T. Cormen, C. Leiserson, R. Rivest, Wprowadzenie do algorytmów, WNT Warszawa 1998. 6. M. Gierliński, Programowanie w Pascalu, Edition 2000, Kraków 1999. 7. D. Cameron, GNU Emacs (w serii Leksykon kieszonkowy), Helion, Gliwice 2002.
Wprowadzenie 2 W sieci 1. www.zpcir.ict.pwr.wroc.pl strona Zakładu Podstaw Cybernetyki i Robotyki 2. www.zpcir.ict.pwr.wroc.pl/ witold/info1 strona kursu Informatyka 1 3. diablo.ict.pwr.wroc.pl strona studenckiego serwera diablo 4. diablo.ict.pwr.wroc.pl/pomoc strona pomocy: studenci AiR studentom AiR
Wprowadzenie 3 Zawartość tematyczna wykładu System operacyjny Unix wykonywanie podstawowych operacji. Posługiwanie się edytorem tekstów GNU Emacs. Język Pascal: gramatyka języka, kompilacja programów. Typy, wyrażenia, operatory, instrukcje. Metody konstruowania algorytmów. Procedury i funkcje; moduły. Reguły stylu programowania, dokumentacja programu. Iteracje i rekurencje. Tablice i rekordy. Wskaźniki, listy. Przeszukiwanie i sortowanie tabic. Operowanie tekstami. Efektywność programów.
Wprowadzenie 4 Środowisko pracy Laboratoria 103, 104, 127L, 127P kajki, kokosze milusie, melasie INTERNET serwer plików serwer sieciowy Laboratorium 07 okocim, żywiec, eb serwer plików diablo, panamint, inyo...
Topologia sieci Wprowadzenie (;-p) sta sha las sen tahoe kel ber ey mono limba rd stanfo diablo sequo ey inyo nc ha ia t min ana p ama rgo sa ma libu ola itn wh Skład FoilTEX c R. Muszyński, 3 paz dziernika 2005 roku 5
Wprowadzenie 6 Etapy pracy nad programem Specyfikacja zadania Praca nad algorytmem Edycja programu Kompilacja i konsolidacja programu Uruchamianie i odpluskwianie programu Dokumentacja!!!
Wprowadzenie 7 Edytor GNU Emacs Podstawowe komendy edytora GNU Emacs 94-9-1 Edytor GNU Emacs jest wywoływany komendą: emacs nazwa pliku. Przemieszczanie kursora Ctrl-B, Ctrl-N, Ctrl-P, Ctrl-F Przemieszczanie kursora o jeden znak ( ) ESC F Słowo do przodu Ctrl-A Kursor na początek linii ESC B Słowo do tyłu Ctrl-E Kursor na koniec linii ESC < Kursor na początek pliku Ctrl-V Przejście do następnej strony ESC > Kursor na koniec pliku ESC V Przejście do poprzedniej strony ESC X goto-line Przejście do linii o numerze podanym przez użytkownika Kasowanie znaków DEL Kasowanie znaku przed kursorem ESC DEL Kasowanie słowa przed kursorem Ctrl-D Kasowanie znaku na pozycji kursora ESC D Kasowanie słowa za kursorem Ctrl-K Kasowanie znaków od kursora do końca linii Poszukiwanie i zamiana ciągu znaków Ctrl-S ciąg znaków ESC Przyrostowe poszukiwanie w przód Ctrl-R ciąg znaków ESC Przyrostowe poszukiwanie w tył ESC % ciąg znaków RETURN nowy ciąg RETURN Warunkowa zamiana ci agu znaków: Operacje na regionach (region - obszar między markerem a kursorem) Ctrl-@ Ustawienie markera (lub Ctrl-SPACJA) Ctrl-W Skasowanie regionu i zapis jego zawartości do bufora ESC W Zapis regionu do bufora bez jego kasowania Ctrl-Y Skopiowanie zawartości regionu w miejsce położenia kursora
Wprowadzenie 8 Operacje na oknach Ctrl-X 2 Otwarcie drugiego okna Ctrl-X 0 Zamknięcie aktywnego okna Ctrl-X O Przejście do drugiego okna Ctrl-X 1 Zamkniȩcie wszystkich okien oprócz aktywnego Operacje na plikach i buforach plikowych Ctrl-X Ctrl-S Zapis bufora plikowego na dysk Ctrl-X Ctrl-F Otwarcie nowego pliku Ctrl-X Ctrl-W Utworzenie i zapis do pliku o nowej nazwie Ctrl-X I Wstawienie zawartości innego pliku do aktywnego bufora plikowego Pomoc Ctrl-H Klawisz pomocy Ctrl-H T wyświetla samouczek ESC X describe-function wyświetla opis funkcji o podanej nazwie (Ctrl-H F) ESC X describe-key wyświetla nazwę i opis funkcji przypisanej do klawisza (Ctrl-H K) ESC X apropos wyświetla nazwy funkcji ze słowem kluczowym (Ctrl-H A) Inne ważne komendy Ctrl-G Przerwanie komendy Ctrl-L Odświeżenie ekranu Ctrl-X U Odtworzenie zawartości bufora sprzed ostatniej zmiany ESC! Uruchomienie shella w buforze edytora Ctrl-X Ctrl-C Zakończenie pracy z edytorem
Wprowadzenie 9 Przykładowy program w Pascalu { 1} PROGRAM fib(input,output); { 2} (* wylicza liczby Fibonacciego metoda iteracyjna *) { 3} { 4} VAR liczba: INTEGER; {liczba Fibon. do wyliczenia} { 5} p, p1, p2, i: INTEGER; { 6} { 7} BEGIN { 8} WRITELN( Program wylicza liczby Fibonacciego. ); { 9} WRITELN( Podaj ktora liczba ma byc wyliczona: ) {10} READLN(liczba); {11} IF (liczba < 0) {12} THEN {13} WRITELM( Zle, liczba nie moze byc ujemna!! ) {14} ELSE {15} BEGIN {16} p1 := 0; p2 := 1; {17} {18} FOR i := 2 TO liczba DO {19} BEGIN {20} p := p1 + p2; p1 := p2; p2 := p {21} END; {22} {23} WRITELN( Gotowe, fib(,liczba, )=,p); {24} WRITELN( Zycze milego popoludnia. ); {25} {26} END { if (liczba < 0) } {27} END. Nagłówek programu Komentarze Deklaracja zmiennych Program główny Wczytanie danych Kontrola poprawności danych Część obliczeniowa Wyświetlenie wyników
Wprowadzenie 10 Diagram programu START Przedstaw się. Wczytaj nr liczby do wyliczenia. Błędne dane wejściowe Czy nr dodatni? Nie Wyświetl komunikat o niepoprawnej wartości Tak p1 := 0; p2 := 1 Czy wyliczono żądaną liczbę? Nie p := p1 + p2; p1 := p2; p2 := p; Tak Wyświetl wynik STOP
Wprowadzenie 11 Kompilacja programów plik źródłowy program.p pc -o program program.p pc -c program.p plik object program.o pc program.p pc program.o plik binarny a.out pc -o program program.p plik binarny program
Wprowadzenie 12 komputer diablo Kompilacja programów pc prog.p = wynik: program binarny a.out rozróżniane duże i małe litery pc -L prog.p = wynik: program binarny a.out nie rozróżniane duże i małe litery pc -o prog prog.p = wynik: program binarny prog diablo 24: pc -L -o fibo fib.p pia paz 4 10:23:08 2002 fib.p: 9 readln(liczba); e 18480---------^--- Inserted ; 12 writelm( Zle, liczba nie moze byc ujemna!! ) E 18420-------------^--- Undefined procedure In program fib: E 18240 writelm undefined on line 12
Wprowadzenie 13 Kompilacja programów komputer inyo pc prog.p = wynik: program binarny a.out nie rozróżniane duże i małe litery pc -o prog prog.p = wynik: program binarny prog inyo 17: pc -o fibo fib.p /opt/pascal/bin/pc -o fibo fib.p FILE: fib.p 7 10.000 1 {10} READLN(liczba); ^ **** ERROR # 1 MISSING ; (026) FILE: fib.p 9 13.000 1 {13} WRITELM( Zle, liczba nie moze byc ujemna!! ) ^ **** ERROR # 2 IDENTIFIER NOT DEFINED (014) NUMBER OF ERRORS = 2 NUMBER OF WARNINGS = 0 PROCESSOR TIME 0: 0: 0 ELAPSED TIME 0: 0: 0 NUMBER OF LINES = 27 LINES/MINUTE = 16200.0 NUMBER OF NOTES = 0 pc: Errors detected; no link done
Wprowadzenie 14 Uruchamianie programów diablo 25: fibo (* alternatywnie./fibo *) Program wylicza liczby Fibonacciego. Podaj ktora liczba ma byc wyliczona: 7 Gotowe, fib( 7)=13 Zycze milego popoludnia. diablo 26: fibo Program wylicza liczby Fibonacciego. Podaj ktora liczba ma byc wyliczona: 432424234 Gotowe, fib( 432424234)=1002448503 Zycze milego popoludnia.
Wprowadzenie 15 diablo 25: fibo Program wylicza liczby Fibonacciego. Podaj ktora liczba ma byc wyliczona: 100 Gotowe, fib( 100)=-980107325 Zycze milego popoludnia. diablo 26: fibo Program wylicza liczby Fibonacciego. Podaj ktora liczba ma byc wyliczona: -13 Zle, liczba nie moze byc ujemna!!