WSTĘP DO PROGRAMOWANIA

Podobne dokumenty
WSTĘP DO PROGRAMOWANIA

Stefan Sokołowski JĘZYKIPROGRAMOWANIA. Inst. Informatyki UG, Gdańsk, 2012/2013

JĘZYKIFORMALNE IMETODYKOMPILACJI

JĘZYKI PROGRAMOWANIA

Zapisywanie algorytmów w języku programowania

JĘZYKI FORMALNE I METODY KOMPILACJI

Podstawowe elementy programu. patrz: następne 2 slajdy. Podstawowe elementy programu. Komendy proste:

Programowanie w języku C++ Grażyna Koba

Programowanie i techniki algorytmiczne

2.8. Algorytmy, schematy, programy

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

Algorytm. a programowanie -

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

Algorytmika i programowanie usystematyzowanie wiadomości

JĘZYKI FORMALNE I METODY KOMPILACJI

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

Błędy leksykalne są na ogół nietrudne do znalezienia.

Temat 20. Techniki algorytmiczne

Wstęp do programowania

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

Podstawy i języki programowania

Programowanie komputerów

Programowanie komputerowe. Zajęcia 1

Programowanie w języku Python. Grażyna Koba

1 Podstawy c++ w pigułce.

Paradygmaty programowania

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

Podstawy Programowania

lekcja 8a Gry komputerowe MasterMind

Nazwa wariantu modułu (opcjonalnie): Laboratorium programowania w języku C++

SZTUCZNA INTELIGENCJA

Schematy blokowe I. 1. Dostępne bloki: 2. Prosty program drukujący tekst.

1 Wprowadzenie do algorytmiki

Języki programowania zasady ich tworzenia

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

Laboratorium 5: Tablice. Wyszukiwanie binarne

Informatyka I. Wykład 3. Sterowanie wykonaniem programu. Instrukcje warunkowe Instrukcje pętli. Dr inż. Andrzej Czerepicki

WHILE (wyrażenie) instrukcja;

WHILE (wyrażenie) instrukcja;

Informacja o języku. Osadzanie skryptów. Instrukcje, komentarze, zmienne, typy, stałe. Operatory. Struktury kontrolne. Tablice.

Zapisywanie w wybranej notacji algorytmów z warunkami i iteracyjnych

Rodzaje błędów w programach. Wykład9.UWAGIOGÓLNE,str.1

START. Wprowadź (v, t) S:=v*t. Wyprowadź (S) KONIEC

Języki formalne i techniki translacji

Pascal - wprowadzenie

Stefan Sokołowski SZTUCZNAINTELIGENCJA. Inst. Informatyki UG, Gdańsk, 2009/2010

Programowanie w Turbo Pascal

Scenariusz lekcji. podać przykłady zalet użycia takiej instrukcji; opisać algorytm obliczania średniej n liczb;

Matematyka Dyskretna. Andrzej Szepietowski. 25 czerwca 2002 roku

Liczby losowe i pętla while w języku Python

Podstawy programowania

Programowanie od pierwszoklasisty do maturzysty. Grażyna Koba

Technologie informacyjne - wykład 12 -

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!

Podstawy programowania wykład

Języki i metodyka programowania

Komputer nie myśli. On tylko wykonuje nasze polecenia. Nauczmy się więc wydawać mu rozkazy

ZAAWANSOWANE JĘZYKI PROGRAMOWANIA

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

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

Algorytm poprawny jednoznaczny szczegółowy uniwersalny skończoność efektywność (sprawność) zmiennych liniowy warunkowy iteracyjny

Technologie Informacyjne Mechatronika 2012/2013 Algorytmy. Podstawy programowania

Wykład z Technologii Informacyjnych. Piotr Mika

Proste algorytmy w języku C

Indukcja. Materiały pomocnicze do wykładu. wykładowca: dr Magdalena Kacprzak

11. Blok ten jest blokiem: a. decyzyjnym b. końcowym c. operacyjnym

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

Jak napisać program obliczający pola powierzchni różnych figur płaskich?

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

ALGORYTMY I PROGRAMY

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

for (inicjacja_warunkow_poczatkowych(końcowych); wyrazenie_warunkowe; wyrazenie_zwiekszajace(zmniejszające)) { blok instrukcji; }

Podstawy Informatyki. Algorytmy i ich poprawność

6. Pętle while. Przykłady

Podstawy Programowania. Wykład 1

Podstawy programowania. Wykład: 4. Instrukcje sterujące, operatory. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Instrukcje warunkowe i skoku. Spotkanie 2. Wyrażenia i operatory logiczne. Instrukcje warunkowe: if else, switch.

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

Warunki logiczne instrukcja if

Język programowania PASCAL

Sprzęt komputera - zespół układów wykonujących programy wprowadzone do pamięci komputera (ang. hardware) Oprogramowanie komputera - zespół programów

1 Wskaźniki i listy jednokierunkowe

Algorytmika i pseudoprogramowanie

KARTA PRZEDMIOTU. 1. NAZWA PRZEDMIOTU: Algorytmizacja i programowanie. 2. KIERUNEK: Matematyka. 3. POZIOM STUDIÓW: I stopnia

PRZEWODNIK PO PRZEDMIOCIE

Programowanie w logice

Wstęp do informatyki- wykład 7

Elementy języka C. ACprogramislikeafastdanceonanewlywaxeddancefloorbypeople carrying razors.

Układy VLSI Bramki 1.0

Wstęp do programowania. Procedury i funkcje. Piotr Chrząstowski-Wachtel

Podstawy programowania. Wykład PASCAL. Zmienne wskaźnikowe i dynamiczne. dr Artur Bartoszewski - Podstawy prograowania, sem.

KOŁO MATEMATYCZNE LUB INFORMATYCZNE - klasa III gimnazjum, I LO

Lekcja 3: Pierwsze kroki z Pythonem. Pętle

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

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

Definicje. Algorytm to:

Temat 1: Podstawowe pojęcia: program, kompilacja, kod

W przeciwnym wypadku wykonaj instrukcję z bloku drugiego. Ćwiczenie 1 utworzyć program dzielący przez siebie dwie liczby

Luty 2001 Algorytmy (7) 2000/2001

JAVA?? to proste!! Autor: wojtekb111111

Transkrypt:

Stefan Sokołowski WSTĘP DO PROGRAOWANIA Inst Informatyki UG, Gdańsk, 2014/2015 Wykład1ALGORYTAPROGRA,str1 WSTĘP DO PROGRAOWANIA reguły gry Zasadnicze informacje: http://infugedupl/ stefan/dydaktyka/wstepdoprog szkicowy program wykładu, laboratorium i ćwiczeń spis literatury slajdydowykładów wartorobićnotatki ale nie warto przepisywać slajdów z ekranu zadaniazćwiczeńizlaboratoriumwmoichgrupach itd

WSTĘP DO PROGRAOWANIA reguły gry Kontakt ze mną: konsultacje: środy 10:15 11:00 w pok 57 e-mail: ssokolowski@infugedupl Zaliczenia: zaliczenie laboratorium, antyspam: unikać frikoprowajderów, np: o2pl wppl gazetapl najlepiej używać konta mailowego w II UG zaliczenie ćwiczeń audytoryjnych, znajdowanie błędów w wykładzie Opis statyczny a algorytm Wykład1ALGORYTAPROGRA,str3 Za drzwiami tej sali znajduje się korytarz, na jego prawym końcu jest wyjście z budynku, patrzące na NW Przed budynkiem znajduje się mały parking, a dalej droga dojazdowa Na końcunetejdrogijestbiblioteka Gdzie jest Biblioteka? opis topograficzny Wyjdź drzwiami z tej sali; skieruj się w prawo; kiedy skończy się korytarz, towyjdźzbudynku w kierunku NW; przejdź przez małyparkingidojdźdodrogi dojazdowej; następnie skręć naneidojdźdokońcatej drogi Jak trafić do Biblioteki? algorytm

Opis statyczny a algorytm 26milzgalona iletojestlitrówna100km? Zużycie paliwa arytmetyka 26gallon miles = 26 1609 km 379 l = 41834 100km 379 100 l = 41834 379 100km l = 1 100km 906 l Zużycie paliwa algorytm Pomnożyć liczbę litrów wgalonieprzez100i zapamiętać w m; pomnożyć 26 przez liczbę kilometrów w mili i zapamiętać w l; podzielićmprzezli wydrukować iloraz Opis statyczny a algorytm Wykład1ALGORYTAPROGRA,str5 Orzechy na keks informacja Na pożądaną ilość keksu potrzeba 10 kg łuskanych orzechów Orzechy na keks algorytm do-luskania orzechów zasadź trzy dziewki na pó-l dnia, a bacz, iżby nie jad-ly Przepis ze starej książki kucharskiej Algorytmy nie powstały wczoraj

Opis statyczny a algorytm 2 1 2 1 1 2 1 2 Kolory informacja Prost[ 251) [01)jestżółty Prost[ 251) [125)jestczerwony Prost[125) [ 225)jestczerwony Reszta rysunku jest zielona Kolory program if(-25<=x&&x<1&& 0<=y&&y<1) kolor = ZOLTY; else if(-25<=x&&x<1&& 1<=y&& y<25) kolor = CZERWONY; else if(1<=x&&x<25&& -2<=y&& y<25) kolor = CZERWONY; else kolor = ZIELONY; Opis statyczny a algorytm Wykład1ALGORYTAPROGRA,str7 Logika, matematyka, nauki przyrodnicze itp zajmują się opisami statycznymi świata, czyli formułują zdania oznajmujące: jak to jest Informatykazajmujesięciągamipoleceń a,czyliformułujezdaniarozkazujące: co masz zrobić Zdanie oznajmujące może być prawdziwe albo nieprawdziwe Zdanie rozkazujące nie może być prawdziwe lub nieprawdziwe; może za to być poprawne albo niepoprawne względem pewnych oczekiwań, zależnie od tego, czy wykonanie polecenia realizuje te oczekiwania Algorytm: ciąg poleceń Program: prezentacja(zapis) algorytmu w sposób ustalony konwencją(np w języku, rysunku, itp) a Wprzyszłościokażesię,żenietylko

Algorytm a program Algorytm: ciąg poleceń Program: prezentacja(zapis) algorytmu w sposób ustalony konwencją(np w języku, rysunku, itp) algorytm twierdzenie program tekst twierdzenia Tekst poprawnego twierdzenia może być błędny(np z pomyłką drukarską) Czytelnik-człowiek na ogół ma dosyć intuicji, żeby się nie nabrać na ten błąd Program realizujący poprawny algorytm może być niepoprawny(np z powodu literówki zrobionej przy pisaniu na klawiaturze) Czytelnik-komputer na ogół nie potrafi poprawić błędu W pewnych przypadkach jest w stanie wykryć, że coś jest niedobrze i wskazać przybliżone miejsce błędu w programie Algorytm a program Wykład1ALGORYTAPROGRA,str9 Algorytm rozwiązujący jakieś zadanie jest poprawny lub niepoprawny dla tego zadania niezależnie od konkretnego sposobu zapisu(języka) czy komputera Z istnienia programu realizującego dany algorytm w jakimś języku programowania wynika na ogół istnienie programów realizujących ten algorytm w innych językach programowania algorytmy nie zależą od języków Dlatego możemy rozważać osobno algorytm rozwiązujący zadanie(bez związku z konkretnym językiem czy komputerem), program prezentujący algorytm(w konkretnym języku) Programowanie: kompromis między tym, co jest potrzebne, atym,codasięzrobić

Powtarzanie do znudzenia Przykład: algorytmu(potęgowanie przez wielokrotne mnożenie) 3 4 = 0 narazieprzyjmij,żewynik=1 = 1 3 4 iżew=wykładnik; = 3 3 3 1 jeśliw=0,tozakończobliczenie; = 9 3 2 2 jeśliw>0,to =27 3 1 domnóż wynik przez podstawę; =81 3 0 zmniejszwo1; =81 idźponowniedo1; Wykład 1 ALGORYT A PROGRA, str 11 Ten sam algorytm w różnych językach Przykład: (potęgowanie przez wielokrotne mnożenie) Opis słowny: 0 narazieprzyjmij,żewynik=1 iżew=wykładnik; 1 jeśliw=0,tozakończobliczenie; 2 jeśliw>0,to domnóż wynik przez podstawę; (pętla) zmniejszwo1; idźponowniedo1; (inicjalizacja)

Ten sam algorytm w różnych językach Przykład:(potęgowanie przez wielokrotne mnożenie schemat blokowy) wynik 1;w wykładnik w>0 w=0 wynik wynik podstawa w w 1 Wykład 1 ALGORYT A PROGRA, str 13 Ten sam algorytm w różnych językach Przykład:(potęgowanie przez wielokrotne mnożenie program w Pascalu iwc) inicjalizacja pętli warunek pętli Pascal: C: wynik:=1; w:= wykladnik; whilew>0dobegin wynik:= wynik*podstawa; w:=w-1; end wynik=1; w=wykladnik; while(w>0) { wynik = wynik*podstawa; w=w-1; } ciało pętli

Ten sam algorytm w różnych językach Przykład:(potęgowanie przez wielokrotne mnożenie program w Pascalu ic) inicjalizacja pętli warunek pętli Pascal: C: wynik:=1; wynik=1; w:= wykladnik; w=wykladnik; while(w>0) { whilew>0dobegin wynik:= wynik*podstawa; w:=w-1; end } wynik = wynik*podstawa; w=w-1; ciało pętli Symulacja działania programu Wykład 1 ALGORYT A PROGRA, str 15 Przykład:(potęgowanie przez wielokrotne mnożenie schemat blokowy) podstawawykładnikwynikww>0 0 wynik 1;w wykładnik 1 w>0 w=0 2 wynik wynik podstawa 3 w w 1 4 0 3 4 1 3 4 1 4 tak 2 3 4 1 4 3 3 4 3 4 1 3 4 3 3 tak 2 3 4 3 3 3 3 4 9 3 1 3 4 9 2 tak 2 3 4 9 2 3 3 4 27 2 1 3 4 27 1 tak

Symulacja działania programu cd Przykład:(potęgowanie przez wielokrotne mnożenie schemat blokowy) podstawawykładnikwynikww>0 0 wynik 1;w wykładnik 1 w>0 w=0 2 wynik wynik podstawa 3 w w 1 4 1 3 4 27 1 tak 2 3 4 27 1 3 3 4 81 1 1 3 4 81 0 nie 4 3 4 81 0 Symulacja działania programu Wykład 1 ALGORYT A PROGRA, str 17 W trakcie symulacji ręcznie wykonujemy komendy programu, wodząc palcem po jego tekście W trakcie tworzenia programu programista nie powinien symulować jego obliczeń, bo nie jest komputerem Programista powinien patrzeć na program z szerszej perspektywy niż pojedyncze komendy Natomiast w razie wystąpienia błędu, ręczne wykonanie fragmentu programu i porównanie z wykonaniem komputera może pomóc w znalezieniu przyczyny błędu Dlatego programista musi umieć przeprowadzić symulację obliczenia Prawie każdy program ma poprawnie działać na wielu różnych danych; zwykle tych możliwych danych jest nieskończenie wiele Nie ma więc możliwości przesymulowania go, ani uruchomienia na komputerze(przetestowania) na wszystkich danych Testowanie może wskazać błąd Ale nie może wykazać poprawności(braku błędu)

Imperatywny charakter algorytmów i programów Schematy blokowe i programy w większości języków programowania rozkazują wykonawcy(komputerowi), co ma robić i w jakiej kolejności Komputer nie kwestionuje poleceń(o ile nie zawierają one błędów formalnych) Jeśli ciąg poleceń(program) jest źle przemyślany, to komputer w dobrej wierze wyliczy złe wartości Pełna odpowiedzialność za skutki wykonania programu spoczywa na programiście Istnieją języki programowania o innym(nieimperatywnym) charakterze: języki wyspecjalizowane do wąskich celów(np SQL do obsługi baz danych, lub HTL do tworzenia witryn internetowych); języki programowania ogólnego o bardziej matematycznym charakterze (np LISP, Standard L, Prolog) Wykład 1 ALGORYT A PROGRA, str 19 Elementy programu imperatywnego(np w C) komenda = instrukcja = polecenie = fragment programu Przypisanie: nadaj zmiennej wartość; np wynik=1; w=w-1; W C znak = nie oznacza równości tylko przypisanie; równość oznacza się przez ==; przypisanie zawsze kończy się średnikiem Następstwoinstrukcji:wykonajnajpierwtoapotemtamto;np wynik=1;w=wykladnik; Pętla: nadaj zmiennym wartości początkowe(inicjalizacja) wielokrotnie powtarzaj instrukcję(ciało) aż przestanie być spełniony warunek pętli

Konstrukcja pętli Opis słowny: 0 inicjalizacja 1 Jeśli warunek jest niespełniony, to zakończ obliczenie 2 Jeśli warunek jest spełniony, to ciało idźdo1 Schemat blokowy: inicjalizacja warunek warunek ciało Pascal: inicjalizacja; while warunek do ciało C: inicjalizacja while(warunek) ciało Budowa komputera Wykład 1 ALGORYT A PROGRA, str 21 0 1 2 N 2 N 1 pamięć procesor Obliczenie p=x y z w;: pobierz x pomnóż przez y zapamiętaj w t pobierz z pomnóż przez w zapamiętaj w u pobierz t odejmij u zapamiętaj w p Adresowana pamięć składająca się z N komórek Procesor wykonujący działania między swoim rejestrem a komórką pamięci; nie można bezpośrednio wykonać np dodawania zawartości dwóch komórek

Schemat przetwarzania Procesor jest aktywnym elementem komputera Pamięć służy mu jako bierny notes Procesor rozumie komendy tylko z bardzo prostego języka wewnętrznego Żeby mógł wykonać program, napisany przez programistę w języku wysokiego poziomu, takim jak Pascal lub C, program ten musi najpierw zostać przetłumaczony lub skompilowany na język wewnętrzny Programy są tłumaczone przez specjalny program, tzw translator lub kompilator Wczytuje on jako dane tekst programu w języku wysokiego poziomu i produkuje jako wynik program w języku wewnętrznym gotowy do działania Program w języku wewnętrznym(skompilowany) jest nieczytelny dla programisty Program w języku wysokiego poziomu jest niewykonalny dla komputera Schemat przetwarzania Wykład 1 ALGORYT A PROGRA, str 23 x=10; while(x>0) programwc gcc kompilator C DANE pobierz zapisz program w jęz wewnętrznym WYNIKI