Programowanie komputerów Wykład 1-2. Podstawowe pojęcia Plan wykładu Omówienie programu wykładów, laboratoriów oraz egzaminu Etapy rozwiązywania problemów dr Helena Dudycz Katedra Technologii Informacyjnych email: helena.dudycz@ue.wroc.pl helena.dudycz@gmail.com budynek Z pokój: 620 Algorytm, język programowania, program, programowanie Translator (kompilator, interpreter) Podstawowe typy błędów programu Języki programowania: składnia i semantyka Wykłady Program Materiały z wykładów hdudycz.wordpress.com Ocena z wykładów: kolokwium (plus laboratoria) Kolokwium: 19 grudnia 2011 Literatura Wróblewski P., Algorytmy: struktury danych i techniki programowania, wyd 4. Wydawnictwo Helion, Gliwice 2009 Kingsley-Hughes A., Programowanie. Od podstaw, Wydawnictwo Helion, Gliwice 2005. Informatyka ekonomiczna, red. Stanisław Wrycza, Polskie Wydawnictwo Ekonomiczne, Warszawa 2010 Malina W., Szwoch M., Metodologia i techniki programowania, Wydawnictwo PWN, Warszawa 2008 Treichel W., Visual Basic dla studentów. Podstawy Programowania w Visual Basic 2010, Wydawnictwo WITKOM, Warszawa 2011 MSDN Library http://msdn.microsoft.com, http://www.microsoft.com/enable/products/docs Jest ponad 2000 opublikowanych języków programowania. 1
Laboratoria Plan wykładu Język programowania: Visual Basic MSDN - Visual Studio 2010 Ultimate (Visual Basic Express wersja darmowa) Omówienie programu, literatura, zaliczenie Etapy rozwiązywania problemów Algorytm, język programowania, program, programowanie Translator (kompilator, interpreter) Podstawowe typy błędów programu Etapy rozwiązywania problemów (od problemu do programu) 1. Sformułowanie zadania 2. Określenie danych wejściowych 3. Określenie celu, czyli wyniku (dane wyjściowe) 4. Poszukiwanie metody rozwiązania czyli algorytmu 5. Przedstawienie algorytmu 6. Programowanie (czyli zapis algorytmu w języku programowania) oraz testowanie Algorytmika Podstawowy dział informatyki poświęcony poszukiwaniom, konstruowaniu i badaniom algorytmów, zwłaszcza w kontekście ich przydatności do rozwiązywania problemów Jest to nauka o sposobach rozwiązywania problemów Algorytm To przepis postępowania prowadzący do rozwiązania konkretnego zadania; zbiór poleceń dotyczących pewnych obiektów (danych) ze wskazaniem kolejności w jakiej mają być wykonane. To zbiór reguł postępowania, które realizowane są zgodnie z ustalonym porządkiem, umożliwiającym rozwiązanie określonego zadania lub jednoznaczne stwierdzenie, że było ono nierozwiązywalne na gruncie przyjętych ograniczeń. Odpowiada na pytanie jak to zrobić postawione przy formułowaniu zadania. Istota algorytmu polega na rozpisaniu całej procedury na kolejne, możliwie elementarne kroki. W procesie wyznaczania rozwiązania zadania według ustalonego algorytmu wyróżniamy dane początkowe (dane wejściowe), wyniki pośrednie, wynik końcowy (dane wyjściowe). UWAGA: Algorytmiczne myślenie można kształtować niezależnie od programowania komputerów, chociaż każdy program komputerowy jest zapisem jakiegoś algorytmu. 2
Język programowania Pozwala na precyzyjny zapis algorytmów oraz innych zadań, które ma wykonać komputer. Służy do dialogu pomiędzy programistą a komputerem. Stanowi zbiór zasad. Podobnie, jak języki naturalne, składa się ze zbiorów reguł syntaktycznych oraz semantycznych, które opisują, jak należy budować poprawne wyrażenia oraz jak komputer ma je rozumieć. Pierwszym językiem był kod binarny, składający się z ciągu rozkazów w postaci zer i jedynek. Program komputerowy (kod źródłowy) To logicznie uporządkowany ciąg instrukcji języka programowania realizujący algorytm. Jest zbiorem instrukcji (algorytmem) zapisanym w odpowiednim języku, który jest zrozumiały i możliwy do wykonania dla komputera. Jest on zapisany w pliku źródłowym (w przypadku języka Pascal posiada on rozszerzenie *.pas). Niklaus Wirth Programowanie Algorytmy + struktury danych = programy Programy stanowią skonkretyzowane sformułowanie abstrakcyjnych algorytmów na podstawie określonej reprezentacji i struktury danych Zespół czynności mających na celu utworzenie programu dla komputera. Przekształcenie algorytmu do postaci wykonywalnej przez komputer. Elementy procesu programowania Translator Program lub grupa programów służąca do translacji, czyli tłumaczenia kodu jednego języka na kod innego języka. Postać źródłowa (program źródłowy) program, który jest poddawany translacji. Postać wynikowa (program wynikowy) program, który otrzymujemy po działaniu translatora. 3
Podział translatorów Kompilator Schemat działania kompilatora To narzędzie (program), które tłumaczy (konwertuje) kod źródłowy na instrukcje maszynowe zrozumiałe dla komputera (Pascal, C/C++, Fortran). Kod źródłowy jest tłumaczony do postaci kodu maszynowego, czyli sekwencji elementarnych operacji gotowych do bezpośredniego przetworzenia przez procesor komputera. Jeżeli dany język programowania podlega kompilacji, określany jest mianem kompilowanego języka programowania. Schematyczny przebieg powstawania programu Interpreter Przetwarza osobno każdą pojedynczą instrukcję czyli następuje wykonywanie przez maszynę od razu kolejnych instrukcji kodu źródłowego. Dlatego w przypadku języków interpretowanych nie powstaje plik o rozszerzeniu EXE. Rozwiązania pośrednie generowany jest kod pośredni, interpretowany przez procesor wirtualny (Java). Jeżeli język podlega interpretacji, nazywany jest interpretowanym językiem programowania. 4
Działanie interpretera Konsolidacja I Faza. Pobranie linii zawierającej rozkaz. Interpreter sprawdza poprawność(składnię) rozkazu. II Faza. Tłumaczenie rozkazu na postać binarną. III Faza. Wykonywanie rozkazu binarnego przez procesor komputera. Trzy poziomy błędów I Poziom: błędy kompilacji programu II Poziom: błędy wykonania programu III Poziom: błędy logiczne programu Błąd Błąd Błędy Błędy składniowe (kompilacji lub interpretacji, program nie działa) Błędy wykonania programu (runtime errors, program czasami działa) Błędy logiczne (program działa ) Błędy danych Rada 1. Nie można się nauczyć programowania bez samodzielnego pisania programów! Rada 2. Nauka programowania nie polega na nauczeniu się na pamięć instrukcji danego języka programowania. Nauka programowania polega na zrozumieniu zasad działania instrukcji danego języka programowania oraz na umiejętnym ich zastosowaniu. 5