ZAAWANSOWANEJĘZYKI PROGRAMOWANIA

Podobne dokumenty
ZAAWANSOWANE JĘZYKI PROGRAMOWANIA

ZAAWANSOWANE JĘZYKI PROGRAMOWANIA

JĘZYKI PROGRAMOWANIA

ZASADY PROGRAMOWANIA KOMPUTERÓW

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

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

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

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

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

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

Podstawy programowania C. dr. Krystyna Łapin

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

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

Rekurencja. Przygotowała: Agnieszka Reiter

Wstęp do Informatyki dla bioinformatyków

tablica: dane_liczbowe

Zapisywanie algorytmów w języku programowania

Paradygmaty programowania

Podstawy Programowania C++

JĘZYKIFORMALNE IMETODYKOMPILACJI

4 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.01 Rok akad. 2011/ / 24

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

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

Języki i paradygmaty programowania. I. Wprowadzenie

INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE

Języki programowania zasady ich tworzenia

Programowanie komputerów

Technologie cyfrowe. Artur Kalinowski. Zakład Cząstek i Oddziaływań Fundamentalnych Pasteura 5, pokój 4.15

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

1. Liczby i w zapisie zmiennoprzecinkowym przedstawia się następująco

JĘZYKI FORMALNE I METODY KOMPILACJI

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

Podstawy Programowania. Wykład 1

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

Podstawy programowania. Wykład 3 Konstrukcje sterujące. Krzysztof Banaś Podstawy programowania 1

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

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

kiedy znowu uzyska sterowanie, to podejmuje obliczenie od miejsca, w którym poprzednio przerwała, i z dotychczasowymi wartościami zmiennych,

4. Funkcje. Przykłady

Wstęp do programowania

Programowanie komputerowe. Zajęcia 3

Język C++ zajęcia nr 2

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

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

Laboratorium nr 1. i 2.

Wstęp do programowania

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

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

Wieczorowe Studia Licencjackie Wrocław, Wykład nr 6 (w oparciu o notatki K. Lorysia, z modyfikacjami) Sito Eratostenesa

Personal Home Page PHP: Hypertext Preprocessor

Architektura komputerów

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

Programowanie w C++ Wykład 3. Katarzyna Grzelak. 12 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 35

Podstawy programowania w języku C

Algorytmika i pseudoprogramowanie

Opisy efektów kształcenia dla modułu

Proste algorytmy w języku C

Podstawy Programowania

PARADYGMATY PROGRAMOWANIA Wykład 4

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

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

Wstęp do programowania

DYNAMICZNE PRZYDZIELANIE PAMIECI

Jerzy Nawrocki, Wprowadzenie do informatyki

KARTA KURSU. Wstęp do programowania

Laboratorium 5: Tablice. Wyszukiwanie binarne

1 Wskaźniki. 1.1 Główne zastosowania wskaźników

JĘZYKI FORMALNE I METODY KOMPILACJI

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

Programowanie w języku Python. Grażyna Koba

Podstawy Informatyki Języki programowania c.d.

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

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

Programowanie w języku C++ Podstawowe paradygmaty programowania

Programowanie Komponentowe WebAPI

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

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

Praktyka Programowania

Jerzy Nawrocki, Wprowadzenie do informatyki

7. Pętle for. Przykłady

Programowanie Niskopoziomowe

MATERIAŁY DO ZAJĘĆ I. Podstawowe pojęcia. Algorytm. Spis treści Przepis

Języki formalne i techniki translacji

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. System komputerowy. Magistrala systemowa. Architektura komputera. Cezary Bolek

ECDL Podstawy programowania Sylabus - wersja 1.0

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

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

Język programowania PASCAL

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.

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

C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów

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

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

KARTA PRZEDMIOTU. Programowanie niskopoziomowe, C1

Podstawy informatyki. Elektrotechnika I rok. Język C++ Operacje na danych - wskaźniki Instrukcja do ćwiczenia

1 Podstawy c++ w pigułce.

Algorytm. a programowanie -

Architektura mikroprocesorów TEO 2009/2010

Wskaźniki i dynamiczna alokacja pamięci. Spotkanie 4. Wskaźniki. Dynamiczna alokacja pamięci. Przykłady

Transkrypt:

Stefan Sokołowski ZAAWANSOWANEJĘZYKI PROGRAMOWANIA Inst. Informatyki, UG Gdańsk, 2016/2017

Zaawansowane Języki Programowania Wykład1,str.1 Na http://inf.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.

Zaawansowane Języki Programowania Wykład1,str.1 Na http://inf.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.

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) naconajmniej51% 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

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,...

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.

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.

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,...

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 Człowiek kulturalny zamienia się w bestię w trzech przypadkach:...

Wykład1,str.4 Człowiek kulturalny zamienia się w bestię w trzech przypadkach: kiedysiadazakierownicęsamochodu,...

Wykład1,str.4 Człowiek kulturalny zamienia się w bestię w trzech przypadkach: kiedy siada za kierownicę samochodu, kiedyjegodrużynagraważnymecz,...

Wykład1,str.4 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.5 czytelność programów

Wykład1,str.5 czytelność programów pisalność (łatwość pisania) programów

Wykład1,str.5 czytelność programów pisalność (łatwość pisania) programów niezawodność programów

Wykład1,str.5 czytelność programów pisalność (łatwość pisania) programów niezawodność programów koszty

Wykład1,str.6 Czytelność programów rozumienie kodu praca wspólna pielęgnacja

Wykład1,str.6 Czytelność programów 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

Wykład1,str.6 Czytelność programów 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 n=n+1; n+=1;

Wykład1,str.6 Czytelność programów 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;

Wykład1,str.6 Czytelność programów 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ść

Wykład1,str.6 Czytelność programów 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 Czytelność programów rozumienie kodu praca wspólna pielęgnacja ortogonalność pojęć ogólne zasady, stosowalne w ten sam sposób do wszystkiego

Wykład1,str.7 Czytelność programów 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

Wykład1,str.7 Czytelność programów 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 Czytelność programów rozumienie kodu praca wspólna pielęgnacja ortogonalność pojęć ogólne zasady, stosowalne w ten sam sposób do wszystkiego

Wykład1,str.8 Czytelność programów 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

Wykład1,str.8 Czytelność programów 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 Czytelność programów rozumienie kodu praca wspólna pielęgnacja ortogonalność pojęć ogólne zasady, stosowalne w ten sam sposób do wszystkiego

Wykład1,str.9 Czytelność programów 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ść.

Wykład1,str.9 Czytelność programów 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 Czytelność programów 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);

Wykład1,str.10 Czytelność programów 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); 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"

Wykład1,str.10 Czytelność programów 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 Łatwość pisania programów prostota i ortogonalność: duża liczba gotowych konstrukcji trudno się ich nauczyć i łatwo użyć błędnie

Wykład1,str.11 Łatwość pisania programów 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

Wykład1,str.11 Łatwość pisania programów 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 Łatwość pisania programów abstrakcja możliwość definiowania złożonych danych i operacji i używania ich bez pamiętania szczegółów definicji

Wykład1,str.12 Łatwość pisania programów 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

Wykład1,str.12 Łatwość pisania programów 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 Łatwość pisania programów ekspresywność łatwość wyrażenia w języku pojęć potrzebnych do obliczeń.

Wykład1,str.13 Łatwość pisania programów 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]);

Wykład1,str.13 Łatwość pisania programów 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]); język PHP foreach($tabl as $ind => $wart) echo" $ind: $wart\n";

Wykład1,str.13 Łatwość pisania programów 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 Łatwość pisania programów ekspresywność łatwość wyrażenia w języku pojęć potrzebnych do obliczeń.

Wykład1,str.14 Łatwość pisania programów 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.14 Łatwość pisania programów 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.14 Łatwość pisania programów 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.14 Łatwość pisania programów 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.14 Łatwość pisania programów 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.14 Łatwość pisania programów 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.14 Łatwość pisania programów 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.14 Łatwość pisania programów 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.14 Łatwość pisania programów 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.14 Łatwość pisania programów 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.14 Łatwość pisania programów 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.14 Łatwość pisania programów 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.14 Łatwość pisania programów 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.14 Łatwość pisania programów 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.14 Łatwość pisania programów 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.14 Łatwość pisania programów 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 Łatwość pisania programów 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); } }

Wykład1,str.15 Łatwość pisania programów 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); } } rekursja poprawia ekspresywność bez rekursji skomplikowane operacje na stosie

Wykład1,str.16 Niezawodność sprawdzanie typu

Wykład1,str.16 Niezawodność sprawdzanie typu: Przykład: M printf("witam!\n"+1); bez sprawdzania typów: itam! ze sprawdzaniem typów: sygnał błędu

Wykład1,str.16 Niezawodność sprawdzanie typu: Przykład: M printf("witam!\n"+1); bez sprawdzania typów: itam! ze sprawdzaniem typów: sygnał błędu Przykład: M printf("%i\n",10.0); bez sprawdzania typów: 1624615624 (C daje ostrzeżenie) ze sprawdzaniem typów: sygnał błędu

Wykład1,str.17 Niezawodność reakcja na wyjątki(błędy wykonania)

Wykład1,str.17 Niezawodność reakcja na wyjątki(błędy wykonania): Przykład: M double srednia(int N, double tab[n]) { doublesuma=0.0; for(inti=0;i<n;i++) suma+=tab[i]; return suma/n; }

Wykład1,str.17 Niezawodność reakcja na wyjątki(błędy wykonania): Przykład: M double srednia(int N, double tab[n]) { doublesuma=0.0; for(inti=0;i<n;i++) suma+=tab[i]; return suma/n; } Co zmienić, żeby program sensownie reagował na sytuację, gdy N = 0?

Wykład1,str.17 Niezawodność reakcja na wyjątki(błędy wykonania): Przykład: M double srednia(int N, double tab[n]) { doublesuma=0.0; for(inti=0;i<n;i++) suma+=tab[i]; return suma/n; } Co zmienić, żeby program sensownie reagował na sytuację, gdy N = 0? bez obsługi wyjątków: przebudować funkcję srednia, albo zgodzić się, że program czasem padnie

Wykład1,str.17 Niezawodność reakcja na wyjątki(błędy wykonania): Przykład: M double srednia(int N, double tab[n]) { doublesuma=0.0; for(inti=0;i<n;i++) suma+=tab[i]; return suma/n; } Co zmienić, żeby program sensownie reagował na sytuację, gdy N = 0? bez obsługi wyjątków: przebudować funkcję srednia, albo zgodzić się, że program czasem padnie z obsługą wyjątków: zaprogramować własną reakcję

Wykład1,str.18 Niezawodność unikanie aliasów

Wykład1,str.18 Niezawodność unikanie aliasów: Przykład: M inta;int b=&a; a=0; b=1; printf("a==%i\n",a);

Wykład1,str.18 Niezawodność unikanie aliasów: Przykład: M inta;int b=&a; a=0; b=1; printf("a==%i\n",a); Drukuje: 1, chociaż wartość zmiennej a nie została jawnie zmieniona.

Wykład1,str.18 Niezawodność unikanie aliasów: Przykład: M inta;int b=&a; a=0; b=1; printf("a==%i\n",a); Drukuje: 1, chociaż wartość zmiennej a nie została jawnie zmieniona. Aliasy pozwalają na niejawną zmianę wartości, a to prowadzi do błędów.

Wykład1,str.19 Koszt stworzenia programu pielęgnacji niezawodności

Wykład1,str.19 Koszt stworzenia programu pielęgnacji niezawodności koszt każdorazowego wykonania programu(zależy od natury zagadnienia i jakości stosowanego algorytmu)

Wykład1,str.19 Koszt stworzenia programu pielęgnacji niezawodności koszt każdorazowego wykonania programu(zależy od natury zagadnienia i jakości stosowanego algorytmu) koszt kompilacji programu(zależy od prostoty języka i jakości kompilatora)

Wykład1,str.19 Koszt stworzenia programu pielęgnacji niezawodności koszt każdorazowego wykonania programu(zależy od natury zagadnienia i jakości stosowanego algorytmu) koszt kompilacji programu(zależy od prostoty języka i jakości kompilatora) koszt napisania programu(zależy od łatwości pisania)

Wykład1,str.19 Koszt stworzenia programu pielęgnacji niezawodności koszt każdorazowego wykonania programu(zależy od natury zagadnienia i jakości stosowanego algorytmu) koszt kompilacji programu(zależy od prostoty języka i jakości kompilatora) koszt napisania programu(zależy od łatwości pisania) koszt pielęgnacji programu(zależy od czytelności)

Wykład1,str.19 Koszt stworzenia programu pielęgnacji niezawodności koszt każdorazowego wykonania programu(zależy od natury zagadnienia i jakości stosowanego algorytmu) koszt kompilacji programu(zależy od prostoty języka i jakości kompilatora) koszt napisania programu(zależy od łatwości pisania) koszt pielęgnacji programu(zależy od czytelności) koszt zawodności programu

Wykład1,str.19 Koszt stworzenia programu pielęgnacji niezawodności koszt każdorazowego wykonania programu(zależy od natury zagadnienia i jakości stosowanego algorytmu) koszt kompilacji programu(zależy od prostoty języka i jakości kompilatora) koszt napisania programu(zależy od łatwości pisania) koszt pielęgnacji programu(zależy od czytelności) koszt zawodności programu koszt nauczenia się języka(zależy od jego prostoty i ortogonalności)

Co kształtuje języki programowania? Wykład1,str.20 Architektura komputera(bardzo uproszczona)

Co kształtuje języki programowania? Wykład1,str.20 Architektura komputera(bardzo uproszczona) 0 1 2 3 4 5 PAMIĘĆ n 1 Komputer von Neumanna: bierna pamięć adresowana(numerowana); w niej rozkazy i dane

Co kształtuje języki programowania? Wykład1,str.20 Architektura komputera(bardzo uproszczona) 0 1 2 3 4 5 PAMIĘĆ PROCESOR licz. rozkazów rejestr arytm. n 1 Komputer von Neumanna: bierna pamięć adresowana(numerowana); w niej rozkazy i dane; czynnyprocesor

Co kształtuje języki programowania? Wykład1,str.20 Architektura komputera(bardzo uproszczona) PAMIĘĆ PROCESOR 0 licz. rozkazów 1 2 3...... rejestr arytm. 4 5 n 1 Komputer von Neumanna: bierna pamięć adresowana(numerowana); w niej rozkazy i dane; czynnyprocesor: licznik rozkazów wskazuje adres rozkazu do wykonania

Co kształtuje języki programowania? Wykład1,str.20 Architektura komputera(bardzo uproszczona) PAMIĘĆ PROCESOR 0 licz. rozkazów 1 2 3 4 5............... rejestr arytm..... n 1 Komputer von Neumanna: bierna pamięć adresowana(numerowana); w niej rozkazy i dane; czynnyprocesor: licznik rozkazów wskazuje adres rozkazu do wykonania, działania wykonują się między rejestrem a komórką pamięci.

Co kształtuje języki programowania? Wykład1,str.20 Architektura komputera(bardzo uproszczona) PAMIĘĆ PROCESOR 0 1 2 3 4 5............. licz. rozkazów.. rejestr arytm..... WEJŚCIE/WYJŚCIE n 1 Komputer von Neumanna: bierna pamięć adresowana(numerowana); w niej rozkazy i dane; czynnyprocesor: licznik rozkazów wskazuje adres rozkazu do wykonania, działania wykonują się między rejestrem a komórką pamięci.

Co kształtuje języki programowania? Wykład1,str.21 Architektura komputera(bardzo uproszczona) Komputer von Neumanna: inicjalizuj licznik rozkazów; while(prawda) { /*czylibezkońca*/ pobierz instrukcję spod adresu w liczn.rozk.; zwiększ liczn.rozk. o 1; wykonaj pobraną instrukcję; }

Co kształtuje języki programowania? Wykład1,str.21 Architektura komputera(bardzo uproszczona) Komputer von Neumanna: inicjalizuj licznik rozkazów; while(prawda) { /*czylibezkońca*/ pobierz instrukcję spod adresu w liczn.rozk.; zwiększ liczn.rozk. o 1; wykonaj pobraną instrukcję; } Taka architektura powoduje, że programowanie imperatywne(rozkazy dla komputera, jeden po drugim) jest bardziej naturalne dla komputera chociaż nie dla człowieka.