ROZDZIAŁ 3
Zasady komunikacji człowieka z komputerem.
Komunikacja między człowiekiem a komputerem odbywa się bezpośrednio. Służy temu zarówno sprzęt techniczny, jak też wygodne w użyciu oprogramowanie. Wcześniej łańcuch pośredników był długi. Powodowało to wiele przekłamań, zmian, różnica między zadaniami sformułowanymi przez użytkownika a wykonanymi przez system komputerowy była duża. Poza tym cała operacja przetwarzania danych trwała bardzo długo i wymagała opracowania szczegółowej dokumentacji systemu, wielu uzgodnień i zatwierdzeń.
Charakterystyka komunikacji człowiek - komputer.
Można tu wyróżnić 2 poziomy:
Bezpośredni układ człowiek-komputer - reakcja komputera i komunikat o efektach działania są natychmiastowe (ewentualne opóźnienie z właściwości użytego sprzętu i rodzaju zadania).
Układy można przedstawić: K-KR-M, K-KR-D, M-KR-M, M-KR-D , gdzie K-klawiatura, KR-komputer, M-monitor, D-drukarka
Rozbudowany i wielostopniowy układ - gdy dla zadania czas nie ma znaczenia, ewentualnie jest dopuszczone opóźnienie reakcji. Na wejściu lub/i wyjściu pojawiają się maszynowe nośniki danych (dyski, dyskietki, taśmy magnetyczne).
Co określamy terminem programowanie i z jakich działań się ono składa?
Programowanie to działanie przez które realizowana jest komunikacja człowiek-komputer. Jest sekwencją działań składającą się z:
Opracowania algorytmu rozwiązania problemu,
Przetłumaczenia algorytmu na wybrany język komunikacji czł-komp,
Uruchomienia i zrealizowania programu
Podaj określenie algorytmu. Jakie są jego zadania?
Algorytm to sposób postępowania przedstawiający jednoznacznie skończoną ilość kroków (etapów) niezbędnych dla rozwiązania określonego zadania. Algorytm jest tak sformułowany, żeby postępując wg jego wskazówek, komputer mógł rozwiązać określony problem. Algorytmy są rozwiązaniami takich zadań, które określamy jako algorytmiczne albo obliczeniowe
Jakie są podstawowe cechy algorytmu?
Uniwersalność (zapewnienie rozwiązania każdego zadania należącego do określonego typu zadań)
Jednoznaczność (prezentacja metody postępowania w postaci skończonej listy prostych i jednoznacznych rozkazów)
Zbieżność (dla każdego zbioru danych początkowych liczba operacji prowadzących do wyniku jest skończona)
Powtarzalność (każdy stosując analogiczne dane i algorytm uzyska analogiczne wyniki)
Jakie są najważniejsze rodzaje instrukcji sterujących i jakie mają one zadania?
Kolejność wykonywania działań jest opisywana przy pomocy instrukcji sterujących. Najważniejsze instrukcje:
Następstwa (wykonaj A, a następnie B)
Warunku/ if (jeżeli W to wykonaj A, a jeśli nie to wykonaj B)
Skoku (jeżeli W to skocz do A, jeśli Q to skocz do B)
Scharakteryzuj podstawowe formy prezentacji algorytmu.
Opis słowny, np. przepisy kulinarne, instrukcje składania mebli, obsługi urządzeń, sporządzenie bilansu działalności firmy
Notacja matematyczna - typowe wzory i reguły matemat + komentarze, np. rozwiązanie równań, obliczanie pierwiastków równania, rozwiązanie modelu matematycznego programowania
Graficzny schemat blokowy (najbardziej popularny) lub inna forma zapisu graficznego (tablica decyzyjna, tablica krzyżowa)
Jakie są podstawowe elementy schematu blokowego i jakie są ich zadania?
Schemat blokowy jest stosowany powszechnie dla rozwiązywania złożonych problemów. Zasady budowania schematów blokowych są bardzo proste, cechują się małą liczbą elementów, co pozwała na łatwość kontroli. Podstawowe elementy to;
Strzałka- wskazuje powiązania między poszczególnymi elementami
Operand - prostokąt w którym przedstawione są czynności arytmetyczne lub organizacyjne, dzięki którym otrzymuje się nową wartość, nowy format zapisu. Każdy operand ma powiązania z co najmniej jednym operandem poprzedzającym i jednym następującym.
Predykat lub blok warunkowy (romb) - do predykatu wchodzi zawsze tylko jedna strzałka, a wychodzą zawsze dwie. W predykacie przedstawione są czynności logiczne służące do sprawdzenia czy dany warunek został spełniony
Objaśnienia ( nie zamknięty prostokąt) - służą do przedstawienia komentarza dla użytkownika
Etykieta (okręg, elipsa, niekiedy trójkąt)- przedstawia początek/koniec schematu blokowego, ma tylko strzałki wyjściowe-start lub wejściowe-koniec.
Łącznik - specjalny typ etykiety, który ma za zadanie powiązanie poszczególnych części schematu, którego nie można przedstawić w jednej zwartej części
Stronicowy (koło)
Międzystronicowy (pięciokąt)
Jakie są najbardziej typowe schematy blokowe i w jaki sposób są one przedstawione?
Liniowe - wyjście z jednego bloku stanowi wejście do bloku następnego. Schemat blokowy obrazuje więc algorytm prosty. W takim algorytmie występuje sekwencja realizacji poszczególnych instrukcji, a każda z nich jest wykonywana jeden raz. Składa się tylko z operandów, strzałek i etykiet początku i końca
Z rozwidleniem - w zależności od spełnienia określonego warunku działanie rozdziela się na dwie ścieżki. Schemat blokowy obrazuje tu algorytm rozgałęziony. Składa się z j. w. +predykat
Z cyklem - istnieje pętla, która powoduje wykonanie iteracji. Taki schemat obrazuje algorytm cykliczny, bo może nastąpić wielokrotna realizacja tych samych sekwencji działań.
Przedstaw przykład prostego schematu blokowego.
Dodawanie dwóch dowolnych liczb
START CZYTAJ a,b C=:a+b DRUKUJ C KONIEC
Przedstaw przykład schematu blokowego z rozwidleniami.
Dzielenie dwóch liczb
START
CZYTAJ a,b
tak nie
DRUKUJ CZY b=0? C=:a/b
„DZIELENIE PRZEZ ZERO”
DRUKUJ
KONIEC
Przedstaw przykład schematu blokowego z cyklem.
Sumowanie dowolnych 20 liczb
START
DEKLARUJ A(20)
W=:0, i=:1
CZYTAJ A(i)
i=:i+1
w=:w+A(i)
tak nie
CZY i=:20?
DRUKUJ w
KONIEC
Przedstaw schemat blokowy dla wyboru towaru o największej jednostkowej cenie w supermarkecie.
START
DEKLARUJ ZBIÓR A
A1: nazwa towaru
A2: cena
CZYTAJ A(i) i=:i+1
Nie
CZY A(i)=0?
Tak
B=:0; C=:0
i=:i - 1
CZY i=0? DRUKUJ:
nie tak najwyższa cena A(C) KONIEC
CZY A2(i)=B?
Nie tak B=:A2(i), C=:i
Przedstaw na schemacie blokowym problem uruchomienia stojącego samochodu, jeżeli nie wiesz jak, usmażenie jajek na bekonie.
Określ budowę tablicy decyzyjnej i jej zadania.
Tablica decyzyjna przedstawia w postaci tablicy zbiór reguł decyzyjnych. W tablicy określony jest warunek lub układ warunków, jakie muszą być spełnione, żeby podjęta została określona czynność lub grupa czynności. Tablica decyzyjna ma budowę macierzową o następujących polach:
Wykaz warunków
Zapis warunków
Wykaz działań
Zapis działań
Pole wskaźników warunków i czynności tworzy tzw. zbiór reguł decyzyjnych. Liczba reguł decyzyjnych zależy od liczby warunków i maksymalnie może wynosić W= 2
, gdzie n - liczba warunków.
Przedstaw tablice decyzyjną dla osoby korzystającej z bankomatu.
|
|
R1 |
R2 |
R3 |
WARUNKI |
W1 |
T |
N |
T |
|
W2 |
T |
N |
T |
|
W3 |
T |
- |
N |
CZYNNOŚCI |
C1 |
X |
|
|
|
C2 |
|
X |
|
|
C3 |
|
|
X |
W - warunki C- czynności
W1 -prawidłowość wpisania PINu C1- wybranie pieniędzy
W2 -brak zastrzeżeń do wypłacalności C2 -otrzymanie pokwitowania
W3 - istnienie pieniędzy na koncie C3 - wyjęcie karty z bankomatu
Przedstaw budowę i przykład zastosowania tablicy krzyżowej.
Tablica krzyżowa przedstawia powiązanie między poszczególnymi elementami (w rozwiniętych tablicach także rodzaj tych zależności). Jest zatem dobrym narzędziem do analizy związków w konkretnych sytuacjach. Jej konstrukcja polega na stworzeniu dwuwymiarowej tablicy. Na przecięciu odpowiedniego wiersza i kolumny znajduje się odpowiedni parametr charakteryzujący istnienie powiązania między elementami i ew. rodzaj powiązania.
|
Komórka organizacyjna |
faktura |
Sprawozdanie z dziennej sprzedaży |
Bilans roczny |
1 |
Dyrektor naczelny |
|
|
Z |
2 |
Ds. finansowych |
Z |
Z |
|
3 |
|
|
|
|
|
|
|
|
|
n |
kasjer |
W |
- |
- |
Używając dowolnego schematu prezentacji algorytmu, przedstaw algorytm uruchomienia komputera i odczytania dyskietki z danym tekstem.
Np. tak jak w 16 zrobić tablicę decyzyjną. Warunki: włączenie komputera, prawidłowe włożenie dyskietki, istnienie danych na dyskietce. Czynności: odczytanie danych z dyskietki....Nie wiem do końca jak to zrobić, jeszcze pomyślę.
Co nazywamy językiem programowania i jakie są jego zadania?
Aby komputer mógł przetworzyć problem opisany przy pomocy algorytmu, musi być on opisany językiem programowania. Składa się on z notacji i reguł, wg których pisany jest program. Język programowania można określić jako zbiór znaków i reguł posługiwania się nimi i ich interpretacji w procesie komunikowania się.
Przedstaw podstawowe style tworzenia programów
Programowanie proceduralne
Programowanie deklaratywne
Programowanie obiektowe
Programowanie strukturalne
Przedstaw charakterystykę programowania proceduralnego.
Charakteryzuje się tym, że program powinien zawierać pełny opis rozwiązania problemu opisanego danym algorytmem. Opis ten jest przedstawiony w postaci sekwencji elementarnych czynności (instrukcji). Postępując wg tych instrukcji komp. z wyprowadzonych danych uzyskuje żądane wyniki. Program składa się z 2 części:
Deklaratywnej - opisuje się obiekty (dane), na których on działa
Proceduralnej - opisuje się czynności (instrukcje), które są wykonywane na tych danych
Instrukcje mogą być:
Proste np., zmiennej daje się nową wartość skoku, który powoduje zmianę sterowania w programie
Strukturalne (iteracyjne i warunkowe)
W programowaniu proceduralnym punktem centralnym jest procedura, a jego językami programowania są: Fortran, Algol, Pascal.
Przedstaw charakterystykę programowania deklaratywnego.
Polega na określeniu związków, czyli relacji między danymi a wynikami. Nie kładzie się nacisku na „jak przetwarzać?”(p. proceduralne), ale na „co ma zostać przetwarzane?”. Nie wnika się w szczegóły działania komputera. Język programowania to Prolog. Zalety:
Większa ekonomiczność pod względem zapisu niż p. proceduralne, fakt zapisu jeden raz może być używany na różne sposoby dzięki mechanizmowi wnioskowania
Elastyczność - powiększając wiedzę o nowe fakty nie musimy interesować się ich wykorzystaniem
Komunikatywność -problemy definiowane są w sposób naturalny, co bardziej zrozumiałe dla użytkownika
Przedstaw charakterystykę programowania obiektowego.
Jest próbą połączenia p. proceduralnego i p. deklaratywnego. Program jest tu opisem działania zbioru wzajemnie powiązanych obiektów. Kontaktują się one za pomocą komunikatów. Relacje między obiektami są wielostronne. Na opis obiektu składają się:
Metody- określają zachowanie się obiektu na informację np. zwiększ, przesuń
Atrybuty- strukturalizują obiekty, są częściami obiektu, np. w budynku to I piętro
Dziedziczenie- określa co na dany obiekt przechodzi z innych podobnych obiektów np. metody, atrybuty
Reguły- określają zachowania obiektów, posiadają część warunkową, która musi być spełniona, aby część aktywna mogła być zrealizowana
Ograniczenia- warunki, jakie muszą być zachowane między poszczególnymi wartościami atrybutów danego obiektu
P. obiektowe różni się od proceduralnego tym, że punktem centralnym jest obiekt (nie instrukcja). Nie jest to więc proces sekwencyjny, ale dynamiczny, w którym generowane są współbieżne procesy. Język : Smalltalk
Przedstaw charakterystykę programowania strukturalnego.
Celem tego programowania jest rygorystyczna organizacja procesu projektowania i kodowania programu w dążeniu do zapobieżenia błędów logicznych i innych. Cechy: jest zstępujące i modułowe. Zaleca się ograniczenia w stosowaniu instrukcji skoku (GO TO), bo narusza ona hierarchiczną strukturę programu przez możliwość dowolnego przekazywania sterowania w wybrane miejsce w programie. Zalety:
Narzucenie dyscypliny w rozwiązaniu zadania, a w tym gruntowna analiz programu, czynności, podział na moduły
Oszczędność pamięci operacyjnej - rzadko stosowane podprogramy modą być przechowywane na dysku
Wydajność programisty - podprogramy można opracować w sposób uniwersalny i przechowywać w bibliotece programów, programiści mogą z nich korzystać
Zmniejszenie kroków programowania powodujące zwiększenie wydajności programów
Łatwiejsza konserwacja i testowanie - zmiany dotyczą zwykle jednego modułu
Wada: konieczność zapewnienia spójności działania systemu, zapewnienia interface (połączeń) między modułami. Języki: Pascal, PL-1
Jakie są cele i zadania programowania typu top - down (zstępującego)?
Polega na rozłożeniu problemu na ścisłe określone podproblemy i badaniu związków między nimi (metoda przechodzenia od ogółu do szczegółu), np. system usprawniający zarządzanie jest zarysowany, a następnie zostają szczegółowo opracowane podsystemy marketingowy, logistyczny. Proces uszczegóławiania jest wielostopniowy, a rezultatem powinno być uzyskanie tak prostych problemów, że ich rozwiązanie można wyrazić w niewielkim programie. Zadania:
Tworzenie przejrzystych algorytmów - eliminacja błędów
Tworzenie spójnej wiązki celów, a więc zgodność celów podrzędnych i nadrzędnych (stosowane jest drzewo celów)
Jakie są cele i zadania programowania modułowego?
Polega na podzieleniu programu na logicznie uzasadnione i zamknięte części, a następnie programowaniu każdej z nich osobno (sprawia to mniejsze trudności w jego rozumieniu i oprogramowaniu). Moduł - element programu, który rozwiązuje określone zadania na określonym obszarze danych. Moduł powinien:
Być zdefiniowany -ma rozwiązać konkretny problem z danej dziedziny)
Mieć określoną wielkość - nie za długi
Posiadać jedno wejście i jedno wyjście
Być niezależny - zmiany wprowadzane do jednego modułu nie powinny wpływać na przetwarzanie w innych modułach
Jakie wymagania stawiane są formalnym językom programowania?
Język musi być łatwy do opanowania przez człowieka i posługiwania się nim
Sformalizowanie języka musi zapewnić jednoznaczność wszystkich jego elementów (znaków, wyrazów, zdań), co ułatwi opracowanie odpowiednich zasad wykonywania przez maszynę każdego polecenia
Musi umożliwiać zakodowanie minimalnego zbioru operacji elementarnych, niezbędnych do wykonania określonych prac na komputerze
Powinien umożliwiać proste kodowanie operacji specyficznych dla danej klasy zastosowań
Powinien uwzględniać techniczne możliwości i wymagania dostępnego sprzętu oraz umożliwiać pisanie programów wg znanych metod programowania
Z punktu widzenia współczesnego użytkownika wymagania względem języka komunikacji czł-komp są: łatwość posługiwania się i pełność realizacji żądań użytkownika.
Przedstaw typologię używanych języków programowania.
Języki programowania z punktu widzenia stopnia uzależnienia się od komputera można podzielić na 5 poziomów: język wewnętrzny maszyny, symboliczny, wyższego rzędu zorientowany maszynowo, problemowy, zbliżony do języka naturalnego.
poziom |
Grupa języków programowania |
Podgrupa języka |
Przykłady języków |
0 |
Wewnętrzny maszyny |
- |
- |
1 |
symboliczny |
- |
SAKO, MOST, PLUS, MACRO PLAN |
2 |
wyższego rzędu zorientowany maszynowo |
Komputery ICL |
PLAN |
|
|
Komputery IBM |
ASSEMBLER |
3 |
problemowy |
Obliczeń numerycznych |
ALGOL, PASCAL, FORTRAN, GPSS, SIMULA |
|
|
Ekonomiczne |
COBOL |
|
|
Konwersacyjne |
BASIC, JEAN, język C |
|
|
Komunikacji z bazami danych |
SEQUEL, QUERY, EXAMPLE, ALPHA |
|
|
Specjalistyczne - narzędziowe |
PSL/PSA, JAVA |
|
|
Internetowe |
HTML, PERL, DHTML, XML |
4 |
naturalny |
-- |
- |
Porównaj cechy języka wewnętrznego z językiem symbolicznym.
Język wewnętrzny - najtrudniejszy do przyswojenia przez użytkownika, ale najbliższy komputerowi. Forma programu to ciąg znaków numerycznych, a w najbardziej podstawowej postaci - ciąg znaków zerojedynkowych. W tym ciągu jeden rozkaz programu odpowiada jednej operacji procesora. Prace pisane w tym języku są bardzo pracochłonne, trudno ustrzec się pomyłek, które są trudne do uchwycenia i poprawienia.
Język symboliczny - cyfrowe kody operacji zastąpiono symbolami literowymi, łatwiejszymi do zapamiętania przez programistę, np. zamiast 10110110 (w j. wewnętrznym „dodaj”) pisze się DOD. Często symbole tworzą skróty nazwy czynności, która w wyniku realizacji rozkazu zostaje wykonana. Nie można nadawać więcej niż jeden raz tego samego symbolu różnym danym w tym samym programie.
Komputer realizuje tylko postać linearną rozkazów. Do przetłumaczenia na postać binarną języka wewnętrznego jest stosowany kompilator, który działa w kolejnych krokach, w których jest rozwijany, a następnie rozbudowywany program źródłowy. Konieczność tłumaczenia programów na postać binarną powoduje opóźnienia czasowe.
Co to są makrorozkazy i jakie mają one zadania?
Makrorozkazy stosuje się w językach wyższego rzędu zorientowanych maszynowo. Polegają na tym, że za pomocą jednego rozkazu kodowana jest złożona operacja, którą w języku maszyny należałoby zapisać za pomocą kilku lub kilkudziesięciu poleceń.
Jakie są rodzaje i zadania języków problemowych?
RODZAJE
uniwersalne (dziedzinowe) - dla określonej dziedziny zastosowań; dzielimy je na:
a. języki do przetwarzania względnie dużych zbiorów danych, które z pewnym uproszczeniem można przyjąć jako języki do przetwarzania danych ekonomicznych
b. języki do obliczeń numerycznych, w tym do modelowania
c. języki konwersacyjne i języki komunikacji z bazą danych i bazą modeli
d. języki do opisu zasobów wiedzy
ale przedstawiony podział nie jest dobry bo większość współczesnych języków programowania ma charakter uniwersalny i może służyć zarówno do przetwarzania danych ekonomicznych jak i do obliczeń numerycznych. Można jedynie przyjąć, że dany język jest bardziej przydatny dla danego typu zastosowań niż inne.
Wyspecjalizowane - dla ściśle określonego problemu, często nawet tylko dla jednego konkretnego użytkownika.
32. Na dowolnym przykładzie scharakteryzuj język problemowy i jego własności
Do języków problemowych które zajmują się obliczeniami numerycznymi jest stosowany jeden z najstarszych proceduralnych języków programowania wyższego rzędu ALGOL powstały w końcu lat 50s. Jego rozwinięciem jest obecnie jeden z najbardziej popularnych języków programowania - PASCAL. Popularność zawdzięcza temu, że został zbudowane szybkie kompilatory, w które wyposażone są m.in. personalne komputery. Szczególnie rozwinęły się wersje TURBO PASCAL. Do najbardziej znanych języków z tej podgrupy należy FORTRAN opracowany przez IBM. Ze względu na podobieństwo do języka wzorów matematycznych jest wygodny w użyciu w sytuacji kiedy występuje duża ich liczba.
Do wyboru wszystkie języki szczegółowo opisane są w podręczniku bez wymienienia ich cech jako języki problemowe
33. Jakie kryteria powinny być brane pod uwagę przy wyborze języka programowania
NAJCZĘSTSZE KRYTERIA WYBORU:
dane ich charakterystyka, przeznaczenie, złożoność i sposób przetwarzania
język i trudność posługiwania się nim
posiadane środki techniczne (typ komputera i oprogramowania)
użytkownik - jego doświadczenie
REKOMENDOWANE KRYTERIA;
łatwość posługiwania się językiem i pełna możliwość realizacji zadania
ekonomiczność stosowanego języka
możliwość posługiwania się opracowanymi już i sprawdzonymi pakietami oprogramowania
łatwość adaptacji do nowych, zmieniających się warunków zarówno ze względu na system jak i środki realizacji
łatwość przenoszenia oprogramowania na różnego rodzaju środki techniczne
łatwość realizacji systemu z punktu widzenia dotychczasowego doświadczenia, w tym możliwość wykorzystania posiadanej wiedzy przy opracowaniu systemu.
*operand i=1 - licznikowi i nadaje się wartość początkową 1, czyli dla pierwszej sumowanej liczby
*operand i=i+1 - następuje zwiększenie wartości licznika o 1za każdym wykonaniem cyklu, licznik odlicza ile razy wykonywana jest pętla
*predykat „czy i=20?” jest warunkiem, który ogranicza ilość cyklu. Kiedy dodana została dwudziesta liczba otrzymano odpowiedź tak, co zakończyło pracę w pętli.
*operand „deklaruj A(20)” -przygotowanie tablicy 20-elementowej o nazwie A
Z-zatwierdza
W-wypłaca
„-”- nie bierze udziału
dotychczas najwyższa cena towaru
numer jego rekordu w zbiorze
T-dany warunek zaistniał
N - --//--- nie zaistniał
X - należy wykonać daną czynność
„-”- warunek nie istotny
START
DEKLARUJ ZBIÓR A
A1: 3 JAJKA
A2: MASŁO
A3: PATELNIA
A4: PALNIK
CZYTAJ ZBIÓR A
CZY WSZYSTKIE JAJKA SĄ ŚWIEŻE?
WEŹ NASTĘPNE JAJKO
NIE
POSTAW PATELNIĘ NA ROZPALONYM PALNIKU
ROZTOP MASŁO
WBIJ JAJKA ZAMIESZAJ POCZEKAJ AŻ SIĘ ZETNĄ
KONIEC