ZAAWANSOWANE JĘZYKI PROGRAMOWANIA



Podobne dokumenty
ZAAWANSOWANE JĘZYKI PROGRAMOWANIA

ZAAWANSOWANEJĘZYKI PROGRAMOWANIA

Wstęp do Informatyki dla bioinformatyków

JĘZYKI PROGRAMOWANIA

ZASADY PROGRAMOWANIA KOMPUTERÓW

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6

JĘZYKIFORMALNE IMETODYKOMPILACJI

Zapisywanie algorytmów w języku programowania

Rekurencja. Przygotowała: Agnieszka Reiter

Funkcje. Funkcje. liczba rzeczywista r punkt, w którym wartość wielomianu nas interesuje. Szukane: liczba rzeczywista

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

JĘZYKI FORMALNE I METODY KOMPILACJI

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

Paradygmaty programowania

SZTUCZNA INTELIGENCJA

Języki programowania zasady ich tworzenia

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

Laboratorium nr 1. i 2.

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Podstawy Programowania

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

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

Wstęp do programowania

Podstawy programowania. Wykład 7 Tablice wielowymiarowe, SOA, AOS, itp. Krzysztof Banaś Podstawy programowania 1

Programowanie Komponentowe WebAPI

Podstawy programowania C. dr. Krystyna Łapin

TABLICE W JĘZYKU C/C++ typ_elementu nazwa_tablicy [wymiar_1][wymiar_2]... [wymiar_n] ;

INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE

Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych. Ćwiczenie 3 stos Laboratorium Metod i Języków Programowania

KARTA KURSU. Wstęp do programowania

Wstęp do programowania

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

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

Wykład 3 Składnia języka C# (cz. 2)

Wykład 8. Rekurencja. Iterować jest rzeczą ludzką, wykonywać rekursywnie boską. L. Peter Deutsch

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016

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

PODSTAWY PROGRAMOWANIA STRUKTURALNEGO (C) SYLABUS A. Informacje ogólne

Podstawy programowania. Wykład: 8. Wskaźniki. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Podstawy Programowania C++

INFORMATYKA DANE.

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

Podstawy programowania

tablica: dane_liczbowe

Wstęp do programowania

Języki i paradygmaty programowania. I. Wprowadzenie

EGZAMIN MATURALNY Z INFORMATYKI

typ_zwracanej_wartości nazwa_funkcji(lista deklaracji argumentów) { ciało(treść) funkcji return Val; //zwracana wartość }

Informatyka- wykład. Podstawy programowania w Pythonie. dr Marcin Ziółkowski

Język programowania PASCAL

zmienne stanowią abstrakcję komórek pamięci: programista może przechowywać dane w pamięci, nie martwiąc się o techniczne szczegóły (np.

Wstęp do programowania

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p.

KARTA PRZEDMIOTU. Egzamin / zaliczenie. Egzamin / zaliczenie. ocenę*

DYNAMICZNE PRZYDZIELANIE PAMIECI

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

Podstawy programowania.

Algorytmy i Struktury Danych

Programowanie Niskopoziomowe

Personal Home Page PHP: Hypertext Preprocessor

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery

KARTA PRZEDMIOTU. Programowanie niskopoziomowe, C2. Low Level Programming Informatyka

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

12. Rekurencja. UWAGA Trzeba bardzo dokładnie ustalić <warunek>, żeby mieć pewność, że ciąg wywołań się zakończy.

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 9 Rekurencja

Podstawowe struktury danych

KARTA PRZEDMIOTU. Programowanie niskopoziomowe, C1

Programowanie w języku Python. Grażyna Koba

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

Technologie Informatyczne Wykład VII

5-6. Struktura dokumentu html. 2 Określenie charakteru i tematyki strony. Rodzaje witryn. Projekt graficzny witryny. Opracowanie skryptów

KARTA MODUŁU KSZTAŁCENIA

Laboratorium 5: Tablice. Wyszukiwanie binarne

JĘZYKI FORMALNE I METODY KOMPILACJI

Praktyka Programowania

Programowanie dla początkujących w 24 godziny / Greg Perry, Dean Miller. Gliwice, cop Spis treści

Lekcja 3: Elementy logiki - Rachunek zdań

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

Gramatyki atrybutywne

Jeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę.

Algorytmy i struktury danych. Drzewa: BST, kopce. Letnie Warsztaty Matematyczno-Informatyczne

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

Projekt 4: Programowanie w logice

Zakres treści Czas. 2 Określenie charakteru i tematyki strony. Rodzaje witryn. Projekt graficzny witryny. Opracowanie skryptów

Uniwersytet Śląski w Katowicach str. 1 Wydział Matematyki Fizyki i Chemii, Instytut Matematyki

Języki i metodyka programowania

Opis zagadnieo 1-3. Iteracja, rekurencja i ich realizacja

Programowanie obiektowe

Technologie informacyjne Wykład VII-IX

PRYWATNA WYŻSZA SZKOŁA BUSINESSU, ADMINISTRACJI I TECHNIK KOMPUTEROWYCH S Y L A B U S

Politechnika Krakowska im. Tadeusza Kościuszki. Karta przedmiotu. obowiązuje studentów rozpoczynających studia w roku akademickim 2013/2014

Podstawy programowania

1 Przygotował: mgr inż. Maciej Lasota

Algorytmika i pseudoprogramowanie

ECDL Podstawy programowania Sylabus - wersja 1.0

Opisy efektów kształcenia dla modułu

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

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

Rok akademicki: 2013/2014 Kod: JFT s Punkty ECTS: 5. Poziom studiów: Studia I stopnia Forma i tryb studiów: Stacjonarne

Wstęp do informatyki- wykład 12 Funkcje (przekazywanie parametrów przez wartość i zmienną)

Transkrypt:

Stefan Sokołowski ZAAWANSOWANE JĘZYKI PROGRAMOWANIA Inst. Informatyki, UG Gdańsk, 2015/2016 Zaawansowane Języki Programowania Wykład1,str.1 Na http://sigma.ug.edu.pl/ stefan/dydaktyka/zaawjezprog będą się stopniowo pojawiać: slajdy do wykładów szkicowy plan wykładu zadania z laboratorium spis literatury itd. Uwaga: przeczytanie tych materiałów nie wystarczy do zaliczenia!

Zaawansowane Języki Programowania Wykład1,str.2 Wymagania wstępne: zaliczone Języki programowania z I roku st. lic.(lub równoważne); obycie z programowaniem i biegłość w uruchamianiu programów. Wymagania na zaliczenie: zaliczyć laboratorium przez sprawdziany(łatwa droga), lub sprawdziany+rozbójnik pod koniec semestru(trudniejsza droga), lub zaliczenie poprawkowe(bardzo trudna droga) na co najmniej 51%; zdać egzamin w sesji podstawowej lub poprawkowej. procenty ocena p<51% 2.0 51% p<61 3.0 61% p<71 3.5 71% p<81 4.0 81% p<91 4.5 91% p 5.0 Tradycyjne dziedziny zastosowań Wykład1,str.3 Nauka(fizyka, astronomia, technika...) proste struktury danych(tablice), dużo obliczeń na liczbach rzeczywistych. Fortran,Algol60,... Biznes sporządzanie skomplikowanych zestawień i sprawozdań. Cobol. Sztucznainteligencja działania na symbolach(listy), elastyczność. Lisp, Prolog. Programowaniesystemowe dostęp do cech niskiego poziomu(dla efektywności). PL/I,C,... Internet niezależność od platformy, wymagania bezpieczeństwa. PHP,JavaScript,...

Wykład1,str.4 czytelność programów pisalność (łatwość pisania) programów niezawodność programów koszty Wykład1,str.5 Człowiek kulturalny zamienia się w bestię w trzech przypadkach: kiedy siada za kierownicę samochodu, kiedyjegodrużynagraważnymecz, kiedy dyskutuje o wyższości jednego języka programowania nadinnym.

Wykład1,str.6 rozumienie kodu praca wspólna pielęgnacja prostota języka: wiele konstruktów podstawowych dłuższa nauka programiści często znają tylko podzbiór, każdy inny wiele sposobów powiedzenia tego samego czytanie programów wymaga staranniejszej analizy wiele sposobów powiedzenia prawie tego samego jeszcze gorzej n=n+1; n+=1; n++; ++n; wieloznaczności w języku(np. w C: & ma dwa różne znaczenia) bardzo zmniejszają czytelność ALE języki bardzo proste wymagają długich programów, co zmniejsza czytelność. Wykład1,str.7 rozumienie kodu praca wspólna pielęgnacja ortogonalność pojęć ogólne zasady, stosowalne w ten sam sposób do wszystkiego Przykład: (ortogonalność) M w C elementy struktury mogą mieć dowolny typ, również tablicowy w C elementy tablicy mogą mieć dowolny typ, również strukturowy tablicewewnątrzstruktur,zawartewtablicach,...itp.sąok tablice i struktury są ortogonalne Przykład: (nieortogonalność) MwCwartośćoddawanaprzezfunkcjęmożemiećdowolnytypzwyjątkiem tablicowego typy i funkcje nie są ortogonalne

Wykład1,str.8 rozumienie kodu praca wspólna pielęgnacja ortogonalność pojęć ogólne zasady, stosowalne w ten sam sposób do wszystkiego Przykład: (ortogonalność) M w języku wewn. minikomputerów VAX: dodawanie komórki do rejestru ozn. ADDL rejestr komórka dodawanie rejestru do rejestru ozn. ADDL rejestr rejestr można w ten sposób dodać wszystko do wszystkiego Przykład: (nieortogonalność) M w języku wewn. dużych komputerów IBM: dodawanie komórki do rejestru ozn. A rejestr komórka dodawanie rejestru do rejestru ozn. AR rejestr rejestr w żaden sposób nie można dodać niczego do komórki pamięci Wykład1,str.9 rozumienie kodu praca wspólna pielęgnacja ortogonalność pojęć ogólne zasady, stosowalne w ten sam sposób do wszystkiego ALE zbyt dużo ortogonalności może zmniejszyć czytelność. Przykład: MW Algolu 68 wyrażenia warunkowe i inne rzeczy mogą występować po obu stronach przypisania: ifa<bthenaelsebfi := 0

Wykład1,str.10 szczegóły składni: język C x=arg; nizej=0; wyzej=x+1; while(wyzej-nizej > 1) { srodek =(nizej+wyzej)/2; if(srodek*srodek <= x) { nizej = srodek; else { wyzej = srodek; printf(" sqrt(%i) =%i\n", x,nizej); gorzej:identyczneklamry {... język Bash x=$1 nizej=0; wyzej=x+1 while[$[wyzej-nizej]-gt1] do srodek=$[(nizej+wyzej)/2] if[$[srodek*srodek]-le$x] then nizej=$srodek else wyzej=$srodek fi done echo" sqrt($x) =$nizej" lepiej:słowakluczoweif...fi do...done Wykład1,str.11 prostota i ortogonalność: duża liczba gotowych konstrukcji trudno się ich nauczyć i łatwo użyć błędnie mała liczba gotowych konstrukcji i reguły do ich łączenia łatwo(po minimalnej nauce) wymyślić dobry program ALE przesadna ortogonalność, kiedy każda kombinacja symboli coś dla kompilatora znaczy, utrudnia wykrycie błędu

Wykład1,str.12 abstrakcja możliwość definiowania złożonych danych i operacji i używania ich bez pamiętania szczegółów definicji abstrakcja procesu: np. podprogram(funkcja), którego wywołania mogą być używane jak predefiniowane operacje abstrakcja danych: np. definicja drzewa binarnego... jeśli możemy zdefiniować wierzchołki drzewa: 4 2 1 5 3 jeśli drzewo musimy implementować w tablicach: 1 2 3 2 4 5 3 0 0 4 0 0 5 0 0 Wykład1,str.13 ekspresywność łatwość wyrażenia w języku pojęć potrzebnych do obliczeń. Przykład: M dla każdego elementu tablicy wydrukować jego indeks i wartość język C for(int i=0; i<dlug TABL; i++) printf("%i:%lf\n", i,tabl[i]); gorzej: obliczenie język PHP foreach($tabl as $ind => $wart) echo" $ind: $wart\n"; lepiej: wyrażone wprost

Wykład1,str.14 ekspresywność łatwość wyrażenia w języku pojęć potrzebnych do obliczeń. Przykład: M zaprogramować wieże Hanoi 1 2 3 mamy przełożyć wszystkie krążki z pałeczki 1 na pałeczkę 3, używając pomocniczo pałeczki 2, na raz wolno przełożyć tylko jeden krążek, nigdy nie wolno kłaść krążka większego na mniejszy. Wykład1,str.15 ekspresywność łatwość wyrażenia w języku pojęć potrzebnych do obliczeń. Przykład: M zaprogramować wieże Hanoi zrekursją void Hanoi(int n, inta,intb,intc) { /*nkrążków zpałeczkianapałeczkęc*/ if(n>0) { Hanoi(n-1, a, c, b); przełóżkrążekzanac; Hanoi(n-1, b, a, c); bez rekursji skomplikowane operacje na stosie rekursja poprawia ekspresywność