Informatyka 1 - Laboratorium...
Transcript of Informatyka 1 - Laboratorium...
Informatyka 1Wykład I
Wprowadzenie
Robert MuszyńskiZPCiR IIAiR PWr
pokój 331 budynek C3
email: [email protected]
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 onudostę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
Literatura1. 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 opro-gramowania), WNT Warszawa 2002
4. N. Wirth, Algorytmy + struktury danych = programy, WNT, Warszawa 2000.
5. T. Cormen, C. Leiserson, R. Rivest, Wprowadzenie do algorytmów, WNTWarszawa 1998.
6. M. Gierliński, Programowanie w Pascalu, Edition 2000, Kraków 1999.
7. D. Cameron, GNU Emacs (w serii Leksykon kieszonkowy), Helion, Gliwice2002.
– Skład FoilTEX – Indeks c© R. Muszyński, 3 pazdziernika 2005 roku
Wprowadzenie 1
Literatura1. 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 opro-gramowania), WNT Warszawa 2002
4. N. Wirth, Algorytmy + struktury danych = programy, WNT, Warszawa 2000.
5. T. Cormen, C. Leiserson, R. Rivest, Wprowadzenie do algorytmów, WNTWarszawa 1998.
6. M. Gierliński, Programowanie w Pascalu, Edition 2000, Kraków 1999.
7. D. Cameron, GNU Emacs (w serii Leksykon kieszonkowy), Helion, Gliwice2002.
– Skład FoilTEX – Indeks c© R. Muszyński, 3 pazdziernika 2005 roku
Wprowadzenie 1
Literatura1. 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 opro-gramowania), WNT Warszawa 2002
4. N. Wirth, Algorytmy + struktury danych = programy, WNT, Warszawa 2000.
5. T. Cormen, C. Leiserson, R. Rivest, Wprowadzenie do algorytmów, WNTWarszawa 1998.
6. M. Gierliński, Programowanie w Pascalu, Edition 2000, Kraków 1999.
7. D. Cameron, GNU Emacs (w serii Leksykon kieszonkowy), Helion, Gliwice2002.
– Skład FoilTEX – Indeks c© R. Muszyński, 3 pazdziernika 2005 roku
Wprowadzenie 1
Literatura1. 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 opro-gramowania), WNT Warszawa 2002
4. N. Wirth, Algorytmy + struktury danych = programy, WNT, Warszawa 2000.
5. T. Cormen, C. Leiserson, R. Rivest, Wprowadzenie do algorytmów, WNTWarszawa 1998.
6. M. Gierliński, Programowanie w Pascalu, Edition 2000, Kraków 1999.
7. D. Cameron, GNU Emacs (w serii Leksykon kieszonkowy), Helion, Gliwice2002.
– Skład FoilTEX – Indeks c© R. Muszyński, 3 pazdziernika 2005 roku
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
– Skład FoilTEX – Indeks c© R. Muszyński, 3 pazdziernika 2005 roku
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.
– Skład FoilTEX – Indeks c© R. Muszyński, 3 pazdziernika 2005 roku
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.
– Skład FoilTEX – Indeks c© R. Muszyński, 3 pazdziernika 2005 roku
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.
– Skład FoilTEX – Indeks c© R. Muszyński, 3 pazdziernika 2005 roku
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.
– Skład FoilTEX – Indeks c© R. Muszyński, 3 pazdziernika 2005 roku
Wprowadzenie ←↩ ↪→ 4
Środowisko pracy
Laboratoria 103, 104, 127L, 127P
kajki, kokosze milusie, melasie
– Skład FoilTEX – Indeks c© R. Muszyński, 3 pazdziernika 2005 roku
Wprowadzenie ←↩ ↪→ 4
Środowisko pracy
Laboratoria 103, 104, 127L, 127P
kajki, kokosze milusie, melasie
serwer sieciowy
– Skład FoilTEX – Indeks c© R. Muszyński, 3 pazdziernika 2005 roku
Wprowadzenie ←↩ ↪→ 4
Środowisko pracy
Laboratoria 103, 104, 127L, 127P
kajki, kokosze milusie, melasie
serwer sieciowyserwer plików
– Skład FoilTEX – Indeks c© R. Muszyński, 3 pazdziernika 2005 roku
Wprowadzenie ←↩ ↪→ 4
Środowisko pracy
Laboratoria 103, 104, 127L, 127P
kajki, kokosze milusie, melasie
serwer sieciowyserwer plików
INTERNET
– Skład FoilTEX – Indeks c© R. Muszyński, 3 pazdziernika 2005 roku
Wprowadzenie ←↩ ↪→ 4
Środowisko pracy
Laboratoria 103, 104, 127L, 127P
kajki, kokosze milusie, melasie
serwer sieciowyserwer plików
INTERNET
Laboratorium 07
okocim, żywiec, eb
– Skład FoilTEX – Indeks c© R. Muszyński, 3 pazdziernika 2005 roku
Wprowadzenie ←↩ ↪→ 4
Środowisko pracy
Laboratoria 103, 104, 127L, 127P
kajki, kokosze milusie, melasie
serwer sieciowyserwer plików
INTERNET
Laboratorium 07
okocim, żywiec, eb
...
diablo, panamint, inyo
serwer plików
– Skład FoilTEX – Indeks c© R. Muszyński, 3 pazdziernika 2005 roku
Wprowadzenie ←↩ ↪→ 4
Środowisko pracy
Laboratoria 103, 104, 127L, 127P
kajki, kokosze milusie, melasie
serwer sieciowyserwer plików
INTERNET
Laboratorium 07
okocim, żywiec, eb
...
diablo, panamint, inyo
serwer plików
– Skład FoilTEX – Indeks c© R. Muszyński, 3 pazdziernika 2005 roku
Wprowadzenie ←↩ ↪→ 5Topologia sieci (;-p)
panamintwhitney
amargosa
sequoia
diablo
inyo
– Skład FoilTEX – Indeks c© R. Muszyński, 3 pazdziernika 2005 roku
Wprowadzenie ←↩ ↪→ 5Topologia sieci (;-p)
panamintwhitney
amargosa
sequoia
diablo
inyo
panamintwhitney
amargosa
sequoia
diablo
inyo
– Skład FoilTEX – Indeks c© R. Muszyński, 3 pazdziernika 2005 roku
Wprowadzenie ←↩ ↪→ 5Topologia sieci (;-p)
panamintwhitney
amargosa
sequoia
diablo
inyo
panamintwhitney
amargosa
sequoia
diablo
inyo
malib
umono
limba
tahoe
olanch
a
stanford
berkeley
lassen
shasta
– Skład FoilTEX – Indeks c© R. Muszyński, 3 pazdziernika 2005 roku
Wprowadzenie ←↩ ↪→ 6
Etapy pracy nad programem
• Specyfikacja zadania
– Skład FoilTEX – Indeks c© R. Muszyński, 3 pazdziernika 2005 roku
Wprowadzenie ←↩ ↪→ 6
Etapy pracy nad programem
• Specyfikacja zadania
• Praca nad algorytmem
– Skład FoilTEX – Indeks c© R. Muszyński, 3 pazdziernika 2005 roku
Wprowadzenie ←↩ ↪→ 6
Etapy pracy nad programem
• Specyfikacja zadania
• Praca nad algorytmem
• Edycja programu
– Skład FoilTEX – Indeks c© R. Muszyński, 3 pazdziernika 2005 roku
Wprowadzenie ←↩ ↪→ 6
Etapy pracy nad programem
• Specyfikacja zadania
• Praca nad algorytmem
• Edycja programu
• Kompilacja i konsolidacja programu
– Skład FoilTEX – Indeks c© R. Muszyński, 3 pazdziernika 2005 roku
Wprowadzenie ←↩ ↪→ 6
Etapy pracy nad programem
• Specyfikacja zadania
• Praca nad algorytmem
• Edycja programu
• Kompilacja i konsolidacja programu
• Uruchamianie i odpluskwianie programu
– Skład FoilTEX – Indeks c© R. Muszyński, 3 pazdziernika 2005 roku
Wprowadzenie ←↩ ↪→ 6
Etapy pracy nad programem
• Specyfikacja zadania
• Praca nad algorytmem
• Edycja programu
• Kompilacja i konsolidacja programu
• Uruchamianie i odpluskwianie programu
– Skład FoilTEX – Indeks c© R. Muszyński, 3 pazdziernika 2005 roku
Wprowadzenie ←↩ ↪→ 6
Etapy pracy nad programem
• Specyfikacja zadania
• Praca nad algorytmem
• Edycja programu
• Kompilacja i konsolidacja programu
• Uruchamianie i odpluskwianie programu
• Dokumentacja!!!
– Skład FoilTEX – Indeks c© R. Muszyński, 3 pazdziernika 2005 roku
Wprowadzenie 7
Edytor GNU EmacsPodstawowe komendy edytora GNU Emacs 94-9-1
Edytor GNU Emacs jest wywoływany komendą: emacs nazwa pliku.
Przemieszczanie kursoraCtrl-B, Ctrl-N, Ctrl-P, Ctrl-F — Przemieszczanie kursora o jeden znak (←↓↑→)ESC F — Słowo do przodu Ctrl-A — Kursor na początek liniiESC B — Słowo do tyłu Ctrl-E — Kursor na koniec liniiESC < — Kursor na początek pliku Ctrl-V — Przejście do następnej stronyESC > — Kursor na koniec pliku ESC V — Przejście do poprzedniej stronyESC X goto-line — Przejście do linii o numerze podanym przez użytkownika
Kasowanie znakówDEL — Kasowanie znaku przed kursorem ESC DEL — Kasowanie słowa przed kursoremCtrl-D — Kasowanie znaku na pozycji kursora ESC D — Kasowanie słowa za kursoremCtrl-K — Kasowanie znaków od kursora do końca linii
Poszukiwanie i zamiana ciągu znakówCtrl-S ciąg znaków ESC — Przyrostowe poszukiwanie w przódCtrl-R ciąg znaków ESC — Przyrostowe poszukiwanie w tyłESC % ciąg znaków RETURN nowy ciąg RETURN — Warunkowa zamiana ciagu 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 buforaESC W — Zapis regionu do bufora bez jego kasowaniaCtrl-Y — Skopiowanie zawartości regionu w miejsce położenia kursora
– Skład FoilTEX – Indeks c© R. Muszyński, 3 pazdziernika 2005 roku
Wprowadzenie 8
Operacje na oknachCtrl-X 2 — Otwarcie drugiego okna Ctrl-X O — Przejście do drugiego oknaCtrl-X 0 — Zamknięcie aktywnego okna Ctrl-X 1 — Zamkniecie wszystkich okien oprócz aktywnego
Operacje na plikach i buforach plikowychCtrl-X Ctrl-S — Zapis bufora plikowego na dysk Ctrl-X Ctrl-F — Otwarcie nowego plikuCtrl-X Ctrl-W — Utworzenie i zapis do pliku o nowej nazwieCtrl-X I — Wstawienie zawartości innego pliku do aktywnego bufora plikowego
Pomoc Ctrl-H — Klawisz pomocyCtrl-H T — wyświetla samouczekESC 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 komendyCtrl-L — Odświeżenie ekranuCtrl-X U — Odtworzenie zawartości bufora sprzed ostatniej zmianyESC ! — Uruchomienie shella w buforze edytoraCtrl-X Ctrl-C — Zakończenie pracy z edytorem
– Skład FoilTEX – Indeks c© R. Muszyński, 3 pazdziernika 2005 roku
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.
– Skład FoilTEX – Indeks c© R. Muszyński, 3 pazdziernika 2005 roku
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
– Skład FoilTEX – Indeks c© R. Muszyński, 3 pazdziernika 2005 roku
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.
• Komentarze
– Skład FoilTEX – Indeks c© R. Muszyński, 3 pazdziernika 2005 roku
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.
• Deklaracja zmiennych
– Skład FoilTEX – Indeks c© R. Muszyński, 3 pazdziernika 2005 roku
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.
• Program główny
– Skład FoilTEX – Indeks c© R. Muszyński, 3 pazdziernika 2005 roku
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.
• Program główny? Wczytanie danych
– Skład FoilTEX – Indeks c© R. Muszyński, 3 pazdziernika 2005 roku
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.
• Program główny
? Kontrola poprawności danych
– Skład FoilTEX – Indeks c© R. Muszyński, 3 pazdziernika 2005 roku
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.
• Program główny
? Część obliczeniowa
– Skład FoilTEX – Indeks c© R. Muszyński, 3 pazdziernika 2005 roku
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.
• Program główny
? Wyświetlenie wyników
– Skład FoilTEX – Indeks c© R. Muszyński, 3 pazdziernika 2005 roku
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
– Skład FoilTEX – Indeks c© R. Muszyński, 3 pazdziernika 2005 roku
Wprowadzenie ←↩ ↪→ 10
Diagram programu
Przedstaw się.Wczytaj nr liczby do wyliczenia.
START
– Skład FoilTEX – Indeks c© R. Muszyński, 3 pazdziernika 2005 roku
Wprowadzenie ←↩ ↪→ 10
Diagram programu
Przedstaw się.Wczytaj nr liczby do wyliczenia.
START
Czy nrdodatni?
– Skład FoilTEX – Indeks c© R. Muszyński, 3 pazdziernika 2005 roku
Wprowadzenie ←↩ ↪→ 10
Diagram programu
Przedstaw się.Wczytaj nr liczby do wyliczenia.
START
Czy nrdodatni?
Tak
p1 := 0; p2 := 1
– Skład FoilTEX – Indeks c© R. Muszyński, 3 pazdziernika 2005 roku
Wprowadzenie ←↩ ↪→ 10
Diagram programu
Przedstaw się.Wczytaj nr liczby do wyliczenia.
START
Czy nrdodatni?
Tak
p1 := 0; p2 := 1
Czy wyliczonożądaną liczbę?
– Skład FoilTEX – Indeks c© R. Muszyński, 3 pazdziernika 2005 roku
Wprowadzenie ←↩ ↪→ 10
Diagram programu
Przedstaw się.Wczytaj nr liczby do wyliczenia.
START
Czy nrdodatni?
Tak
p1 := 0; p2 := 1
Czy wyliczonożądaną liczbę?
Tak
Wyświetl wynik
STOP
– Skład FoilTEX – Indeks c© R. Muszyński, 3 pazdziernika 2005 roku
Wprowadzenie ←↩ ↪→ 10
Diagram programu
Przedstaw się.Wczytaj nr liczby do wyliczenia.
START
Czy nrdodatni?
Tak
p1 := 0; p2 := 1
Czy wyliczonożądaną liczbę?
Tak
Wyświetl wynik
STOP
Nie p := p1 + p2;p1 := p2;p2 := p;
– Skład FoilTEX – Indeks c© R. Muszyński, 3 pazdziernika 2005 roku
Wprowadzenie ←↩ ↪→ 10
Diagram programu
Przedstaw się.Wczytaj nr liczby do wyliczenia.
START
Czy nrdodatni?
Tak
p1 := 0; p2 := 1
Czy wyliczonożądaną liczbę?
Tak
Wyświetl wynik
STOP
Nie p := p1 + p2;p1 := p2;p2 := p;
Nie
Błędne dane wejściowe
Wyświetl komunikato niepoprawnej wartości
– Skład FoilTEX – Indeks c© R. Muszyński, 3 pazdziernika 2005 roku
Wprowadzenie ←↩ ↪→ 11
Kompilacja programów
plik źródłowy ”program.p”
– Skład FoilTEX – Indeks c© R. Muszyński, 3 pazdziernika 2005 roku
Wprowadzenie ←↩ ↪→ 11
Kompilacja programów
plik źródłowy ”program.p”
plik object ”program.o”
pc -c program.p
– Skład FoilTEX – Indeks c© R. Muszyński, 3 pazdziernika 2005 roku
Wprowadzenie ←↩ ↪→ 11
Kompilacja programów
plik źródłowy ”program.p”
plik object ”program.o”
pc -c program.p
plik binarny ”a.out”
pc program.o
– Skład FoilTEX – Indeks c© R. Muszyński, 3 pazdziernika 2005 roku
Wprowadzenie ←↩ ↪→ 11
Kompilacja programów
plik źródłowy ”program.p”
plik object ”program.o”
pc -c program.p
plik binarny ”a.out”
pc program.o
pc program.p
– Skład FoilTEX – Indeks c© R. Muszyński, 3 pazdziernika 2005 roku
Wprowadzenie ←↩ ↪→ 11
Kompilacja programów
plik źródłowy ”program.p”
plik object ”program.o”
pc -c program.p
plik binarny ”a.out”
pc program.o
pc program.p
plik binarny ”program”
pc -o program program.p
pc -o program program.p
– Skład FoilTEX – Indeks c© R. Muszyński, 3 pazdziernika 2005 roku
Wprowadzenie ←↩ ↪→ 12
Kompilacja programów
• komputer diablo'
&
$
%
pc prog.p ⇐= wynik: program binarny a.outrozróżniane duże i małe litery
pc -L prog.p ⇐= wynik: program binarny a.outnie rozróżniane duże i małe litery
pc -o prog prog.p ⇐= wynik: program binarny prog
– Skład FoilTEX – Indeks c© R. Muszyński, 3 pazdziernika 2005 roku
Wprowadzenie ←↩ ↪→ 12
Kompilacja programów
• komputer diablo'
&
$
%
pc prog.p ⇐= wynik: program binarny a.outrozróżniane duże i małe litery
pc -L prog.p ⇐= wynik: program binarny a.outnie rozróżniane duże i małe litery
pc -o prog prog.p ⇐= wynik: program binarny prog
'
&
$
%
diablo 24: pc -L -o fibo fib.ppia 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 procedureIn program fib:E 18240 writelm undefined on line 12
– Skład FoilTEX – Indeks c© R. Muszyński, 3 pazdziernika 2005 roku
Wprowadzenie ←↩ ↪→ 13
Kompilacja programów
• komputer inyo'
&
$
%
pc prog.p ⇐= wynik: program binarny a.outnie rozróżniane duże i małe litery
pc -o prog prog.p ⇐= wynik: program binarny prog
– Skład FoilTEX – Indeks c© R. Muszyński, 3 pazdziernika 2005 roku
Wprowadzenie ←↩ ↪→ 13
Kompilacja programów
• komputer inyo'
&
$
%
pc prog.p ⇐= wynik: program binarny a.outnie 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.pFILE: fib.p
7 10.000 1 {10} READLN(liczba);^
**** ERROR # 1 MISSING ’;’ (026)FILE: fib.p
9 13.000 1 {13} WRITELM(’Zle, liczba niemoze byc ujemna!!’)
^**** ERROR # 2 IDENTIFIER NOT DEFINED (014)
NUMBER OF ERRORS = 2 NUMBER OF WARNINGS = 0PROCESSOR TIME 0: 0: 0 ELAPSED TIME 0: 0: 0NUMBER OF LINES = 27 LINES/MINUTE = 16200.0NUMBER OF NOTES = 0
pc: Errors detected; no link done
– Skład FoilTEX – Indeks c© R. Muszyński, 3 pazdziernika 2005 roku
Wprowadzenie ←↩ ↪→ 14
Uruchamianie programów'
&
$
%
diablo 25:
– Skład FoilTEX – Indeks c© R. Muszyński, 3 pazdziernika 2005 roku
Wprowadzenie ←↩ ↪→ 14
Uruchamianie programów'
&
$
%
diablo 25: fibo (* alternatywnie ./fibo *)
– Skład FoilTEX – Indeks c© R. Muszyński, 3 pazdziernika 2005 roku
Wprowadzenie ←↩ ↪→ 14
Uruchamianie programów'
&
$
%
diablo 25: fibo (* alternatywnie ./fibo *)Program wylicza liczby Fibonacciego.Podaj ktora liczba ma byc wyliczona:
– Skład FoilTEX – Indeks c© R. Muszyński, 3 pazdziernika 2005 roku
Wprowadzenie ←↩ ↪→ 14
Uruchamianie programów'
&
$
%
diablo 25: fibo (* alternatywnie ./fibo *)Program wylicza liczby Fibonacciego.Podaj ktora liczba ma byc wyliczona:7
– Skład FoilTEX – Indeks c© R. Muszyński, 3 pazdziernika 2005 roku
Wprowadzenie ←↩ ↪→ 14
Uruchamianie programów'
&
$
%
diablo 25: fibo (* alternatywnie ./fibo *)Program wylicza liczby Fibonacciego.Podaj ktora liczba ma byc wyliczona:7Gotowe, fib( 7)=13Zycze milego popoludnia.diablo 26:
– Skład FoilTEX – Indeks c© R. Muszyński, 3 pazdziernika 2005 roku
Wprowadzenie ←↩ ↪→ 14
Uruchamianie programów'
&
$
%
diablo 25: fibo (* alternatywnie ./fibo *)Program wylicza liczby Fibonacciego.Podaj ktora liczba ma byc wyliczona:7Gotowe, fib( 7)=13Zycze milego popoludnia.diablo 26: fiboProgram wylicza liczby Fibonacciego.Podaj ktora liczba ma byc wyliczona:432424234Gotowe, fib( 432424234)=1002448503Zycze milego popoludnia.
– Skład FoilTEX – Indeks c© R. Muszyński, 3 pazdziernika 2005 roku
Wprowadzenie ←↩ ↪→ 15
'
&
$
%
diablo 25: fiboProgram wylicza liczby Fibonacciego.Podaj ktora liczba ma byc wyliczona:100Gotowe, fib( 100)=-980107325Zycze milego popoludnia.diablo 26:
– Skład FoilTEX – Indeks c© R. Muszyński, 3 pazdziernika 2005 roku
Wprowadzenie ←↩ ↪→ 15
'
&
$
%
diablo 25: fiboProgram wylicza liczby Fibonacciego.Podaj ktora liczba ma byc wyliczona:100Gotowe, fib( 100)=-980107325Zycze milego popoludnia.diablo 26: fiboProgram wylicza liczby Fibonacciego.Podaj ktora liczba ma byc wyliczona:-13Zle, liczba nie moze byc ujemna!!
– Skład FoilTEX – Indeks c© R. Muszyński, 3 pazdziernika 2005 roku
Wprowadzenie 16
Indeks
• Literatura• Materiały dostępne w sieci www• Zawartość tematyczna wykładu• Środowisko pracy• Etapy pracy nad programem• Edytor GNU Emacs• Przykład programu w Pascalu• Diagram programu• Kompilacja programów
– przykład — diablo– przykład — inyo
• Uruchamianie programów
– Skład FoilTEX – Indeks c© R. Muszyński, 3 pazdziernika 2005 roku