1. 2010-02-26
Plik - dowolna informacja zakodowana binarnie; składa się z nazwy i rozszerzenia; plik
bez rozszerzenia to plik niezdefiniowany.
* - symbol zastępujący dowolny ciąg znaków; ? - symbol zastępujący jeden znak
graficzny (*.* - wyszuka wszystkie pliki).
Pulpit - specyficzny folder, katalog, zbiór plików, dowolna informacja zakodowana
binarnie.
Elementy jednostki centralnej (podzespoły):
1. Płyta główna.
օ
2. Procesor - przetwarza dane (CPU) + wentylator (ok. 370 ).
3. Pamięć RAM - tymczasowa, ulotna, krótkotrwała; dostęp swobodny.
4. Pamięć ROM - przechowuje dane rozruchowe komputera; zasilana z baterii na 1.
5. Dysk twardy (HDD).
6. Karty: graficzna, dźwiękowa, sieciowa, inne.
Systemy liczbowe: dziesiętny (decymalny), dwójkowy (binarny), szesnastkowy
(heksadecymalny).
Ćwiczenie 1. Zamień liczby:
• H D:
4C2H=2*16^0+C*16^1+4*16^2=2*1+12*16+4*256=2+192+1024=1218 D
• D H: 2123D=84BH
• B H:
1001011010B=1*16^1+1*16^3+1*16^4+1*16^6+1*16^9=FFFFFFFE5AH
• H B: 7CD5H=0111 1100 1101 0101B
Do zamiany liczby z systemu szesnastkowego można wykorzystać tabelę poniżej:
cyfra HEX liczba BIN cyfra HEX liczba BIN
0 0000 8 1000
1 0001 9 1001
2 0010 A 1010
3 0011 B 1011
4 0100 C 1100
5 0101 D 1101
6 0110 E 1110
7 0111 F 1111
Bit - dwuwersowy symbol (0 (0V), 1 (ok. 5V); fałsz, prawda). {napięcie}
Kodowanie grafiki: bit 0 - kolor biały; bit 1 - kolor czarny.
Piksel - najmniejszy widoczny element obrazu (grafiki).
zapis: 101 (przy dwóch kolorach)
00 - biały; 01 - czerwony; 10 - różowy; 11 - czarny (kodowanie palety barw)
Pliki graficzne:
• *.gif, *.png - dodatkowo posiadają opcję przezroczystości,
• *.jpg, *.bmp - pliki rastrowe.
Czcionka w wordzie to grafika wektorowa
2. 2010-03-05
Algebra Boole'a - dane przyjmują dwie wartości (0,1) {wg praw logiki matematycznej}
Zobacz też: bramka logiczna według Wikipedii.
Bramki logiczne (cyfrowe) - budulec obecnych palmtopów, laptopów, tranzystorów,
oporników, itp.; na wejściu dwa poziomy logiczne (element, za pomocą którego tworzy/
robi się układy scalone):
• 0 (zero), L (low), F (false) - napięcie w przedziale 0,...,0.8 V,
• 1 (jeden), H (high), T (true) - napięcie w przedziale 2,...,5 V.
Rodzaje bramek logicznych:
1. Bramka NOT (negator, inwerter) - odwraca poziomy napięcia 0 1, 1 0.
2. Bramka AND - realizuje operację koniunkcji logicznej.
3. Bramka OR - realizuje operację alternatywy logicznej.
4. Bramka EX-OR (EXclusive-OR) - realizuje funkcje różnicy symetrycznej.
5. Bramka EX-NOR (negacja powyższej) - realizuje funkcję zaprzeczonej różnicy
symetrycznej.
6. Bramki nAND i nOR (uniwersalne) - jako zaprzeczenia poszczególnych bramek.
7. Bramka TS (trójstalowa) - służy, by napięcie nie działało na dwóch tak jakby
frontach.
Algorytm - skończony ciąg czynności, przekształcający zbiór danych wejściowych na
zbiór danych wyjściowych (wyników):
1. Algorytmy numeryczne - wykonują działania matematyczne na danych
liczbowych.
2. Algorytmy sekwencyjne (liniowe) - kolejność wykonywania w nich czynności
jest zawsze taka sama (niezależna od wartości danych wejściowych).
Etapy rozwiązywania zadania za pomocą algorytmu:
1. Sformułowanie zadania - ustalenie jaki problem.
2. Określenie danych wejściowych - typ (liczby całkowite, rzeczywiste, itd.).
3. Określenie wyniku i sposobu jego prezentacji.
4. Ustalenie metody wykonania zadania.
5. Zapisanie algorytmu za pomocą wybranej metody.
6. Analiza poprawności zadania.
7. Testowanie rozwiązywania dla różnych danych.
8. Ocena skuteczności algorytmu (np. wybranie metody najszybszej).
SPOSOBY ZAPISYWANIA ALGORYTMU
I Lista kroków - charakteryzuje się numeracją wierszy:
1. Algorytm podziału odcinka na cztery równe części:
1. Podziel odcinek na dwie równe części: lewą i prawą.
2. Podziel część lewą na dwie równe części.
3. Podziel część prawą na dwie równe części.
4. Zakończ.
3. II Pseudojęzyk (pseudokod) - metoda pośrednia między zapisem za pomocą listy
kroków a zapisem w języku programowania.
1. Algorytm wypisujący wartość bezwzględną liczby x:
1. Początek;
2. Rzeczywiste x;
3. Jeżeli x>=0 Wypisz (x);
4. Jeżeli x<x Wypisz (-x);
5. Koniec.
III Schemat blokowy - przedstawia algorytm w postaci symboli graficznych. Podaje
szczegółowo wszystkie operacje arytmetyczne, logiczne, przesyłania, sterujące i
pomocnicze wraz z kolejnością ich wykonywania. Jest on podstawą do napisania
programu.
Przykład 1. Algorytm, którego zadaniem jest zrobienie herbaty.
Podstawowe elementy schematu blokowego. {notka z LO - wkrótce odnośnik}
IV Zapis w języku programowania - by skutecznie zapisać algorytm, należy znać
język programowania i jego reguły.
Specyfikacja problemu algorytmicznego - dokładny opis problemu algorytmicznego,
który ma zostać rozwiązany oraz podanie danych wejściowych i danych wyjściowych
wraz z ich typami.
4. Przykład 2.
obliczanie potęgi liczby naturalnej o
Problem algorytmiczny:
wykładniku naturalnym
a należy do N - podstawa potęgi,
Dane wejściowe:
b należy do N - wykładnik potęgi
Dane wyjściowe: w należy do N - wartość a^b
Zadanie 1.
Zapisz specyfikację problemu i schemat blokowy algorytmu służącego do obliczania
średniej arytmetycznej dwóch liczb podanych na wejściu i wypisaniu wyniku na ekranie.
Rozwiązanie (pobierz)
Specyfikacja problemu:
Obliczenie średniej arytmetycznej
Problem algorytmiczny: dwóch podanych liczb i wypisanie
wyniku na ekranie
Dane wejściowe: a, b należy do R
Dane wyjściowe: w należy do R - wartość (a+b)/2
Schemat blokowy:
Stosowane operatory:
• Wyrażenie = zmienne i stałe połączone operatorami.
• Zmienne i stałe występują w wyrażeniu nazywanym operandem.
• Klasyfikacja operatorów. {ksero}
• Operatory arytmetyczne, logiczne, przypisania i inne (Pascal vs C++).
Instrukcja warunkowa umożliwia wykonywanie lub nie wykonywanie innych instrykcji
tzw. instrukcji wewnętrznych A i B (zależna od wartości warunku logicznego
umieszczonego w tej instrukcji).
Algorytm rozgałęziony - algorytm w którym występują instrukcje warunkowe.
5. Zadanie 2.
Zapisz specyfikację problemu oraz schemat blokowy algorytmu podejmowania decyzji,
czy pobrana liczba jest dodatnia.
Rozwiązanie (pobierz)
Specyfikacja problemu:
Podjęcie decyzji czy podana liczba
Problem algorytmiczny:
jest dodatnia
Dane wejściowe: a należy do R
Dane wyjściowe: ?
Schemat blokowy:
Zadanie 3.
Zmodyfikuj algorytm z zadania 2. tak, aby otrzymać dodatkowo informacje o wartości
zerowej, jeżeli taka została pobrana.
Rozwiązanie (pobierz)
Specyfikacja problemu:
Podjęcie decyzji czy podana liczba jest
Problem algorytmiczny:
dodatnia, ujemna, czy jest zerem
Dane wejściowe: a należy do R
Dane wyjściowe: ?
6. Schemat blokowy:
INSTRUKCJA ITERACJI
Iteracja - instrukcja powtarzania danego ciągu operacji. Liczba powtórzeń może być
ustalona przed wykonywaniem instrukcji lub może zależeć od spełnienia pewnego
warunku, który jest sprawdzany w każdej iteracji. Iteracja to inaczej pętla.
Wskazówka 1.
Jeśli lista kroków jest zbyt długa, to zmiennej [n] należy przypisać stałą wartość [10],
tym samym zapis kodu i czas trwania operacji się zmniejsza.
Przykład 3. Generowanie algorytmu, który wypisuje wszystkie liczby dwucyfrowe i czas
jego działania jest zbyt czasochłonne. Dobrze jest korzystać ze wskazówki 1.
(zob. zadanie 5)
Zadanie 4.
Zapisz specyfikację problemu i schemat blokowy algorytmu służącego do pobrania dwóch
liczb rzeczywistych i obliczenia ich ilorazu. Wynik ma zostać wypisany na ekranie.
Rozwiązanie (pobierz)
7. Specyfikacja problemu:
Obliczenie ilorazu dwóch liczb
Problem algorytmiczny:
rzeczywistych i wypisanie ich na ekranie
a należy do R - dzielna
Dane wejściowe:
b należy do R0 - dzielnik
Dane wyjściowe: w należy do R - wartość a/b
Schemat blokowy:
Zadanie 5.
Zapisz schemat blokowy algorytmu, który wypisuje wszystkie liczby dwucyfrowe.
(zob. przykład 3)
Rozwiązanie (pobierz)
Specyfikacja problemu:
Problem algorytmiczny: Wypisanie wszystkich liczb dwucyfrowych
Dane wejściowe: brak
Dane wyjściowe: wszystkie liczby dwucyfrowe
8. 2010-03-12
Zadanie 6. Zapisz schemat wypisujący piętnaście razy znak "*".
Rozwiązanie:
• za pomocą tablic (pobierz):
Podstawowe przypadki iteracji stosowanej w algorytmach:
• P1 - najpierw sprawdzany jest warunek, potem wykonywana instrukcja:
• P2 - najpierw jest wykonywana instrukcja, potem warunek:
9. • P3 - operacja wykonywana jest max razy:
Złożoność obliczeniowa algorytmu:
1. Złożoność pamięciowa - wynika z liczby i rozmiaru danych wykorzystywanych
w algorytmach (cecha). Złożoność ta wyznacza zależność rozmiaru pamieci
potrzebnej do realizacji algorytmu od wielkości danych wejściowych (najczęściej
jest to ilość danych wejść).
2. Złożoność czasowa - umożliwia oszacowanie czasu, który jest potrzebny do
wykonania algorytmu (najczęściej jest to ich ilość). Służy po to, by uniezależnić
ocenę szybkości algorytmu od możliwości komputera, na jakim jest on
realizowany.
Operacja dominująca - najczęściej wykonywana operacja; jednostka czasu przy
obliczaniu złożoności czasowej, np. + i * w przypadku algorytmów numerycznych lub
porównań.
1. Liniowa zależność obliczeniowa - np. f(n)=9n+12 (f. liniowa).
2. Kwadratowa zależność obliczeniowa - w praktyce ważny jest typ funkcji
zależności (f. kwadratowa).
Kluczowym zadaniem jest wyznaczenie klasy funkcji zależności czasy od rozmiaru
danych.
Klasa funkcji - wyznacza ograniczenie funkcji od góry i w przypadku algorytmów jest
używana do szacowania czasu pesymistycznego zestawu danych.
Pesymistyczne zestawienie danych - zestaw, który wymaga największej ilości
operacji.
Pesymistyczna złożoność obliczeniowa - złożoność obliczeniowa wyznaczana dla
pesymistycznego zestawu danych.
Do opisu klasy funkcji służy notacja 'O' zwana (O duże)
Praktyczne zastosowanie klasy złożoności algorytmu:
• pominięcie wszystkich składników stałych,
• pominięcie wszelkich składników funkcji oprócz tego, który ma największy wpływ
(a więc najczęściej składnik n o największej potędze),
np. liczba operacji dominujących wynosi 5n^2+6n, to mówimy, że algorytm ten ma
złożoność O(n^2) w pesymistycznym przypadku, ponieważ bierzemy pod uwagę tylko
największa zmienną n, pomijając współczynnik (tu: 5).
Wielomianowa złożoność algorytmu - występuje wtedy, jeżeli mamy algorytm,
którego złożoność obliczeniowa wynosi odpowiednio O(n^k), gdzie .
Złożoności notacji O:
• stała O(1) - algorytm wykonuje stałą liczbę operacji dominujących bez względu
na rozmiar danych wejściowych,
10. • logarytmiczna O(log n) - np. algorytmy, w których problem postawiony dla
danych rozmiaru n da się sprawdzić w pesymistycznym przypadku do danych z
rozmiarem o połowę mniejszym,
• liniowa O(n) - taką złożoność mają algorytmy, które dla każdej danej
wykorzystują w pesymistycznym przypadku stałą liczbę operacji podstawowych
(wzrost ilości danych powoduje wzrost liczby wykonywanych operacji - liniowo),
• liniowo-logarytmiczna O(n log n) - taką zależność mają algorytmy, w których
problem postawiony dla danych rozmiaru n da się sprawdzić w liniowej liczbie
operacji do rozwiązania dwóch problemów o rozm. n/2,
• kwadratowa O(n^2) - algorytmy, w których dla każdej pary elementów
danych wykonywana jest stała liczba operacji podstawowych (podwójne pętle),
• wykładnicza O(2^n), O(n!) - algorytmy bardzo wolne, których realizacja w
pesymistycznym przypadku jest niewykonywalna nawet dla niewielkich
rozmiarów danych.
Zadanie 7. Napisz program zamieniający systemy liczbowe w następujący sposób:
1. Dec Hex
◦ pobierz
2. Hex Dec
◦ pobierz
3. Bin Dec
◦ pobierz
4. Dec Bin
◦ pobierz
19. 2010-03-26
Instrukcje wejścia/wyjścia
Zadanie 16.
Napisz algorytm za pomocą pseudojęzyka i schematów blokowych. Algorytm ma
wczytywać z klawiatury wartości dwóch liczb, obliczać sumę tych liczb i wyświetlić jej
wartość na ekranie monitora.
• Pseudojęzyk:
START
Podaj (a,b)
c:= a + b
Pisz (c)
STOP
• Schemat blokowy:
20. Zadanie 17.
Napisz algorytm za pomocą pseudojęzyka i schematów blokowych. Algorytm ma
wczytywać z klawiatury wartości dwóch liczb, obliczać sumę, różnicę oraz iloczyn tych
liczb i wyświetlić te wartości na ekranie monitora.
• Pseudojęzyk:
START
Podaj (a,b)
c:= a+b
d:=a-b
e=a*b
Pisz (c)
Pisz (d)
Pisz (e)
STOP
Zadanie 18.
Napisz algorytm za pomocą pseudojęzyka i schematów blokowych. Algorytm ma wczytać
z klawiatury wartość zmiennej x oraz obliczać równanie
• Pseudojęzyk:
START
Podaj (x)
Pisz (y)
STOP
Zadanie 19.
Napisz algorytm za pomocą pseudojęzyka oraz schematów blokowych. Algorytm ma
obliczać długość boku kwadratu o polu P.
• Pseudojęzyk:
START
Podaj (P)
a:=
Pisz (a)
STOP
Zadanie 20.
Napisz algorytm za pomocą pseudojęzyka oraz schematów blokowych. Algorytm ma
obliczać pole powierzchni i obwód trójkąta prostokątnego. Długość boków przy kącie
prostym są podawane podczas działania algorytmu.
• Pseudojęzyk:
START
Podaj (a,b>0)
P:=
O:=
Pisz (P,O)
STOP
21. Zadanie 21.
Napisz algorytm za pomocą pseudojezyka oraz schematów blokowych. Algorytm ma
obliczać średnią arytmetyczną trzech liczb, których wartości są wczytywane podczas
działania algorytmu. Wynik wyświetl na ekranie monitora.
• Pseudojęzyk:
START
Podaj (a,b,c)
Pisz (x)
STOP
Zadanie 22.
Napisz algorytm za pomocą pseudojęzyka oraz schematów blokowych. Algorytm ma
obliczać objętość (V) oraz sumę długości wszystkich krawędzi prostopadłościanu (D).
Wartości zminnych długości (a,b,c) są podawane podczas działania algorytmu.
• Pseudojęzyk:
START
Podaj (a,b,c>0)
V:= a*b*c
D:= 4*a + 4*b + 4*c
Pisz (V,D)
STOP
Zadanie 23.
Napisz algorytm za pomocą pseudojęzyka oraz schematów blokowych. Algorytm ma
obliczać pole i obwód prostokąta o bokach, których wartości są wczytywane podczas
działania algorytmu.
• Pseudojęzyk:
START
Podaj (a,b >0)
P:=a*b
O:=2*a + 2*b
Pisz (P,O)
STOP
Zadanie 24.
{podobne do 7.} [a nie do 22.? Bo to bodaj siódme z kolei zadanie na tych zajęcia]
Zadanie 25.
Napisz algorytm za pomocą pseudojęzyka oraz schematów blokowych. Algorytm ma
obliczać pole powierzchni i obwód koła.
• Pseudojęzyk:
START
Podaj (r>0)
Pisz (P,O)
STOP
22. Zadanie 26.
Samochód spala 6,5 litra benzyny na 100km. 1 litr benzyny kosztuje 3,29zł. Z
zakopanego do Krakowa jest 132km. Napisz algorytm, który oblicza koszt przejazdu z
Zakopanego do Krakowa (schemat + pseudojezyk).
• Pseudojęzyk:
START
koszt:=litry*3,29
Pisz (koszt)
STOP
Zadanie 27.
Babcia powiedziała Bartkowi, że na każde urodziny otrzyma od niej dwa razy więcej
złotych niż będzie miał lat, a dziadek powiedział, że od niego dostanie na każde urodziny
o 20 zł więcej niż liczba jego lat. Napisz algorytm który będzie obliczał ilość pieniędzy
jaką otrzyma Bartek od babci i dziadka na x-te urodziny (psudojęzyk + schemat).
• Pseudojęzyk:
START
Podaj (x)
y:=3x+20
Pisz (y)
STOP