Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Wykład 6 Inżynieria programowania Inżynieria Środowiska.

Podobne prezentacje


Prezentacja na temat: "Wykład 6 Inżynieria programowania Inżynieria Środowiska."— Zapis prezentacji:

1 Wykład 6 Inżynieria programowania Inżynieria Środowiska

2 Algorytm - rozwiązywanie "krok po kroku" dowolnego problemu. Algorytm jest to sformalizowany ciąg logicznie powiązanych instrukcji (poleceń, rozkazów), których wykonanie pozwoli na przetworzenie informacji wejściowych (danych) w informacje wyjściowe (wyniki). ALGORYTMY

3 Algorytm ma przeprowadzić system z pewnego stanu początkowego do pożądanego stanu końcowego. Badaniem algorytmów zajmuje się algorytmika.

4 Każdy algorytm komputerowy musi być wprowadzony do komputera w bardzo rygorystycznie zdefiniowanym języku - jednoznaczne instrukcje. Jeżeli dany algorytm da się wykonać na maszynie o dostępnej mocy obliczeniowej i pamięci oraz akceptowalnym czasie, to mówi się że jest to algorytm obliczalny. Algorytm – przepis niezależny od implementacji (NARZĘDZIA) Program – zastosowanie algorytmu w języku zrozumiałym przez komputer

5 analiza treści zadania wykaz danych wejściowych; wiadomych i niewiadomych oraz relacji między nimi sprawdzenie czy zadanie posiada jednoznaczne rozwiązanie wybór metody rozwiązania zadania opis czynności dla wybranej metody rozwiązania sporządzenie i przedstawienie wyników rozwiązania zadania Czynności służące do rozwiązania zadania:

6 Opis słowny - przedstawienie kolejnych czynności (akcji) na elementach (danych). Przykład:przepis kulinarny Schemat blokowy – operacje na danych przedstawione graficznie w postaci elementarnych bloków. Sposoby zapisu algorytmów

7 1) Każda operacja jest umieszczona w bloku 2) Schemat ma tylko jeden blok "START" i przynajmniej jeden blok "STOP" 3) Bloki mają połączenia ukierunkowane 4) Z bloku wychodzi jedno połączenie; wyjątki - "STOP" (nie wychodzą żadne połączenia) - blok "warunkowy" ( wychodzą dwa połączenia opisane TAK i NIE) 5) W bloku "operacyjnym" odbywa się nadanie wartości (przypisanie) znak := ZASADY BUDOWY SCHEMATU BLOKOWEGO

8 STARTSTOP oblicz suma:=a+b Instrukcja wykonawcza (proces) blok operacyjny wczytaj a,b,xpisz suma, wynik Łącznik stronicowy 1 suma>0 TAK NIE Start Stop Blok decyzyjny Operacje wejścia i wyjścia Reguły graficzne tworzenia schematów blokowych ?

9 Metodyka algorytmy obliczeniowe ( - np. całkowanie numeryczne, obliczanie funkcji z sumy wyrazów ciągu, wyznaczanie liczb pierwszych, zamiana systemów liczbowych itp.) algorytmy sortujące algorytmy wyszukujące algorytmy kompresji Klasy problemów algorytm "krok po kroku" algorytmy rekurencyjne algorytmy genetyczne algorytmy sztucznej inteligencji

10 opis obiektów do przechowywania danych wejściowych, danych pośrednich i wyników opis czynności jakie należy wykonać z obiektami, co realizujemy przy pomocy instrukcji, które opisują: sposób działania kolejność ich wykonywania ewentualne warunki jakie muszą być spełnione opis wyników - zawiera sposób udostępnienia wyników rozwiązanego zadania Dla utworzenia algorytmu konieczne są:

11 Aby zatem tworzyć działające programy wymagane są: -jakaś metoda wprowadzania i przechowania danych (liczb, tekstów itp.) -jakieś instrukcje, które umożliwią obliczenia wyników -jakieś metody pokazania wyniku

12 Proste (sekwencyjne) - kolejność realizacji poszczególnych operacji jest ściśle określona i żadna z nich nie może być pominięta ani powtórzona - nie używa się bloków warunkowych. Z rozwidleniem - zawiera w sobie wybór jednej z kilku możliwych dróg realizacji danego zadania, istnieje przynajmniej jeden blok warunkowy. Z pętlą, często w trakcie realizacji zadania konieczne jest powtórzenie niektórych operacji różniących się zestawem danych. Pętla obejmuje tę część bloków, która ma być powtarzana. Złożone - będące kombinacją powyższych sieci. Rodzaje sieci działań:

13 Przykład W algorytmach sortujących potrzebny jest mechanizm zamiany wartości umieszczonych w dwóch zmiennych, jeśli są w niewłaściwej kolejności Algorytm wymaga zmiennej pomocniczej (jak do zamiany zawartości dwóch szklanek potrzebna jest trzecia szklanka) Opis słowny: 1. Wczytaj dane do obiektów 1 i 2 2. Przepisz zawartość obiektu 1 do obiektu pomocniczego 3. Przepisz zawartość obiektu 2 do obiektu 1 4. Przepisz zawartość obiektu pomocniczego do obiektu 1 5. Wyprowadź wartości obiektów 1 i 2

14 pom:=a wczytaj a,b a:=b b:=pom drukuj a, b schemat blokowy zamiany wartości w dwóch zmiennych

15 A B obiekt pomocniczy

16 Przykład 2 – z blokiem decyzyjnym i pętlą Ile razy trzeba podzielić na pół daną liczbę, aby uzyskać wartość mniejszą od Opis słowny: 1.Wczytaj liczbę i 2.Ustal wartość licznika równą 0 3.Podziel liczbę przez 2 4.Zwiększ licznik o 1 5.Sprawdź czy wynik jest mniejszy od, jeśli tak, to przejdź do punktu 6, jeśli nie to wróć do punktu 3 6.Wyprowadź wartość licznika

17 schemat blokowy liczba:=liczba/2 wczytaj liczba, licznik:=0 licznik:=licznik+1 drukuj licznik liczba< TAK NIE czy algorytm jest poprawny??

18 liczba:=liczba/2 wczytaj liczba, licznik:=0 drukuj licznik liczba< TAK NIE licznik:=licznik+1 A może tak lepiej?

19 Widzimy, że potrzebna jakaś ocena poprawności wczytaj liczba, licznik:=0 drukuj licznik liczba< TAK NIE licznik:=licznik+1 A może jeszcze inaczej? liczba:=liczba/2 Który z tych trzech algorytmów jest poprawny?

20 A więc, aby tworzyć efektywne algorytmy i móc je aplikować programowo, potrzebne są następujące elementy: Spektrum obiektów programowych, możliwość ich odróżniania, klasyfikacja do typu, umieszczanie ich identyfikatorów (nazw) i wartości w pamięci Spektrum operacji (operatorów nadawania wartości, arytmetycznych, porównania) – operacje na obiektach! Mechanizm sterowania – co wykonać następnie po aktualnej operacji

21 1. Umieszczamy elementy w obiektach od x[1] do x[n] 2. Zmiennej pomocniczej min przypisujemy 1 3. Dla zmiennej i od 2 do n-1 z krokiem co 2 wykonujemy: Zmiennej pomocniczej min_lok przypisujemy indeks mniejszej liczby z pary x[i], x[i+1] (czyli przypiszemy i lub i+1) jeśli element x[min_lok] jest mniejszy (w sensie użytego operatora) od elementu x[min], to zmiennej min przypisujemy wartość min_lok 4. Jeśli n jest liczbą nieparzystą, to kończymy algorytm. Jeśli n jest liczbą parzystą to wykonujemy: jeśli element x[n] jest mniejszy (w sensie użytego operatora) od elementu x[min], to zmiennej min przypisujemy wartość n i kończymy algorytm Optymalny algorytm wyszukiwania indeksu najmniejszego elementu (czyli numeru elementu)

22 12345 … min_lok

23 Podstawy programowania Do 1954 roku – język maszynowy (Eniac, Mark I- USA) – niskiego poziomu - dla Kodowanie instrukcji procesora w postaci ciągu liczb dwójkowych (elementarny rozkaz i dane) - pracochłonność (same liczby, długie algorytmy działań takich jak dodawanie i mnożenie) – np. rzymskie - trudność śledzenia błędów

24 np. mnożenie MPY (multiply) język symboliczny - assembler ASSEMBLER – także program tłumaczący na kod maszynowy (wewnętrzny) DISSASSEMBLER – tłumaczenie odwrotne lata 50-te - zastąpienie kodów liczbowych operacji nazwami mnemotechnicznymi - wąski zbiór rozkazów, prymitywna architektura ówczesnych komputerów, -brak rejestrów (pamięci pomocniczych), -brak operacji zmiennoprzecinkowych Cechy Assemblera

25 1954 –języki tzw. wysokiego poziomu (kod maszynowy i assembler to niski poziom – bliższy procesorowi) Zapis operacji w sposób łatwiejszy, zrozumiały i dobrze kontrolowany przez programistę Po stworzeniu kodu programu w języku następuje proces translacji (tłumaczenia, kompilacji) na język wewnętrzny komputera.

26 - zrozumiałość - jednoznaczność - skuteczność tłumaczenia Problemy: Języki wysokiego poziomu po etapie początkowym stały się maszynowo niezależne z powodu wielu wersji translatorów (programów kompilujących) Kompilator (ang. compiler) to program służący do tłumaczenia kodu napisanego w jednym języku (języku źródłowym) na równoważny kod w innym języku (języku wynikowym). Najczęściej jest to tłumaczenie z języka wysokiego poziomu (łatwiejszego dla programisty) ma język wewnętrzny procesora. Proces ten nazywany jest kompilacją.

27 COBOL – dla przedsiębiorstw, język prawie naturalny (ang) MULTIPLY – mnożenie, ADD – dodawanie, czy dobrze?? Do dziś specjaliści potrzebni (w USA 500 $/godz za zmiany daty w 2000) W kolejnych latach - obfitość języków programowania BASIC, LOGO – prostota, interpretacja w odróżnieniu od kompilacji, tłumaczenie na bieżąco każdej instrukcji a nie programu w całości PASCAL, C, C+, C++ - języki strukturalne z elementami tzw. programowania obiektowego OOP (Object Oriented Programming) – języki zorientowane obiektowo (PROLOG, Visual Basic, Delphi, Java, C#) Języki wysokiego poziomu

28 OBIEKTY - dane dana (nazwa danej, wartość danej) deklaracje, definicje- opisy obiektów instrukcje - czynności na obiektach Program - algorytm zapisany w języku programowania

29 Podprogram - wyodrębniona część programu (ze względu na czytelność lub wielokrotne użycie) posiadająca wyodrębnioną nazwę i sposób wymiany informacji z pozostałymi jego częściami

30 Deklaracja podprogramu - opis podprogramu Instrukcja wywołania podprogramu – wykonanie, zastosowanie podprogramu wewnątrz programu głównego lub innego podprogramu Kod źródłowy - tekst programu w języku programowania (plik tekstowy pas) Kompilacja - tłumaczenie (w całości) kodu źródłowego na wykonywaną postać binarną, ładowalną (plik exe) – odrębny proces Interpretacja – tłumaczenie kolejnych instrukcji w trakcie procesu wykonywania

31 Przetwarzanie programu użytkowego Komunikaty o błędach PROGRAMISTA EDYCJAKompilacja Wykonanie postać źródłowa programu postać ładowalna dane wyniki parametry

32 Przykładowy język Javascript JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania. JavaScript jest oddzielnym językiem (nie jest uproszczoną wersją Javy). Może być osadzany w innych programach, na przykład w przeglądarce internetowej, aby, mając dostęp do obiektów otoczenia (np. modelu obiektowego przeglądarki internetowej - DOM), można sprawować nad tym otoczeniem kontrolę. Javascript jest łatwy w nauce i pozwala na pewne zdynamizowanie stron internetowych. Przeglądarki mogą pytać o zezwolenie na wykonanie skryptu.

33 Wstawienie skryptu do dokumentu HTML Skrypty JavaScript są zagnieżdżane w dokumentach HTML. Skrypt JavaScript umieszczane są między znacznikami i. treść skryptu

34 To jest tekst 1 treść skryptu 1 To jest tekst 2 treść skryptu 2 Może istnieć wiele skryptów naprzemiennie z pozostałym kodem HTML

35 Aby tworzyć działające skrypty JavaScript wymagane są: -jakaś metoda wprowadzania i przechowania danych (liczb, tekstów) -jakieś instrukcje, które umożliwią obliczenia wyników -jakieś metody pokazania wyniku

36 // obiekt document i jego metoda write - wypisanie tekstu document.write ("To jest zwykły tekst"); // wysyłamy też znacznik HTML document.write (" "); //nadajemy wartość zmiennej x=5; //... i wyświetlamy jej wartość document.write("Wartość zmiennej x : "+x); document.write (" To jest liczba PI:"+Math.PI); a to już akapit poza skryptem Wykorzystanie skryptu Javascript w dokumencie HTML właściwość obiektu

37 Komentarz o kilku wierszach, /* treść komentarza */ Jednowierszowy komentarz // tekst Komentarze Kilka zasad pisania skryptów Wykorzystywane są w celu: - opisy wyjaśniające - dezaktywowanie instrukcji (testy, błędy)

38 Identyfikatory Są to nazwy elementów (zmiennych, obiektów, funkcji) Zmienne służą do przechowania wartości określonego typu Jednym z podstawowych sposobów nadania wartości zmiennej jest instrukcja przypisania (nadania wartości) Przykłady identyfikatorów dla zmiennych: xalfaAlfamojaZmiennaB11c_33 Ciąg liter, cyfr, znaków podkreślenia (nie wolno spacji!) Musi się zaczynać od litery Ważne duże i małe litery ! (w odróżnieniu od innych języków) to dwie różne zmienne styl "wielbłądzi"

39 Przypisania: = += x+=5 odpowiada x=x+5, –= x–=5 odpowiada x=x–5, *= x*=5 odpowiada x=x*5, /= x/=5 odpowiada x=x/5, ++inkrementacja – zwiększenie o 1 x++ odpowiada x=x+1 --dekrementacja – zmniejszenie o 1 x-- odpowiada x=x-1 %= x%=5 odpowiada x=x%5 (reszta z dzielenia) Operatory + konkatenacja (łączenie tekstów) "Mateusz " + 'Kowalski' Arytmetyczne: + -*/ %(reszta z dzielenia) para " lub para '

40 x = 7;//początkowo x ma wartość 7 x++; //zwiększamy o 1 x += 4; //dodajemy 4 x %= 10; //reszta z dzielenia z przez 10, a więc ….. 2 //tu trzeba by wypisać wartość x na ekranie, zaraz się nauczymy Przykładowo:

41 == !=(nierówne) >= Operatory porównania Przykładowo: x==5 x>=3 a+b> 3*y jest to pytanie: czy jest spełnione? odpowiedź: tak lub nie (TRUE/FALSE)

42 koniunkcja (i)&& alternatywa (lub) || negacja ! true && false daje false !false daje true Operatory logiczne

43 Instrukcje języka oddzielamy średnikami (jeśli zapisujemy w tym samym wierszu). Czasem blok kilku instrukcji otaczamy klamrami { } zazwyczaj we wnętrzu instrukcji warunkowych i iteracyjnych (np. if, for, while) – o nich za chwilę Instrukcje – wykonanie akcji! instrukcja1; { instrukcja2; instrukcja3; instrukcja4; } traktowany w całości jako blok instrukcji

44 Typy instrukcji - przypisania (nadania wartości); - warunkowe - pętle - wykonania funkcji (metody obiektu)

45 zmienna = wyrażenie; Instrukcja przypisania Przykłady: x=5; alfa= 3*x; b15=(3-x)+2/alfa; Po lewej stronie znaku = tylko nazwa zmiennej!!! Po prawej stronie znaku = piszemy wyrażenie (bardzo podobne jak w Excelu), zawierające liczby, operatory, nawiasy okrągłe, funkcje – metody obiektów, oraz zmienne o ZNANYCH WARTOŚCIACH Wyrażenie jest obliczane i jego wartość przechowana w zmiennej

46 document.write ("To jest zwykły tekst "); x=5; //przypisujemy wartość zmiennej // wyświetlamy jej wartość document.write("Wartość zmiennej x : "+x+" "); napis="Mateusz " + 'Kowalski'; document.write(napis); Instrukcja wypisania na ekranie document.write (element); Jak widzimy można wysyłać znaczniki (do pozycjonowania, formatowania itp.) document to wbudowany obiekt w Javascript, a write (pisz) to jedna z jego funkcji (tzw. metoda) identyfikator obiektu i identyfikator jego metody oddzielamy kropką Przykład

47 Wbudowany obiekt Math zawiera wartości matematyczne, jako właściwości (ang. property) i metody (ang. method). Są tutaj przechowywane pewne stałe matematyczne : Math.property lub gotowe funkcje Math.method gdzie property lub method jest jednym z podanych niżej elementów. Obiekt Math (uwaga! – z dużą literą M)

48 Ee - stała Eulera, która wynosi ok PI wartość liczby, czyli ok property (właściwości)

49 abs(wyrażenie)wartość bezwzględna liczby cos(wyrażenie) sin(wyrażenie) tan(liczba) funkcje trygonometryczne (argument w radianach!!!) ceil(liczba)zaokrąglenie do całkowitej w górę floor(liczba)zaokrąglenie do całkowitej w dół round(liczba)zaokrąglenie do najbliższej całkowitej exp(liczba)e x UWAGA!!! log(liczba)logarytm naturalny liczby ! pow(liczba1,liczba2) wartość liczby1 podniesionej do potęgi liczby2 random() wartość pseudolosowa z przedziału (0,1) – bez argumentu sqrt(liczba)pierwiastek kwadratowy liczby method (metody)

50 document.write(Math.sin(4*Math.PI/180)+" "); wynik=Math.sin(3*Math.PI/180); document.write(wynik); Przykłady: lub wykorzystując zmienną:

51 //Pierwiastki równania kwadratowego a=5; b=5; c=1; delta=b*b-4*a*c; pdelta=Math.sqrt(delta); x1=(-b-pdelta)/2/a;//albo …/(2*a) x2=(-b+pdelta)/2/a; document.write('x1:'+x1+" "); document.write('x2:'+ x2+" "); Sekwencja obliczeń: x1: x2: Oczywiście gdy delta będzie ujemne, to błąd! NaN – nieokreślone Jak przeciwdziałać? Instrukcja badania warunku if (test, sprawdzenie!)

52 x=Math.PI; //musimy określić wartość x y= (Math.pow(Math.sin(x),2) - Math.pow((x-3)*x,1/3)) /(Math.abs(Math.pow(x,-3))+4); document.write(y); łatwo o błędy (dużo nawiasów!) Uwaga: wolno spacje, ale nie wewnątrz nazw wolno przenieść do następnego wiersza zapis w skrypcie JavaScript Przykład pisania wyrażeń

53 x=Math.PI; //jak poprzednio L1= Math.pow(Math.sin(x),2); L2=Math.pow((x-3)*x,1/3); L= L1- L2;//licznik M= Math.abs(Math.pow(x,-3))+4; //mianownik y= L/M; //wynik document.write(y); jak sobie ułatwić? wprowadzać zmienne pomocnicze liczymy etapami….

54 Metoda dla obiektu window, tworząca okienko dialogowe z napisem informacyjnym lub wartością numeryczną. alert raz=2; alert("Witaj!"); alert("Witaj "+raz+"-gi raz"); dokładniej window.alert, ale domyślny obiekt to window Inna metoda wyprowadzenia danych - wyświetlanie w dodatkowym okienku

55 Instrukcja warunkowa if...else opcjonalnie czyli można opuścić-wówczas przy niespełnionym warunku nic nie jest wykonywane Instrukcja if powoduje wykonanie kodu źródłowego instrukcja1 tylko wtedy, gdy warunek logiczny jest spełniony. Jeżeli zostanie użyty poszerzony wariant instrukcji if, to po spełnieniu warunku zostanie wykonany kod instrukcja1 lecz w przeciwnym wypadku zostanie wykonany kod instrukcja2. if (warunek) { kod wykonywany jeżeli warunek spełniony } else { kod wykonywany jeżeli warunek nie spełniony }

56 x=5; //przypisujemy wartość zmiennej if (x>0) document.write("tak"); // warunkowo else document.write("nie"); Prosty przykład dla instrukcji warunkowej tak

57 if (warunek1) { kod wykonywany jeżeli warunek spełniony } else if (warunek2){ instrukcje wykonywane jeżeli warunek2 spełniony } else if (warunek3){ instrukcje wykonywane jeżeli warunek2 spełniony } else { instrukcje wykonywane jeżeli warunki powyższe niespełnione } Najogólniejsza postać instrukcji warunkowej – jeśli mamy kilka warunków

58 x=Math.round(Math.random()*10);//losowanie – l. całk. od 0 do 10 if (x<5) { document.write("Mniejsze od 5"); } else if ((x>=5)&&(x<=8) ){// koniunkcja document.write("W przedziale [5, 8]"); } else if ((x>8) &&(x<10)){// inny przedział document.write("W przedziale (8,10) więc tylko 9"); } else{//pozostałe document.write("pozostało tylko 10"); } document.write(" Sprawdzam :",x); Przykład badania kilku warunków:

59 Instrukcja wykorzystywana do wielokrotnego wykonania pewnego zestawu instrukcji. Pętla for powtarza instrukcje wnętrza pętli aż do momentu, kiedy testowany warunek staje się fałszywy. W JavaScript pętla for jest podobna do pętli w Java i C. Instrukcja iteracyjna - "pętla" for (dla)

60 for ( inicjalizacja licznika; test_logiczny; inkrementacja ) instrukcja; Pętla for posiada następującą składnię: w klamrach { } instrukcje wewnętrzne jeśli jest ich więcej niż jedna for ( inicjalizacja licznika; test_logiczny; inkrementacja ) { instrukcja1; instrukcja2;... } lub

61 for (i=0; i<11; i++) { document.write(i+" "); } Przykład dla iteracji for można wykorzystywać licznik

62 for (i=0; i<91; i++) { document.write(i+" "+Math.sin(i*Math.PI/180)+" "); } Przykład metoda write może też być wieloargumentowa (argumenty oddzielane plusami lub przecinkami) document.write(i," ",Math.sin(i*Math.PI/180)," ");

63 for (i=1; i<=3; i++) for (k=1; k<=4; k++) document.write(i+" "+k+" "); Przykład pętli zagnieżdżanej dla każdego kroku pętli zewnętrznej wykonywana jest pętla wewnętrzna, czyli instrukcja wykona się 3*4=12 razy wykorzystuje się np. w tablicach dwuwymiarowych jedna spacja

64 n = 0; x = 0; while( n "); } Pętla while Wykonuje iterację (powtarza instrukcje) gdy warunek spełniony, gdy nie, to przechodzi dalej. Sprawdzenie warunku odbywa się przed wykonaniem instrukcji. while (warunek) { instrukcje }


Pobierz ppt "Wykład 6 Inżynieria programowania Inżynieria Środowiska."

Podobne prezentacje


Reklamy Google