PROGRAMOWANIE
Algorytm
Algorytm
–w informatyce to
skończony zbiór jasno
zdefiniowanych i
uporządkowanych
(następujących po sobie)
czynności
, niezbędnych do
wykonania założonego
zadania
.
2
Algorytm
Działanie algorytmu wymaga:
– zdefiniowania danych wejściowych
(niekiedy ich liczba równa jest zero,
przykład)
– Precyzyjnego zdefiniowania jego
zachowania tj. wszystkich „kroków”
(skończonej ich liczby) algorytmu
– ustalenia „formy” oczekiwanego
wyniku;
3
Programowanie
• Programowanie to proces projektowania, tworzenia,
programów komputerowych lub urządzeń mikroprocesorowych
(
).
• Kod źródłowy jest napisany w
, z
użyciem określonych reguł, może on być modyfikacją
istniejącego programu lub czymś zupełnie nowym.
• Programowanie wymaga dużej wiedzy i doświadczenia w wielu
różnych dziedzinach, jak projektowanie aplikacji,
, znajomość
narzędzi programistycznych, wiedza nt. kompilatorów, czy
sposób działania podzespołów
4
Programowanie
• W inżynierii oprogramowania,
programowanie (implementacja) jest tylko jednym
z etapów powstawania programu.
• Między programistami trwają nieustanne debaty,
czy programowanie jest sztuką, rzemiosłem czy
procesem inżynieryjnym. Bezpośrednią formą sztuki
w tej dziedzinie jest
• Inną debatą dotyczącą tego przedmiotu jest stopień,
w jakim język programowania wpływa na formę, jaką
przybiera oraz jak funkcjonuje końcowy program.
Żródło:
http://pl.wikipedia.org/wiki/Programowa
nie
5
Programowanie
Podsumowując, programowanie to ogół czynności
Przez programowanie rozumie się wszystkie
czynności dotyczących budowy i zapisu algorytmu
służącego do wykonania zdefiniowanego zadania:
• Zdefiniowanie (zrozumienie) problemu
• Badanie wykonywalności numerycznej
• Konstrukcja algorytmu
• „Kodowanie” programu
• Testowanie aplikacji
• Przygotowanie dokumentacji (zbyt rzadko )
Żródło:
http://pl.wikipedia.org/wiki/Programowa
nie
6
Schematy blokowe
Większość algorytmów można zrealizować za
pomocą jednego z wielu dostępnych
języków stąd można pokusić się o jego opis:
• w postaci naturalnej (języku „naturalnym”)
• Formalny (posługując się notacją
techniczną, naukową itp.)
• Graficzny np. za pomocą schematów
blokowych odwzorowywane są czynności
konieczne do wykonania przez komputer do
realizacji postawionego mu zadania.
7
Schematy blokowe
8
Oznaczenie początku (START) lub końca
(STOP) działania programu
Wprowadzanie danych (Zapytanie)
Oznaczenie operatora tj. instrukcji lub
zbioru instrukcji prowadzących do zmian
wartości „zmiennych” wewnątrz
algorytmu.
Może mieć wiele „wejść” ale TYLKO jedno
wyjście.
Instrukcja wyboru – predykat. Tylko to pole
wskazuje na wybór jednej z wielu dróg
wykonania algorytmu
Może mieć wiele „wejść” i wiele
(przynajmniej 2) „wyjścia”.
Wskazuje jednoznacznie powiązania i ich
kierunek
Zmienna
atrybuty:
- symboliczną nazwę
(służy do identyfikowania zmiennej stąd często
nazywana identyfikatorem)
- miejsce przechowywania
(przeważnie znajduje się w pamięci
komputera i określane jest przez adres i długość danych)
- wartość
pozwalająca w programie odwoływać się przy pomocy
nazwy do wartości lub miejsca przechowywania (zawartość miejsca
przechowywania.)
Zmienna zazwyczaj posiada również czwarty atrybut:
- typ
, określający rodzaj danych przechowywanych w zmiennej i co za
tym idzie sposób reprezentacji wartości w miejscu przechowywania.
W programie wartość zmiennej może być odczytywana lub
zastępowana nową wartością,
Źródło:
http://pl.wikipedia.org/wiki/Zmienna_(infor
matyka)
9
Zasięg i czas życia zmiennej
Zasięg
:
Określa gdzie w ramach całego programu zmienna
może być wykorzystana i uogólniając wyróżnia się
zmienne:
1) globalne - obejmujące zasięgiem cały program,
2) lokalne - o zasięgu obejmującym pewien blok,
podprogram.
Czas życia zmiennej
:
to okresy w trakcie wykonywania programu gdy
zmienna ma przydzieloną pamięć i posiada
(niekoniecznie określoną) wartość.
Źródło:
http://pl.wikipedia.org/wiki/Zmienna_(informatyka)
10
Programowanie
proceduralne
Programowanie proceduralne to paradygmat
programowania zalecający dzielenie kodu na
procedury
, czyli fragmenty wykonujące ściśle
określone operacje.
Procedury
nie powinny korzystać ze
zmiennych
globalnych
(w miarę możliwości), lecz pobierać i
przekazywać wszystkie dane (czy też wskaźniki do
nich) jako
parametry wywołania
.
Charakteryzuje się brakiem skoków bezwarunkowych
do wnętrza innych procedur.
Żródło:
http://pl.wikipedia.org/wiki/Programowa
nie
11
Programowanie strukturalne
To paradygmat programowania zalecający:
hierarchiczne dzielenie
kodu na bloki, z jednym
punktem wejścia i jednym lub wieloma punktami
wyjścia. Chodzi przede wszystkim o nieużywanie (lub
ograniczenie) instrukcji skoku (goto).
Dobrymi strukturami są np. instrukcja warunkowe (if,
if...else), pętle (while, repeat), wyboru (case, ale nie
switch z C i potomnych).
Strukturalność zakłócają instrukcje typu: break,
continue, switch (w C itp.), które jednak w niektórych
przypadkach znacząco podnoszą czytelność kodu.
Źródło:
http://pl.wikipedia.org/wiki/Programowanie_struktur
alne
12
ASCII
(
A
merican
S
tandard
C
ode for
I
nformation
I
nterchange)
Kod ASCII jest numeryczną reprezentacją znaków.
Jest to 7-bitowy kod przyporządkowujący liczby z zakresu 0-127
literom (alfabetu angielskiego), cyfrom, znakom przestankowym i
innym symbolom oraz poleceniom sterującym. Przykładowo litera
"a" jest kodowana liczbą :97, a znak spacji: 32.
Litery, cyfry oraz inne znaki drukowane tworzą zbiór znaków ASCII.
Jest to 95 znaków o kodach 32-126. Pozostałe 33 kody (0-31 i
127) to tzw. kody sterujące służące do sterowania urządzeniem
odbierającym komunikat, np. drukarką czy terminalem.
Ponieważ kod ASCII jest 7-bitowy, a większość komputerów operuje
na 8-bitowych bajtach, dodatkowy bit można wykorzystać na
powiększenie zbioru kodowanych znaków. Powstało wiele różnych
rozszerzeń ASCII wykorzystujących ósmy bit (np. norma ISO 8859)
Źródło:
http://pl.wikipedia.org/wiki/ASCII
14
ISO 8859
ISO/IEC 8859 to zestaw standardów służących do kodowania znaków za pomocą 8 bitów.
Wszystkie zestawy ISO 8859 mają znaki 0-127 (hex 00-7F) takie same jak ASCII, zaś pozycjom 128-
159 (hex 80-9F) przypisane są dodatkowe kody sterujące, tzw. C1 (faktycznie są nieużywane).
ISO 8859-1 (Latin-1) - alfabet łaciński dla Europy zachodniej
ISO 8859-2 (Latin-2) - łaciński dla Europy środkowej i wschodniej, również odpowiednia Polska
Norma
ISO 8859-3 (Latin-3) - łaciński dla Europy południowej
ISO 8859-4 (Latin-4) - łaciński dla Europy północnej
ISO 8859-5 (Cyrillic) - dla cyrylicy
ISO 8859-6 (Arabic) - dla alfabetu arabskiego
ISO 8859-7 (Greek) - dla alfabetu greckiego
ISO 8859-8 (Hebrew) - dla alfabetu hebrajskiego
ISO 8859-9 (Latin-5)
ISO 8859-10 (Latin-6)
ISO 8859-11 (Thai) - dla alfabetu tajskiego
ISO 8859-12 - brak
ISO 8859-13 (Latin-7)
ISO 8859-14 (Latin-8)
ISO 8859-15 (Latin-9) - z ISO 8859-1 usunięto kilka rzadko używanych znaków i wprowadzono znak
euro oraz litery Š, š, Ž, ž, Œ, œ oraz Ÿ
ISO 8859-16 (Latin-10) - łaciński dla Europy środkowej - zmodyfikowany ISO 8859-2 ze znakiem
euro i dodatkowymi literami dla kilku języków.
Polskie litery są obecne w ISO-8859-2, ISO-8859-13 i ISO-8859-16.
ISO-8859-13 i ISO-8859-16 zawierają prawidłowe cudzysłowy stosowane w języku polskim zgodnie z
normą PN-83/P-55366[1] („ i ”), których brak jest w ISO-8859-2. ostatnim obecne są również Ó i
ó).
15
UNICODE i UTF-8
Unicode – komputerowy zestaw znaków mający w zamierzeniu obejmować wszystkie pisma używane na świecie.
Definiują go dwa standardy – Unicode oraz ISO 10646. Znaki obu standardów są identyczne. Standardy te różnią się
w drobnych kwestiach, m.in. Unicode określa sposób składu.
Pełny Unikod jest standardem 32-bitowym (UCS-4): 4 294 967 295 znaków.
Aktualnie używane jest jednak tylko 16 bitów: 65 535 znaków.
UTF-7 i UTF-8 przy przesyłaniu kodów ASCII nie wprowadza żadnych zmian. Tylko kody większe niż 127 podlegają
modyfikacji.
Dzięki temu polskie teksty w kodowaniu regionalnym (np.polskim) powiększają swoją objętość tylko o niewielki procent
Standard Unicode obejmuje przydział przestrzeni numeracyjnej poszczególnym grupom znaków, nie obejmuje zaś
sposobów bajtowego kodowania znaków. Jest kilka metod kodowania, oznaczanych skrótowcami UCS (Universal
Character Set) i UTF (Unicode Transformation Format). Do najważniejszych należą:
UTF-32/UCS-4
UTF-8.
Mniej popularnymi kodowaniami Unicode są:
UTF-16
UTF-7
UCS-2.
Istnieją również inne kodowania, stanowiące margines lub pozostające na etapie propozycji, na przykład:
UTF-9 i UTF-18
UTF-EBCDIC
UTF-6
UTF-5.
Źródło:
http://pl.wikipedia.org/wiki/UTF-8
16
KeyCode
17
Bity,bajty…kB,MB,GB,TB
BIT- podstawowa jednostka informacji
("jest, "nie ma„ „prawda”, ”fałsz”)
przyjmująca wartości "1" lub "0".
BAJT- to 8 (osiem=oktet) bitów (np.
10000001) czyli liczba w systemie
dwójkowym składająca się z ośmiu
zer lub jedynek ułożonych w
dowolnej kombinacji. Jest najmniejszą
adresowaną jednostką informacji
pamięci komputerowej.
18
Zapis dziesiętny binarny,
szesnastkowy
• Są to systemy pozycyjne, które posiadają symbole (cyfry)
tylko dla kilku najmniejszych liczb naturalnych: 0, 1, 2, ..., g −
1, gdzie g to tzw. podstawa systemu, która może być dowolną
liczbą naturalną większą niż 1.
• Cyfry te są kolejno umieszczane w ściśle określonych
pozycjach i są mnożone przez odpowiednią potęgę g.
• W sytuacji, gdy dana potęga nie jest potrzebna do zapisu danej
liczby, zostawia się w zapisie puste miejsce, lub częściej
specjalny symbol. Współcześnie jest to cyfra
0
. Na przykład
liczbę 5004,3 w
dziesiętnym
systemie liczbowym (czyli
systemie, którego podstawą jest 10) odczytuje się jako:
• Współcześnie powszechnie używany jest system dziesiątkowy
a w informatyce stosowany jest system dwójkowy (binarny),
ósemkowy
i
szesnastkowy
(heksadecymalny).
19
Proces
Proces
- jedno z najbardziej podstawowych pojęć w informatyce, definiowane jako egzemplarz
wykonywanego programu,
Każdy nowo powstały proces otrzymuje unikalny numer, który go jednoznacznie identyfikuje, tzw.
numer PID (ang. process IDentifier).
W celu wykonania programu system operacyjny przydziela procesowi zasoby :
pamięć,
czas procesora,
Urządzenia peryferyjne
Sieć etc.
Aby zrealizować program może zażądać utworzenia określonej liczby wątków, wykonujących
wskazane części programu - o ich współbieżne wykonanie dba system operacyjny albo sam
program
Wątki współdzielą prawie wszystkie zasoby zarezerwowane dla danego procesu, wyjątkiem jest czas
procesora, który jest przydzielany indywidualnie każdemu wątkowi.
Za zarządzanie procesami odpowiada jądro systemu operacyjnego.
W systemie operacyjnym każdy proces posiada proces nadrzędny, z kolei każdy proces może,
poprzez wywołanie funkcji systemu operacyjnego, utworzyć swoje procesy potomne; w ten sposób
tworzy się swego rodzaju drzewo procesów. Każdy proces otrzymuje od systemu operacyjnego
odrębne zasoby, w tym odrębną przestrzeń adresową, listę otwartych plików, urządzeń itp.
Źródło
www.wikipedia.org
20
Wątek
Wątek
(ang. thread) - część programu wykonywana
współbieżnie w obrębie jednego procesu; w jednym
procesie może istnieć wiele wątków.
Różnica między zwykłym procesem a wątkiem polega na
współdzieleniu przez wszystkie wątki działające w
danym procesie przestrzeni adresowej oraz wszystkich
innych struktur systemowych (np. listy otwartych
plików, gniazd, itp.) - z kolei procesy posiadają
niezależne zasoby.
Wielowątkowość, wielozadaniowość…
Źródło:
http://pl.wikipedia.org/wiki/W%C4%85tek_(informat
yka)
21