Wstęp do programowania



Podobne dokumenty
Wstęp do programowania

Język programowania PASCAL

3. Podaj elementy składowe jakie powinna uwzględniać definicja informatyki.

Algorytmy. Programowanie Proceduralne 1

Algorytmy. Programowanie Proceduralne 1

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++

Programowanie komputerów

Technologie informacyjne - wykład 12 -

Programowanie. Pascal - język programowania wysokiego poziomu. Klasa 2 Lekcja 9 PASCAL

Języki i metodyka programowania

Programowanie. Projektowanie funkcje programu tworzenie algorytmu i struktur danych. Programowanie implementacja algorytmu kompilacja programu

Algorytmy od problemu do wyniku

Programowanie I. O czym będziemy mówili. Plan wykładu nieco dokładniej. Plan wykładu z lotu ptaka. Podstawy programowania w językach. Uwaga!

Wstęp do Programowania potok funkcyjny

I. KARTA PRZEDMIOTU CEL PRZEDMIOTU WYMAGANIA WSTĘPNE W ZAKRESIE WIEDZY, UMIEJĘTNOŚCI I INNYCH KOMPETENCJI EFEKTY KSZTAŁCENIA

Jerzy Nawrocki, Wprowadzenie do informatyki

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

NAZWA PRZEDMIOTU/MODUŁU KSZTAŁCENIA:

PRZEWODNIK PO PRZEDMIOCIE

KARTA KURSU. Wstęp do programowania

przedmiot kierunkowy (podstawowy / kierunkowy / inny HES) obowiązkowy (obowiązkowy / nieobowiązkowy) polski semestr I

Podstawy i języki programowania

Podstawy programowania w języku C

Podstawy Informatyki. Algorytmy i ich poprawność

Wstęp do Informatyki. Program, proces tworzenia programu Środowisko programistyczne Języki programowania

Podstawy programowania wykład

Wykład 4. Algorytmy i programy. Algorytmy + struktury danych = programy. Niklaus Wirth. Algorytm = logika + sterowanie.

Języki i paradygmaty programowania. I. Wprowadzenie

Opis efektów kształcenia dla modułu zajęć

Algorytm. a programowanie -

Wykład V. Rzut okiem na języki programowania. Studia Podyplomowe INFORMATYKA Podstawy Informatyki

Programowanie i projektowanie obiektowe

Definicje. Algorytm to:

Języki programowania zasady ich tworzenia

Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja, - liczby losowe

SCENARIUSZ LEKCJI. Streszczenie. Czas realizacji. Podstawa programowa

Podstawy programowania.

Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja cz. 1

Paradygmaty programowania

Wykład IV Algorytmy metody prezentacji i zapisu Rzut oka na język PASCAL

Informatyka II stopień (I stopień / II stopień) Ogólnoakademicki (ogólno akademicki / praktyczny) Kierunkowy (podstawowy / kierunkowy / inny HES)

INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE

Praktyka Programowania

Egzamin / zaliczenie na ocenę*

Wprowadzenie do programowania współbieżnego

PODSTAWY ALGORYTMIKI

Jerzy Nawrocki, Wprowadzenie do informatyki

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 1. Karol Tarnowski A-1 p.

Programowanie obiektowo zorientowane. Mirosław Głowacki Wykład w języku C++

ECDL Podstawy programowania Sylabus - wersja 1.0

Algorytmika i pseudoprogramowanie

przedmiot kierunkowy (podstawowy / kierunkowy / inny HES) obowiązkowy (obowiązkowy / nieobowiązkowy) polski semestr I

PROLOG WSTĘP DO INFORMATYKI. Akademia Górniczo-Hutnicza. Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej.

Podstawy programowania

Technologie Informacyjne

Szkoła programisty PLC : sterowniki przemysłowe / Gilewski Tomasz. Gliwice, cop Spis treści

Algorytm. Definicja i algorytmu METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE

Wykład I Cyfrowa reprezentacja informacji Algorytmy metody prezentacji i zapisu Tablice (wstęp) Rzut okiem na języki programowania

Teoretyczne podstawy informatyki

Algorytm. Krótka historia algorytmów

TEMAT: Podejmowanie decyzji w programie instrukcja warunkowa (IF).

Rok akademicki: 2012/2013 Kod: ZIE s Punkty ECTS: 3. Poziom studiów: Studia I stopnia Forma i tryb studiów: -

Podstawy programowania

ALGORYTMY I PROGRAMY

Wstęp do Programowania Obiektowego. Wykład 13 Paradygmaty. Składnia i semantyka.

Wstęp do programowania

Zapisywanie algorytmów w języku programowania

1 Wprowadzenie do algorytmiki

Instrukcje sterujące. wer. 11 z drobnymi modyfikacjami! Wojciech Myszka :53:

Programowanie w języku C++ Podstawowe paradygmaty programowania

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Java EE produkcja oprogramowania

PRZEWODNIK PO PRZEDMIOCIE

Język ludzki kod maszynowy

Algorytmy i struktury danych

Przeszukiwanie z nawrotami. Wykład 8. Przeszukiwanie z nawrotami. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 238 / 279

Opisy efektów kształcenia dla modułu

1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja. 2. Schemat blokowy przedstawia algorytm obliczania

PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy.

Matematyka Dyskretna. Andrzej Szepietowski. 25 czerwca 2002 roku

procesów Współbieżność i synchronizacja procesów Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

Programowanie funkcyjne wprowadzenie Specyfikacje formalne i programy funkcyjne

Programowanie niskopoziomowe. dr inż. Paweł Pełczyński

Wprowadzenie. Organizacja pracy i środowisko programistyczne. Mirosław Ochodek

Programowanie, algorytmy i struktury danych

Wykład 0 Informacje Podstawowe

KARTA MODUŁU KSZTAŁCENIA

Wstęp do programowania

Pascal - wprowadzenie

Podstawy Programowania. Języki programowania

Języki programowania deklaratywnego

Zapisywanie algorytmów w języku programowania wysokiego poziomu

WYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA ALGORYTM. Język programowania PROGRAM. instrukcja-dla. instrukcja-przypisania.

Programowanie Obiektowe i C++

Here comes the sun. Wyk lad niesystematyczny. Marcin Makowski. 24 października Zak lad Chemii Teoretycznej UJ

WYKŁAD. Jednostka prowadząca: Wydział Techniczny. Kierunek studiów: Elektronika i telekomunikacja. Nazwa przedmiotu: Język programowania C++

I. KARTA PRZEDMIOTU CEL PRZEDMIOTU

Wykład 1 Informacje Podstawowe

2.8. Algorytmy, schematy, programy

Transkrypt:

Wstęp do programowania Literatura David Harel. Rzecz o istocie informatyki. Algorytmika. Wydawnictwa Naukowo-Techniczne. Wydanie trzecie. Seria: Klasyka informatyki. Warszawa 2000. Niklaus Wirth. Algorytmy + Struktury Danych = Programy. WNT. Seria: Klasyka informatyki. Warszawa 2000. (Istnieje wiele wydań wcześniejszych, pierwsze: WNT, 1980) Wstęp do programowania, M.A.B 2004

Programowanie = sztuka czy inżynieria? Czym jest programowanie sztuka czy inżynieria? Specyfikowanie/prezentowanie algorytmów - diagramy blokowe. Poprawność, dokumentowanie i uaktualnienie oprogramowania Spektakularne wpadki, ciche sukcesy - klęska informatyki teoretycznej? Wstęp do programowania, M.A.B 2004-2-

Programowanie kontra kodowanie Cykl programistyczny: begin pocz : analiza zjawiska/procesu projekt modelu abstrakcyjnego zjawiska/procesu weryfikacja modelu if błąd go to pocz prog : model programistyczny zjawiska/procesu kodowanie testowanie kodu if błąd go to prog go to pocz end Wstęp do programowania, M.A.B 2004-3-

Wykład : model programistyczny + kodowanie prezentacja algorytmu w postaci schematu blokowego specyfikowanie algorytmu poprawność algorytmu poprawność kodowania dokumentowanie bieżąca aktualizacja Wstęp do programowania, M.A.B 2004-4-

Cechy dobrego informatyka Idealny programista/projektant/analityk powinien znać język angielski przychodzi samo umieć myśleć analitycznie nieustannie uczyć się nowych rzeczy podpatrywać lepszych programistów Idealny projektant/analityk powinien winien dodatkowo poszerzać wiedzę na temat modelowanej dziedziny Wstęp do programowania, M.A.B 2004-5-

Architektura komputerów a programowanie Architektura komputerów w 3 minuty binarna reprezentacja liczb, ciągów, słów, tablic, rekordów binarna reprezentacja programów ograniczoność reprezentacji, a nieograniczoność świata PROBLEM Binarnej Bariery : rozdzwięk między ludzkim a maszynowym sposobem reprezentacji danych i programów Wstęp do programowania, M.A.B 2004-6-

Ewolucja uniwersalne języki programowania Rozwój języków programowania próbą pokonania binarnej bariery języki maszynowe: IA32, AMD64, IA64 asemblery fortran skoki, tablice i pętla for COBOL język dla biznesu Algol60 typy obietów, procedury i funkcje Pascal /Modula2 rekordy, typy definiowalne java programowanie obiektowe, zdarzenia i wyjątki Wstęp do programowania, M.A.B 2004-7-

Ewolucja specjalizowane języki programowania Języki przetwarzania symbolicznego (AI,logika) języki manipulowania tekstami (SNOBOL) LISP języki funkcyjne (Schema, ML, Haskell) Prolog programowanie logiczne Języki sterowania systemami czasu rzeczywistego Języki projektowania systemów współbieżnych Wstęp do programowania, M.A.B 2004-8-

Skutki ewolucji Mniejszy dystans między opisem a kodem Łatwiejsze poprawianie, konserwacja i aktualizacja Zwiększenie wydajności programowania (reusability) Języki specjalizowane do specyficznych dziedzin zastosowań Wstęp do programowania, M.A.B 2004-9-

Składnia a semantyka, czyli przepis kontra funkcja Precyzyjna składnia = łatwo o błędy! Kłopoty z semantyką niejednoznaczność i/lub braki w definicji języka różnice między implementacjami tego samego języka w różnych środowiskach (np.: Linux i win XP) problemy fundamentalnej natury. Semantyka operacyjna kontra semantyka denotacyjna. Problemy z częściowością obliczeń. Wstęp do programowania, M.A.B 2004-10-

Kompilacja a interpretacja Jak wykonać program napisany w języku programowania na komputerze? Kompilacja Uruchamiamy na kompilator podając program jako dane. Otrzymujemy program wykonywalny Uruchamiamy program wykonywalny celem wykonania. Iterpretacja Uruchamiamy na interpreter podając program jako dane. Interpreter wykonuje instrukcje programu i kończy działanie Wstęp do programowania, M.A.B 2004-11-

Struktury danych mechanizmy kontroli działania Wirth: Algorytmy + struktury danych = programy tablice pęta for drzewa rekursja zdarzenia wyjątki komunikaty/metody obiekty Wstęp do programowania, M.A.B 2004-12-

Pojęcie algorytmu Specyfikacja Spec Prezentacja prog, np. w postaci schematu blokowego Poprawność czy program prog spełnia specyfikację Spec? Poprawność częściowa Własność stopu Poprawność całkowita całkowita = częściowa + Własność stopu Wstęp do programowania, M.A.B 2004-13-

Specyfikowanie programów imperatywnych S, S : Stan wartościowanie zmiennych. Π : program relacja opisująca zmianę stanu. Notacja: S Π S znaczy Π uruchomiony w S skończył w stanie S Φ, Ψ : asercja własność logiczna opisująca stan. Prewarunek własność opisująca stany dla których chcemy by program działał porawnie. Postwarunek własność stanów uzyskanych po zakończeniu działania programu. Wstęp do programowania, M.A.B 2004-14-

Specyfikowanie programów imperatywnych (cd) Częściowa poprawność programu Π względem prewarunku Φ i postwarunku Ψ. S = Φ i S Π S implikuje S = Ψ Własność stopu programu Π względem prewarunku Φ. S = Φ implikuje Ψ uruchomiony w S kończy działanie Wstęp do programowania, M.A.B 2004-15-

Algorytm Euklidesa specyfikacja Stan Wartościowanie zmiennych M, N i wynik Prewarunek M> 0, N> 0 Postwarunek wynik = NW D(M,N) Prosta realizacja wynik:=nwd(m,n) Wstęp do programowania, M.A.B 2004-16-

Algorytm Euklidesa schemat blokowy START true m <> n false true m > n false m := m n n := n m META Wstęp do programowania, M.A.B 2004-17-

Algorytm Euklidesa poprawność Lemat 1 Jeśli p = d > 0 to NW D(p, d) = p = d Lemat 2 Jeśli p > d > 0 to NW D(p, d) = NW D(p d, d) Lemat 3 Jeśli 0 < p < d to NW D(p, d) = NW D(p, d p) Tw 1 Algorytm Euklidesa jest częściowo poprawny względem Φ : M > 0 N > 0 oraz Ψ : wynik = NW D(M,N) Tw 2 Alg. Euklidesa ma własność stopu wzgl. Φ. Wniosek Alg. Euklidesa jest całkowicie poprawny wzgl. Φ i Ψ. Wstęp do programowania, M.A.B 2004-18-

Pascal uniwersalny język programowania Dlaczego Free Pascal a nie na przykład java, C czy C++? elegancki prosty koncepcyjnie, w użyciu, w opanowaniu, Free Pascal dostępny za darmo, Dostępny na wiele platform: MacOS, BeOS, FreeBSD, OS/2, Linux (x86 i Motorola 68k), Amiga, Solaris, netbsd, QNX, Win32 (od 95 do NT) Rozwijany wyjątki, obiekty i klasy,... strona domowa: www.freepascal.org dokumentacja on-line: www.freepascal.org/docs.html Wstęp do programowania, M.A.B 2004-19-

Algorytm Euklidesa w Pascalu program Euklides ; { wczytuje liczby naturalne m i n. Jesli dodatnie, liczy NWD(m,n). Działa poprawnie dla liczb w dziedzinie typu INTEGER. Np. daje wynik 1 dla m=66666 i n = 66777 gdy NWD(m,n)=3 } var m, pie, n, dru, wynik : integer; begin <ciało programu> end. Uwaga! Dokumentacja (komentarze) i ładna edycja ważne dla programisty! Wstęp do programowania, M.A.B 2004-20-

writeln( Podaj dwie liczby naturalne ); readln (m,n); if (m>0) and (n>0) then begin pie := m; dru := n; while pie <> dru do if pie > dru then pie := pie - dru else dru := dru - pie wynik := pie; writeln( NWD(,m,,,n, )=,wynik) end else writeln( niewłaściwe dane ) Wstęp do programowania, M.A.B 2004-21-