Z_Wykład_30.09.2007.txt

(22 KB) Pobierz
Na tych zaj�ciach konieczne b�dzie pe�ne poznanie j�zyka C i w nim programowanie. B�dzie czas na zapoznanie si� z podstawowymi poj�ciami odnoszacymi si� do przedmiotu, na umiej�tno�� konstruowania algorytm�w b�d�cych pomoc� przy pisaniu program�w, oraz czas na zapoznanie si� z elementami j�zyka. Informatyk�w dzielimy na aktywnych i pasywnych. Aktywni to ci, co tworza nowe elementy informatyki, czyli programy i ci drudzy - administratorzy. J�zyk C b�dzie zdecydowanie dla tych pierwszych, kt�rzy pragn� tworzy� nowe narz�dzia mogace si� przyda� innym osobom, jak r�wnie� im samym do pomocy w osi�gni�ciu jakiegos celu. J�zyk C b�dzie pierwszym, z tego wzgl�du, �e poznamy te� inne j�zyki programowania, ale one b�d� si� w�asnie opiera� na znajomo�ci j�zyka C. Aby lepiej pozna� j�zyk, nale�y zapozna� si� z nastepuj�c� literatur�, kt�ra b�dzie pomoc� do wyk�ad�w. Oto i ona:


LITERATURA OBOWI�ZKOWA

* Delannoy C. - �wiczenia z j�zyka C (1993)
* Dro�d�ek A. Simon D.L. - Struktury danych w j�zyku C (1996)
* Kerningham B.W. Ritchie D.M. - J�zyk ANSI C (2003)
* Tondo C.L. Gimpel S.E. - J�zyk ANSI C. �wiczenia i rozwi�zania. (2004)
* Schildt H. - J�zyk C (2002)
* Sys�o M. - Algorytmy (2002)
* Wirth N. - Algorytmy + Struktury danych = Programy (2002)

LITERATURA ZALECANA

* Knuth D.E. - Sztuka programowania. Tomy 1, 2, 3. (2002)
* Hunt A. Thomas D. - Pragmatyczny programista (2002)
* Straustrup B. - J�zyk C++ (2000)
* Lippman S.B. - Model obiektu w C++
* Bentley J. (2001) - Pere�ki oprogramowania (2001)


J�zyk C jest z jednej strony popularne i wygodne, ale z drugiej niebezpieczna w r�kach osoby, kt�ra nie uczy�a si� zasad poprawnego programowania. Stad wynika pewna kontrowersja. I na tym w�asnie dzis si� skupimy. Ale na poczatek kilka poj�� i definicji, kt�re kazdy programista musi pozna�. Jak ka�dy wie, informatyka to nauka zajmuj�ca si� przetwarzaniem informacji.
Ale co to jest ta informacja i jak rozumiemy to poj�cie. Niezwykle trudno je zdefiniowa�. O informacji m�wi si�, �e jest to ka�dy czynnik zwi�kszaj�cy zas�b naszej wiedzy. Nie musi by� pocz�tkowo rozumiany. Wiadomo�� traktujemy jako powt�rzenie informacji, czyli jako czynnik odebrany jednym ze zmys��w, kt�ry nie poszerza zasob�w naszej wiedzy. Informacje dzielimy na takie, kt�re odbieramy w spos�b bezposredni przy pomocy jednego ze zmys��w i takie, kt�re odbieramy w spos�b niebezposredni przeczywaj�c niejako co�, co sie mo�e wydarzy�. Informacje dzielimy na mierzalne i niemierzalne. Przyk�adem informacji niemierzalnych s� mi�dzy innymi uczucia. Te drugie to taki, kt�re mo�emy wyrazi� przy pomocy symboli, jak na prezyk�ad wiek, czy temperatura. Informacje skwartyfikowane i mierzalne okre�lamy mianem danych. Komputery zatem przetwarzaj� jedynie dane, a nie informacje. Teraz odno�nie program�w. Najlepiej jest pisa� je na kartce. Sprawi to, �e b�dzie mniej pomy�ek przy pisaniu kodu. Komputer ma nam pos�u�y� jedynie do sprawdzenia efektu po skompilowaniu kompilatorem C++. My mamy skupi� si� na sk�adni kodu i algorytmie. Je�li b�dziemy wpisywa� kod bezpo�rednio do kompilatora i kompilator b�dzie nam pokazywa�, co jest nie tak nigdy nie nauczymy sie programowa�. Teraz nieco o tworzeniu program�w. Wyr�niamy trzy techniki tworzenia program�w. A mianowicie: Programowanie proceduralne, strukturalne i zorientowane obiektowo. Idea programowania proceduralnego polega na podziale programu na mniejsze jednostki programowe zwane modu�ami programowymi w zasi�gu zmiennej. W przypadku j�zyka C mody�y te nosz� nazw� funkcji. I tym si� w�a�nie zajmiemy. Zmienne za� dzielimy na globalne, czyli takie, kt�re s� znane wszystkim strukturom programowym, oraz lokalne, kt�re s� znane tym strukturom programowym, w kt�rych s� one zdefiniowane.
Idea programowania strukturalnego wprowadzona jeszcze w latach 60 polega na wykorzystaniu trzech struktur algorytmicznych do rozwi�zywania zagadnie� programowania: Sekwencji, wyboru (selekcji) i powt�rzenia (iteracji). Udowodniono matematycznie, �e te struktury s� wystarczaj�ce do rozwi�zania ka�dego zadania obliczeniowego. Teraz nieco o algorytmice i algorytmach, bez kt�rych program nie b�dzie programem. Na pocz�tek zalecana literatura z tego dzia�u:


LITERATURA - ALGORYTMY

* Banachowski L. Dills K. Ryter W. - Algorytmy i struktury danych (2003)
* Cormen T.H. Leiserson CH. E. - Wprowadzenie do algorytm�w (2002)
* Wirth N. - Algorytmy + Struktury danych = Programy (2002)
* Harel D. - Rzecz o istocie informatyki, algorytmika (2001)


Na sam pocz�tek zdefiniujmu poj�cie algorytmiki. Jest to nauka o algorytmach. Za algorytm uwa�a si� zbi�r regu�, czynno�ci, kt�re umozliwiaj� rozwi�zanie danego zadania. MO�na te� powiedzie�, ze jest to informacyjny opis rozwi�zania zadania.
Wiekszo�c problem�w, jake rozwiazujemy na codzie� rozwi�zujemy w spos�b algorytmiczny, czyli wed�ug okre�lonego schematu.
To nie tylko tyczy si� codzienno�ci, ale te� zada� matematycznych. Na przyk�ad za��my, �e chcemy wyznaczy� pierwiastek r�wnania kwadratowego o postaci ax2 + bx + c = 0. Co robimy w pierwszej kolejno�ci. Obliczamy delt� ze wzoru b2 - 4ac.
Je�li delta b�dize mniejsza od zera, to oznacza, �e r�wnanie nie ma pierwiastk�w rzeczywistych, czyli nie robimy nic dalej, bo r�wnanie nie ma rozwi�zania. Jesli delta r�wnac si� b�dzie 0, to otrzymamy jedno rozwi�zanie wynik�e ze wzoru 
x1 = x2 = -(b / 2a). A wi�c kolejna czynno��. Jesli zas delta b�dzie wi�ksza od zera, to b�d� dwa rozwi�zania, kt�re otrzymamy ze wzoru x1 = (- b - pierwiastek z delty) / 2a i x2 = (-b + pierwiastek z delty) / 2a. Zatem to te� jest algorytm, czyli zbi�r pewnych czynno�ci. W ten spos�b okre�lili�my algorytm tego prostego zadania. Ten algorytm mo�emy okreslic mianem algorytmu z rozga��zieniami, gdy� od jednego faktu zalezy jakie potem kroki zostan� wykonane w zale�no�ci od trzech opcji.
Algorytmy dzielimy na dwa rodzaje - na algorytmy numeryczne operuj�ce na liczbach i na algorytmy nienumeryczne nieoperuj�ce na liczbach, a na znakach i symbolach. Te ostatni najcz�ciej wykorzystuje kompuer do porzadkowania danych. Inny podzia� to podzia� na algorytmy sekwencyjne, gdy kolejno�� czynno�ci jest okre�lana jednoznacznie, oraz na niesekwencyjny. Jedn� z form prezentacji algorytmu jest graficzna prezentacja algorytmu, czyli tak zwana sie� dzia�a�. Jest ona stosunkowo popularna i ma t� przewag� nad opisem s�ownym, �e jest niezale�na od j�zyka naturalnego w kt�rym jest wyra�ona. Obecnie wykorzystuje si� j� w podr�cznikach zakresu podstaw informatyki. Elementem g��wnym takiego algorytmu przedstawionego w formie graficznej s� dwie szyny. Skrzynka pocz�tkowa i skrzynka ko�cowa:

 _______      
( START )
 -------
    |
    |
 ___|_____
(  STOP   )
 ---------

Skrzynka poczatkowa pkazuje miejsce rozpocz�cia wykonywania algorytmu, czyli START, za� skrzynka ko�cowa pokazuje miejsce zako�czenia wykonywania algorytmu, czyli STOP. Oczywi�cie to tylko czasza takiego algorytmu. W kazdym algorytmie graficznym istnieje jeszcze kilka skrzynek zawartych pomi�dzy skrzynk� startu, a skrzynk� stopu. Jest to mi�dzy innymi skrzynka warunkowa, kt�ra jest rombem z dwoma rozga��zieniami TAK lub NIE. Zawiera ona polecenia sprawdzenia warto�ci okre�lonych wyra�e� logicznych i wyglada mniejwi�cej nast�puj�co:


   /       \
  /         \
 /           \
/  Wyra�enie  \
   logiczne    \____ TAK

\             /
 \           /
  \         /
   \       /

       |
       |
    
      NIE

Kolejna ze skrzynek to skrzynka wyboru. Obrazuje ona mo�liwo�� wykonywania oblicze� w zale�no�ci od warto�ci, zmiennej, lub wyra�enia. Prezentuje si� tak:


   /     \
  /       \
 / Zmienna \
 \         /
  \       /
   \     /
    \   / 
     \ /
_______________
|   |    |    |

W1  W2  W3   W4


Skrzynka ta jest uog�lnieniem skrzynki warunkowej i musi posiada� przynajmniej dwa rozga��zienia. Kolejna to skrzynka bezwarunkowa zwana skrzynk� operacyjn�. Zawiera operacje inne ni� sprawdzanie warunk�w logicznych i wygl�da tak:


_________|___________
|                    |
|     OPERACJA       |
|____________________|
         |


Pewnym rodzajem skrzynek bezwarunkowych jest skrzynka wej�cia wyj�cia. Obrazuje ona operacje wprowadzenia i wyprowadzenia danych. Oto, jak wygl�da:


    |
    V
 ___________   
/ WPROWAD� /
-----------
    |
    V


Skrzynka kolejna zwana skrzynk� kolekcyjn� umo�liwia po��czenie dw�ch r�nych algorytm�w. S� cz�sto wykorzystywane w algorytmach z p�tl�. Wygl�da w�asnie tak:


     | 
     |
     |
---->|
     |
     |
     |


Kolejne to skrzynki ��cznikowe. Wyr�niamy ��cznikowe na stronie i ��cznikowe mi�dzystronicowe. Te pierwsze obrazuj� przej�cie pomi�dzy fragmentami algorytmu w ramach tej samej strony. Drugie za� obrazuj� przej�cie pomi�dzy fragmentami algorytmu znajduj�cymi si� na r�nych stronach. Wygl�daj� nast�puj�co:


-> ( NR. )
-> ( ... )

Ka�da ma posta� strza�ki skierowanej do okr�gu. No i ostatnia skrzynka to skrzynka podprogram�w, kt�ra obrazuje wywo�anie podprogramu i realizowane przez ni� zadania. Wygl�da ona nast�puj�co:


                       |
                       v
         _________________________
        | |                     | |
        | |  Nazwa podprogramu  | |
        | |                     | |
        |_|_____________________|_|

                       |
                       v

Maj�c przed soba wszystkie skrzynki spr�bujmy u�ozy� taki najprostszy z mo�liwych algorytm�w. Napiszmy sie� dzia�a�, kt�ra b�dzie rozwi�zaniem elementarnego zadania. Zadanie polega na wprowadzeniu do programu dw�ch liczb ca�kowitych, a program ma wypisa� sum� tych liczb. Algorytm taki wyglada nast�puj�co:


         _______      
        ( START )
         -------
            |
            |
            V
        __________________ 
       / WPROWAD�  A I B /
       ------------------
            |
            |
            V
   _________________...
Zgłoś jeśli naruszono regulamin