2011 ODP Informatyka Sadzik prezent na swietaid 27500

background image

1.Co to jest informatyka - dziedzina wiedzy zajmująca się problemem
przetwarzania i przesyłania danych.

2.Algorytm - jest to ciąg informacji służących wykonywaniu pewnego
zadania. W każdym algorytmie można wyróżnić szereg instrukcji które są

szczegółowym przepisem do wykonania procedury.
3.Języki programowania proceduralne i deklaratywne - wiążą się ze

strukturą i reprezentacją danych w komputerze, wykonywaniem działań i
operacji.

J.p. Proceduralne - zapisują procedury które komputer wykonuje
(procedura- moduł programu wykonujący określone zadania)

J.p. Deklaratywne - umożliwiają wyszukiwanie danych w dużych zbiorach.
4.Różnica między obliczeniami numerycznymi i symbolicznymi -

obliczenia numeryczne to przetwarzanie konkretnych liczb. Obliczenia
symboliczne
– operacje wykonywane na wyrażeniach(symbolach)

matematycznych. Programy z grupy obliczeń symbolicznych nazywane są
programami algebry komputerowej. Np. Matlab.

5.Czym zajmuje się inżynieria oprogramowania - zajmuje się
doskonaleniem i optymalizacją oprogramowania. Dobre oprogramowanie

powinno być: zgodne z wymaganiami użytkownika, niezawodne, efektywne,
łatwe w konwersacji, ergonomiczne. Przyczyny powstania: duża złożoność

systemów operacyjnych, niepowtarzalność poszczególnych przedsięwzięć,
pozorna łatwość dokonywania poprawek.

6.Co to jest baza danych - zbiór informacji z pewnej dziedziny,
prowadzony w taki sposób, aby łatwo je można było analizować. Każdy zbiór

danych to baza danych, nie musi być komputerowa. Komputerowa baza
danych jest podzielona na rekordy. Najprostszą bazą danych jest tabela

składająca się z rekordów.
7.Siec komputerowa – system połączonych ze sobą urządzeń sieciowych

które pozwalają na wymianę informacji pomiędzy urządzeniami
przyłączonymi do tej sieci (wymiana danych wewnątrz sieci, korzystanie z 1

drukarki sieciowej, komunikacja użytkowników dzięki oprogramowaniu
sieciowemu). Rodzaje: LAN(lokalna), MAN(miejska), WAN(światowa).

8. Internet

- globalna sieć komputerowa, umożliwiająca wymianę

informacji dzięki jednolitemu sposobowi kodowania i przesyłu informacji

protokołem TCP/IPv4 obecnie lub w przyszłości TCP/IPv6. Intranet

-

wewnętrzna sieć lokalna w przedsiębiorstwie lub instytucji. Serwer WWW

udostępnia swoje zasoby wewnątrz przedsiębiorstwa lub instytucji.
9.KONWERSJA BIN-DEC-HEX (samemu)

10.Relacja pomiędzy ilościami informacji - 8bitów= 1bajt,
1kbajt=1024bitów, 1Mb=1024^2bajtów, 1Gb=1024^3bajtów.

11.Cyfrowe kodowanie informacji - dowolna informacja w komputerze
występuje tylko w postaci binarnej dlatego potrzebne są zatem reguły które

przekształcają różne postacie informacji na postać ciągu cyfr binarnych.
Proces przekształcenia informacji nazywamy kodowaniem, polega ono na

zamianie każdego kodu na kod binarny. Z kolei skróceniem kodu binarnego
jest kod hexadecymalny.

12.Co to jest kod ASCII- służy do kodowania tekstu i przesyłania go
między urządzeniami cyfrowymi oprócz znaków alfanumerycznych, koduje

także znaki sterujące pracę drukarki, przyporządkowuje znakom
alfanumerycznym i znakom sterującym ciąg złożony z 8 cyfr binarnych.

Kodowanie ASCI ma 83 znaków. Posługując się kodem ASCI możemy każdy
tekst zapisać jako ciąg bitów i na odwrót.

13.Porównanie kombinacyjnych i sekwencyjnych - Ukł.
kombinacyjny
- układ w którym stan wyjść układu zależy wyłącznie od

stanu wejść. Ukł. sekwencyjny – układ w którym stan wyjść zależy od
stanu wejść oraz od poprzedniego stanu wyjść.

14.Układ synchroniczny i asynchroniczny - układem
asynchronicznym
(niejednoczesnym) nazywamy taki układ cyfrowy

którego stan wyjść ustala się po kolei. Czas ustalania się stanu wyjść nie jest
sterowany. Układem synchronicznym nazywamy taki układ którego stan

każdego z wyjść ustalany jest taktem zegarowym. Eliminuje to błąd mogący
powstać gdy pojawia się impuls wejściowy a układ nie zdąży zadziałać na

skutek zbyt długiego czasu propagacji(zadziałania).
15.Do czego rejestr i rodzaje - układ cyfrowy służący do krótkotrwałego

zapamiętywania określonej porcji bitów danych. Na wejście podaję się
informację do zapamiętania w rejestrze. W tym momencie na wejście

sterujące podaje się sygnał sterujący który zapisuje informację z wejść.
Informacja przechowywana w rejestrze pojawia się na wyjściu. Rodzaje:

przesuwny (WE i WY) szeregowy, (WE i WY) równoległy, (WE)szeregowo-
(WY)równoległy, (WE)równoległo-(WY)szeregowy, synchroniczny,

asynchroniczny.
16.Co to jest magistrala - w systemie mikroprocesorowym należy

zapewnić przesyłanie informacji między różnymi układami w systemie
mikroprocesorowym, najprościej każdy układ połączyć z każdym, co jest

jednak fizycznie niemożliwe, więc tych połączeń jest mniej i droga którą
komunikują się dane układy nazywana jest magistralą. Składa się ona z 2

lub więcej układów będących nadajnikami lub(i) odbiornikami informacji.
17.U2(kod uzupełnień do dwóch) obecnie najpopularniejszy sposób

zapisu liczb całkowitych oraz ułamkowych przedstawionych w formacie
stałoprzecinkowym na bitach. Operacje dodawania i odejmowania są w nim

wykonywane tak samo jak dla liczb binarnych bez znaku. Nazwa kodu wzięła
się ze sposobu obliczania liczb przeciwnych. Dla liczb n-bitowych wartości

przeciwne uzyskujemy odejmując liczbę od dwukrotnej wagi najstarszego
bitu (2·2n–1 = 2n).

18.Dekodery i kodery priorytetu. Dekoder - układ kombinacyjny
posiadający n wejść oraz k wyjść (k=2n). Jego działanie polega na

zamianie kodu binarnego (o długości n), lub każdego innego kodu, na kod
"1 z k". Koder priorytetu – układ kodera z następującymi zmianami: na

wejściu kodera może pojawić się więcej niż 1 wyróżniony sygnał, każde
wejście ma przypisany swój priorytet. Na wyjściu pojawia się zakodowany

numer tego wejścia wyróżniony sygnałem który posiada najwyższy priorytet.
19. Podział pamięci półprz. RAM- pamięć ulotna służy do zapisu i

odczytu. Tą pamięć dzielimy na: DRAM- są to pamięci wolne, tanie, łatwe w
miniaturyzacji stosuje się je jako RAM w komputerach; SDRAM- szybkie,

drogie stosuje się je jako pamięci podręczne (cache) w procesorach. ROM -
pamięć nieulotna przeznaczone tylko do odczytu. Dzieli się ją na: ROM-tylko

do odczytu, PROM - jednorazowego zapisu, EPROM – kasowalna(UV) pamięć
tylko do odczytu, EEPROM - pamięć kasowalna i programowalna

elektrycznie(Flash).
20.Laczenie pamięci - zwiększenie liczby slów, zwiększenie liczby adresów,

zwiększenie długości slow, zwiększenie ilości linii w szynie adresowej
21. Skracanie czasu dostępu do pamięci. Skracanie czasu dostępu do

pamięci polega na zwiększaniu częstotliwości taktowania pamięci poprzez
podnoszenie taktowania szyny FSB. Niektóre płyty główne umożliwiają

modyfikację timingów z jakimi pamięć pracuje (CAS Latency(CL), RAS-to-
CAS Delay(tRCD), RAS Precharge Time(tRP), Cycle Time(Tras), Command

Rate(CR), xxxMHz). Wraz ze zmianą częstotliwości pracy magistrali
procesorów parametry pamięci ulegają zmianom.

22.Na czym polega odświeżanie pamięci – Odświeżanie pamięci polega
na okresowym odświeżaniu zawartości pamięci, ponieważ w przeciwnym

przypadku dane mogą zaniknąć (kondensatory się rozładują). Odświeżanie
musi następować w regularnych odstępach czasu oraz bezpośrednio po

każdej operacji odczytu i polega na ponownym zapisie odczytanej wartości w
tych samych komórkach pamięci.

23. SDRAM - pamięć dynamiczna, synchroniczna, zbudowana na
kondensatorach i tranzystorach. Synchroniczna, ponieważ działa ona zgodnie

z przebiegiem taktu zegara procesora.
DRAM - ulotna pamięć półprzewodnikowa o dostępie swobodnym,

której bity są reprezentowane przez stan naładowania kondensatorów. Nie
wymagają stałego zasilania, a jedynie okresowego odświeżania zawartości,

przez co zużywają mniej energii. Komórka pamięci dynamicznej składa się z
mniejszej liczby elementów niż analogiczna komórka pamięci statycznej.

Powyższe cechy pozwalają na większe upakowanie elementów w układach
scalonych, niższe koszty produkcji, budowa układów pamięci o większych

pojemnościach.
24.ROM i rodzaje – pamięć tylko do odczytu. Rodzaje: PROM -

jednorazowego zapisu, EPROM – kasowalna(UV) pamięć tylko do odczytu,
EEPROM - pamięć kasowalna i programowalna elektrycznie(Flash).

25. Specjalizowany układ cyfrowy

– nie wymaga programu, układ może

realizować tylko jeden (konkretny) algorytm przetwarzania informacji

prowadząc do wyników przetwarzania. System mikroprocesorowy, do
przetworzenia informacji wymaga wprowadzonych danych i szczegółowego

zbioru instrukcji zwanych programem który realizuje proces przetwarzania
danych prowadząc do otrzymania wyników. System mikroprocesorowy jest

zdolny do szerszego i bardziej uniwersalnego przetwarzania danych, zależnie
od wprowadzonego programu.

26.Schemat blokowy systemu mikroprocesorowego:
+omów poszczególne części(każdy to musi znać)

27.J

ednostka arytmetyczno logiczna ALU - jednostka ta wykonuje operacje

takie jak: dodawanie, odejmowanie, przyrównanie bitów, porównanie
wartości 2 słów, operacje iloczynowe i sumy algebraiczne, negacji,

alternatywy, wyboru rodzaju operacji dokonujemy sygnałem sterującym.
Układ nie ma pamięci własnej, dlatego współpracuje z rejestrem.

28. Struktura mikroprocesora – w każdym mikroprocesorze możemy
wyróżnić następujące elementy: ALU, interpreter rozkazów, rejestry, szynę

danych i szynę adresową.
29.Przykładowe rejestry mikroprocesora: rejestry danych, rejestry

adresowe, licznik rozkazów, rejestr instrukcji, wskaźnik stosu.
30. Magistrala – zespół linii oraz układów przełączających służących do

przesyłania sygnałów między połączonymi urządzeniami w systemach
mikroprocesorowych, złożony z trzech współdziałających szyn: sterująca -

mówi, czy sygnał ma zostać zapisany, czy odczytany, adresowa - mówi,
z(do) jakiej komórki pamięci sygnał ma zostać odczytany(zapisany),

danych - tą magistralą przepływają dane. Przykłady: PCI, PCI Express,
PCMCIA, USB, AGP, COM…

31. Cykl adresowy - przy realizacji jakiegokolwiek rozkazu procesora z
pamięci następują: wczytywanie do układu sterowania, realizacji rozkazu.

Faza pobrana: 1.odczytujemy rozkaz z licznika rozkazu, a dokładniej
odczytuje się adres komórki z nowym kodem rozkazu, adres ten jest

przesyłany magistralą danych, 2.pobranie kodu rozkazu z pamięci i
umieszczenie go w IR, 3.modyfikacja licznika rozkazu IPC=PC+1. Faza

wykonana: 1.zdekodowanie kodu rozkazu 2.wysyłanie sygnałów sterujących
realizujących dany rozkaz.

32. Zadania i rodzaje WE/WY. Układy pośredniczące w wymianie
informacji miedzy pamięcią, procesorem, a urządzeniami zewnętrznymi.

Układy we/wy mogą być dedykowane tylko do pracy z konkretnym
urządzeniem np. mysz PS/2, lub pracować z wieloma urządzeniami np. USB.

Wyróżniamy układy we/wy :
*Współadresowe z pamięcią operacyjna (traktuje się te układy jako

pewien zespól rejestrów, które są wybierane za pomocą adresów np. karta
grafiki-w celu wyświetlenia grafiki.

*Izolowane-obiekt we/wy wybierany jest poprzez podanie uprzedniego
sygnału sterującego. Przestrzeń adresowa układu we/wy i pamięć może się

pokrywać, o wyborze decyduje sygnał sterujący (sterowanie dysku IDE).
33. Tryb DMA - technika pozwalająca niektórym urządzeniom uzyskiwać

bezpośredni dostęp do modułów pamięci operacyjnej, a więc bez
pośrednictwa procesora, nie zajmując jego mocy obliczeniowej.

*Adresowanie w trybie rzeczywistym - adresy mają 20 bitów.
Natomiast rejestry mają 16 bitów. Zatem by uzyskać fizyczny adres komórki

pamięci zawartość rejestru segmentowego mnoży się razy 16 i dodaje
przesunięcie (OFFSET).

*Adresowanie w trybie chronionym - rejestry segmentowe
zawierają selektory, które wskazują na pole w tablicy deskryptorów. Z

wskazanego elementu tablicy deskryptorów procesor pobiera 32-bitowy
adres bazowy, który sumowany jest z przesunięciem. Tak powstaje adres

liniowy, który przy włączonym mechanizmie stronicowania zostaje poddany
transformacji na adres fizyczny.

35.Tablica deskryptorów - w trybie chronionym procesora x86 struktura
ulokowana w dedykowanym segmencie, zawierająca deskryptory

wszystkich segmentów znajdujących się w pamięci operacyjnej. Dysponując
rozmiarem tablicy deskryptorów można określić maksymalny rozmiar pamięci

wirtualnej, którą może zaadresować pojedynczy proces.
36.Różnice w adresowaniu rzeczywistym a wirtualnym -

W trybie

rzeczywistym procesor 80286 jest kompatybilny z 8086 na poziomie kodu
wynikowego, co oznacza, że procesor może wykonywać skompilowane

programy z systemu 8086 bez dokonywania w nich jakichkolwiek zmian. W
trybie adresów wirtualnych zgodność programowa z procesorem ’86 dotyczy

tylko postaci źródłowych programów. Program wynikowy dla 8086 będzie
błędnie wykonywany przez ‘286 pracujący w trybie adresów wirtualnych.

37.Praca wielozadaniowa w systemie jednoprocesowym - w tym
samym czasie jest wykonywanych kilka zadań współbieżnie, każde na innym

etapie zaawansowania. Na ogół jeden proces jest realizowany przez
określony czas, po czym ustępuje miejsca innemu procesowi, który również

jest realizowany przez określony czas. System realizuje wielozadaniowość
drogą przełączania procesora pomiędzy poszczególnymi zadaniami, dzięki

czemu każde zadanie zyskuje na swoje potrzeby pewną ilość czasu. Na
platformach jednoprocesorowych to przełączanie procesora pomiędzy

poszczególnymi procesami.
38.Cel stosowania pamięci cache i współpraca z mikroprocesorem

coraz szybsze procesory wymagają coraz szybszych układów pamięciowych.
Doszło do sytuacji w której procesor musiał odczekać kilka cyklów

zegarowych zanim otrzymał dane z pamięci.

W celu usunięcia tego

ograniczenia wprowadzona została pamięć podręczna stanowiąca bufor o

krótkim czasie dostępu. Zastosowanie jej zaowocowało zwiększeniem
wydajności obliczeniowej procesorów. Sterownik cache cały czas monitoruje

czy potrzebna informacja jest przechowywana w buforze. Jeżeli tak to mamy
do czynienia z cache hit tzn. dane nie muszą być wyszukiwane i pobierane

od początku ponieważ znajdują się już w pamięci cache i mogą być więc
bezpośrednio wysłane do CPU, co znacznie zwiększa wydajność. W drugim

przypadku mamy do czynienia z cache miss czyli należy pobrać nie obecne w
cach'u adresy i dane potrzebne procesorowi. W tym celu konieczny jest

dostęp do pamięci (wolniejszej) gdzie owe dane są przechowywane i
pobranie ich co w rezultacie spowalnia pracę CPU i owocuje spadkiem

wydajności komputera.
39.Praca potokowa procesora - polega na jednoczesnym przetwarzaniu

kilku zadań. Na każdy takt przypada jedno rozpoczęcie zadania, jedno
przetworzenie wszystkich zadań i jedno zakończenie zadania. Pozwala to na

maksymalnie efektywne wykorzystanie magistrali procesora oraz
zwiększenie wydajności procesora.

40.*FSB(Front Side Bus) - magistrala łącząca procesor z kontrolerem
pamięci.

*FCore - częstotliwość rdzenia procesora (fsb x mnożnik).
*DDR(Double Data Rate) - 2x większa przepustowość(FSBx2).

41.Złożoność algorytmu –zależność między mocą obliczeniową a
rozmiarami wprowadzonych danych z zakresu danego zagadnienia.

42. *Algorytm iteracyjny - algorytm, który uzyskuje wynik przez
powtarzanie danej operacji określoną ilość razy.

*Algorytm rekurencyjny – algorytm, którego wynik zależy od swojego
poprzedniego wyniku (funkcja, która odwołuje się do samej siebie).

43.*NWD – Podajemy 2 liczby. Sprawdzamy czy obie cyfry są podzielne
przez kolejne cyfry rozpoczynając od 2. Iloczyn otrzymanych cyfr da NWD.

36,18|2; 18,9|3; 6,3|3; 2,1|STOP bo nie ma już wspólnych dzielników czyli
NWD(36,18)=2x3x3

*F(n):

F(n)= 1) 0

dla n=0

2) 1

dla n=1

3) F(n-1)+F(n-2)

dla n>1

Ciąg Fibonacciego wyraża się rekurencyjnym wzorem: F(n)=F(n-2)+F(n-1),

gdy F(1)=1 oraz F(2)=1.
Łatwo obliczyć, że:

F(3)=F(1)+F(2)=1+1=2
F(4)=F(2)+F(3)=1+2=3 itd.

*2^n – Przyjmujemy założenia dla n: Gdy n należy do l. całkowitych
n<0, n=0, n>0, gdy n należy do l. wymiernych… Przyjmijmy że algorytm

odnosi się do liczb całkowitych to: Gdy n=0 to n^0=1, gdy n>0 to wynik to
n krotny iloczyn cyfry 2, czyli gdy n=3 to wynik=2*2*2. Gdy n<0 to wynik to

1/(n krotny iloczyn cyfry 2).
*n! – Podaj n, gdy n=0 to wynik=1, gdy n>0 to wynik =1*2*3*…*n

czyli iloczyn kolejnych liczb naturalnych kończąc na n.
*czy n jest liczbą pierwszą – sprawdzam czy n przy dzieleniu przez

wszystkie liczby z zakresu od 2 do n-1 daje resztę z dzielenia, jeśli tak to n
jest liczbą pierwszą.

*równanie kw. Mam równanie w postaci Ax^2+Bx+C=0. Sprawdzam
jakie współczynniki ma równanie. Jeżeli A=0 to nie jest to równanie

kwadratowe. Jeśli A≠0 i Δ=0 to x= -B/2A, jeśli A≠0 i Δ>0 to x1=(-B-
sqrΔ)/2A; x2=(-b+sqrΔ)/2A, jeśli A≠0 i Δ<0 to brak rozwiązań.

C++

44.Instrukcje: przypisania, warunkowa, warunkowa zagnieżdżona,

instrukcje do realizacji pętli obliczeń, instrukcja wyboru, break,
continua, skoku, typedef – składnia (przykłady).

*Przypisania - w językach programowania to instrukcja w której do pewnej
lokacji (l-wartości) przypisuje się wartość, która będzie w nim

przechowywana.
np. int x=5; a=20; d=a+x;

*Warunkowa - umożliwia wykonanie pewnej instrukcji w zależności od
wartości wyrażenia. Wszystkie wartości różne od 0 są w języku C++

traktowane jako prawda, równe 0 jako fałsz. Wyrażenia logiczne są liczone
tylko do momentu, w którym można określić jego wartość.

if (warunek)
{instrukcja}

else
{instrukcja}

int a=4;
if (a > 5)

cout<<”a jest wieksze od 5”;
else if

cout<<”a jest mniejsze od 5”;
else

cout<<”a jest rowne 5”;

*Warunkowa zagnieżdżona - instrukcja if...else... wykonuje serię testów

aż wystąpi jedna z poniższych sytuacji:
-jeden z warunków w instrukcji if lub else if jest prawdziwy. W tym wypadku

wykonują się instrukcje występujące po tym warunku
- żaden z testowanych warunków nie jest prawdziwy. Program wykonuje

instrukcję z ostatniej instrukcji else (jeżeli występuje)
-jeżeli warunek jest spełniony, po prostu wykonuje instrukcje. Np.

if (warunek)
{if(warunek2)

{ instrukcja1}
else {instrukcja2}

}
else {instrukcja3}

char c ;
clrscr () ;

cout << "Podaj znak" ;
cin >> c ;

if (c >= 'A' && c <= 'Z')
cout << "litera duza\n" ;

else if (c >= 'a' && c <= 'z')
cout << "litera mala\n" ;

else if (c >= '0' && c <= '9')
cout << "cyfra/n" ;

else
cout << "inny znak\n" ;

*Pętle
for
(inicjacja; warunek; instrukcja1) instrukcja2 ;

{
double a = 10 ;

int n ;
cout << "Podaj liczbe z zakresu [1..30]: " ;

cin << n ;
if (n > 0 && n <= 30)

{
for (int i = 1 ; i <= n ; i++) a += (double)i ;

cout << n << " != " << a << '\n' ;
}

else cout << "Liczba z poza zakresu" ;
return 0 ;

}

dodatkowo pętle:

while

do-while

while (zmienna < 100)

{
instrukcja_1;

instrukcja_2;
instrukcja_3;

}

do

{
instrukcja_1;

instrukcja_2;
instrukcja_3;

}
while (zmienna > 10);

*Wyboru – switch
-
instrukcja wymaga wartości całkowitej, wartość ta może być stałą

zmienną, wywołaniem funkcji lub wyrażeniem. Switch nie działa ze
zmiennoprzecinkowymi typami danych.

- wartość występująca po każdej etykiecie case musi być stałą.
- C++ nie zezwala na użycie etykiet case z zakresem wartości, każda

wartość musi występować w oddzielnej etykiecie case.
- po każdej grupie wykonywanych instrukcji, trzeba użyć instrukcji break.

Powoduje ona wyjście programu z instrukcji switch. Jeżeli nie użyje się
instrukcji break program przejdzie do wykonania instrukcji po kolejnych

etykietach case.
- zbiór instrukcji dla każdej etykiety lub etykiet musi być zawarty w

nawiasach klamrowych.
- instrukcja po etykiecie default jest wykonywana gdy nie natrafiono na

żadną etykietę else.
Przykład:

char c ;
clrscr () ;

cout << "Podaj znak" ; cin >> c ;
switch (c)

{
case "A":

case "B":

cout << "Duza litera" ;
break ;

case "a":
case "b":


cout << "Mala litera" ;

case "0":
case "1":


cout << "Cyfra" ;

break ;
default :

cout << "Inny znak" ;

background image

}

*Cd 44 instrukcja Break

– umożliwia wyjście z pętli Instrukcja ta

powoduje przejście programu do końca aktualnej pętli. Składnia dla pętli for:

for (inicjalizacja, test, uaktualnienie)

{
//sekwencja instrukcji nr 1

if (warunek wyjścia z pętli) break ;
//sekwencja instrukcji nr 2

}
//sekwencja instrukcji nr 3

Przykład:

char s [8], FindChar ;

// Podaj ciąg

znaków (string) s
for (i = 0 ; i < strlen (s) ; i++) // strlen() - zwraca długość

łańcucha
if (s [i] == findchar) break ;

// znak do wyszukiwania

FindChar
if (i < strlen (s)) cout << " " << i << '\n' ;

*continue

- Instrukcja ta kończy działanie przebiegu kodu pętli - czyli jeżeli

gdzieś w pętli wystąpi instrukcja continue to program pomija instrukcje

występujące po niej i przystępuje do ponownego sprawdzenia warunku.
Instrukcja ta powoduje przedwczesne, bezwarunkowe zakończenie

wykonania wewnętrznej instrukcji pętli i podjęcie próby realizacji następnego
cyklu pętli.

*Instrukcje skoku - goto
Instrukcja goto jest postrzegana przez programistów jako spadek po

BASIC'u, ponieważ za jej pomocą możemy wykonywać skoki do
deklarowanej etykiety. Większość domorosłych programistów uważa, że jej

stosowanie jest przykładem złej znajomości rzeczy, ale tak na prawdę,
użycie goto w uzasadnionym przypadku ma swój sens. Konstrukcja goto jest

prosta:

goto nazwa_etykiety; // a w kodzie programu umieszczamy:

nazwa_etykiety;
instrukcje_etykiety;

Ograniczenia instrukcji goto nie pozwalają jej na przeskoczenie definicji
zmiennej, po każdej etykiecie musi wystąpić co najmniej jedna instrukcja.

Instrukcja ta może przydać się choćby do natychmiastowego opuszczenia
wielokrotnie zagnieżdżonej pętli. Ponadto goto nie może spowodować

przejścia do wykonania instrukcji znajdującej się poza funkcją zawierającą
goto.

*Typedef- Język C++ umożliwia zdefiniowanie swoich własnych typów
danych poprzez

zastosowanie instrukcji typedef. Instrukcja ta jest środkiem, dzięki któremu
program może

rozszerzyć podstawowe typy danych języka C. Ogólna postać instrukcji
typedef jest na-

stępująca,

typedef deklaracja_typu;

gdzie deklaracja_typu jest identyczna jak deklaracja zmiennej, poza tym że
zamiast nazwy_

zmiennej jest użyta nazwa typu. Na przykład instrukcja

typedef int count;

przykład:

main()

{
typedef int group[10]; /* Utworzenie nowego typu

'group' */
group totals; /* Przypisanie nowego typu

danych zmiennej */
for (i = 0; i < 10; i++)

totals[i] = 0;
return (0);

}

45.Jakie znasz typy standardowe?

Typ Boolean
Typ Integer

Typ Float
Typ Character

*bool - przechowuje informacje typu: prawda lub fałsz. Zajmuje 1 bajt
pamięci.

*char - typ znakowy. Można za jego pomocą przechowywać znaki w kodzie
ASCII (American Standard Code for Information Interchange) lub innym

stosowanym na danej maszynie.
*short - short integer, czyli krótki całkowity. Zmienne typu short są

zapisywane na dwóch bajtach.
*int - integer, czyli całkowity. Zapisywany jest na czterech bajtach.

*long - long integer, czyli dla odmiany długi całkowity, na 4 bajtach.
*float - typ zmiennoprzecinkowy pojedynczej precyzji, 4 bajty.

*double - typ zmiennoprzecinkowy zapisywany na 8 bajtach (większa
dokładność)

*long double - można zapisać duże liczby z ogromną dokładnością (10
bajtów)

*void - typ pusty oznaczający brak wartości (stosowany w ANSI C). Żadna
zmienna nie może być typu void. Tylko parametry przekazywane do funkcji

mogą być typu void (oznacza wtedy, że do funkcji nic się nie przekazuje) lub
zwracane przez funkcję (funkcja nic nie zwraca). Oprócz tego typ void może

być stosowany przy tworzeniu pewnych typów złożonych.
*unsigned - typ bez znaku (tylko wartości dodatnie)

46.W jaki sposób możesz zdefiniować typy pochodne (własne)?
Typy pochodne – tworzymy na podstawie typów fundamentalnych za

pomocą operatorów deklaracji
* - wskaźnik danego typu – int *w;

& - referencja do danego typu
[] – tablice danego typu

() – funkcja zwracająca dany typ, o parametrach danego typu
47.Jakie znasz zakresy ważności zmiennej (obiektu)?

- czas życia obiektu - od momentu gdy obiekt został zdefiniowany do
momentu, kiedy przestaje istnieć,

- zakres ważności nazwy – zakres w którym nazwa jest znana kompilatorowi,
- zakres lokalny – od punktu deklaracji do końca bloku,

- zakres globalny – dla nazwy zadeklarowanej poza klasą lub funkcją, zasięg
od punktu deklaracji do końca pliku zawierającego tą deklarację,

- zakres klasy – nazwa widziana tylko przez metody klasy, klas pochodnych i
zaprzyjaźnionych

48. Definiowanie(utworzenie) zmiennej. Podczas definiowania najpierw
podajemy typ zmiennej, później jej nazwę oraz jej wartość.

typ zmienna = wartość;

W ten sposób zdefiniowaliśmy zmienną, którą zainicjalizowaliśmy określoną
wartością początkową.

49.Co to jest enum?
Typ wyliczeniowy enum.

Typ wyliczeniowy jest bardzo sprytnym rozwiązaniem polepszającym
czytelność kodu oraz

zmniejszającym ilość błędów w programie. Stosuje się go w wypadku, gdy
znamy ilość pewnych

stanów układu, oraz jeśli jesteśmy je w stanie wyliczyć. Klasycznym
przypadkiem może być typ

użyty do wyliczenia dni tygodnia:

enum dni_tygodnia = {poniedzialek=1, wtorek, sroda,

czwartek, piatek, sobota, niedziela};

Taka konstrukcja jest jednak mało przydatna. Najlepiej typ enum połączyć z

instrukcją typedef, w wyniku której otrzymujemy nowy typ:

typedef enum { poniedzialek=1, wtorek, środa, czwartek,

piątek, sobota, niedziela}dniTygodnia;

50.Struktura programu w języku C++
Struktura programu:

#include <iostream> // dyrektywa preprocesora dołączająca standardową
// bibliotekę wejścia - wyjścia

using namespace std; // wybór przestrzeni nazw
int main() //główny program

{
double a = 3;

double b, c;

cout << "Wprowadz liczbe: "; // wypisujemy na ekran tekst
cin >> b; // wprowadzamy dane do zmiennej b


c = a * b; // obliczanie wartości wyrażenia arytmetycznego


// wyprowadzanie tekstu na ekran

cout << endl << a << " * " << b << " = " << c;
return 0;

}
51.Operatory arytmetyczne, relacji, logiczne, bitowe.

Operatory relacji:
*operator „>”
oznacza: większy od..

4 > 2; //prawda
3 > 8; //fałsz

Całe wyrażenie ma wartość prawda, gdy warunek jest prawdziwy
*operator „<” czyli: mniejszy od..

21 < 15; //fałsz
11 < 23; //prawda

Wyrażenie jest prawdziwe tylko wtedy, gdy wartość stojąca po lewej stronie
jest mniejsza od wartości będącej po stronie prawej.

*operator „>=” większy lub równy od..

2 >= 3; //fałsz

14 >= 13; //prawda

Wyrażenie jest prawdziwe tylko wtedy, gdy wartość stojąca po lewej stronie

jest większa lub równa wartości będącej po stronie prawej.
*operator „<=” mniejszy lub równy od

21 <= 3; //fałsz
10 <= 18; //prawda

Wyrażenie jest prawdziwe tylko wtedy, gdy wartość stojąca po lewej stronie
jest mniejsza lub równa wartości będącej po stronie prawej.

*operator „==” służy do porównywania dwóch wartości. Gdy wartości są
równe wyrażenie jest prawdą i odwrotnie.

42 == 42; //prawda
4 == 14; //fałsz

Jeśli liczby są takie same wyrażenie jest prawdziwe.
*operator „!=” służy do porównywania dwóch wartości. Gdy wartości są

jednakowe wyrażenie jest fałszem i odwrotnie.

28 != 28; //fałsz

6 != 11; //prawda

Operatory logiczne:

Operatory te służą do obliczania wartości "prawda" lub "fałsz". Warunek
prawdziwy daje wartość 1 natomiast fałszywy 0.

*Negacja logiczna zamienia prawdę w fałsz, a fałsz w prawdę. Np. jeżeli
wyrażenie: a==b jest prawdziwe i do niego

zastosujemy wyrażenie !(a==b) to w wyniku otrzymamy fałsz.
Składnia:

!argument

*Iloczyn logiczny
Wynikiem iloczynu logicznego jest prawda tylko wtedy gdy oba argumenty

też są prawdziwe. Jeżeli tylko jeden jest
fałszywy to wynikiem jest fałsz.

Składnia:

argument1 && argument2

*Suma logiczna

Wynikiem sumy logicznej jest prawda wtedy jeżeli przynajmniej jeden
argument jest prawdziwy. Tylko jeżeli oba są fałszywe to wynikiem jest

fałsz. Np:
01001010 - zmienna1

00101001 - zmienna2
01101011 - wynik

Składnia:

argument1 || argument2

*Równość

Wynikiem jest prawda w tedy gdy wartości obu argumentów są takie same.
Składnia:

argument1 == argument2

*Nierówność
Wynikiem jest prawda w tedy gdy wartości obu argumentów są różne.

Składnia:

argument1 != argument2

Operator arytmetyczne:

*Operator if
Jest to jedyny w języku C++ operator, w którym śa wymagane 3

argumenty. Ma on następującą składnię:
warunek ? wyrażenie1 : wyrażenie2

Zawsze na początku jest obliczany warunek. Jeżeli jest on prawdziwy ( !=
0 ) to jest obliczany wrażenie1 a jeżeli warunek jest równy 0 to jest

obliczane wyrażenie2.
*Operator zwiększania

Dodaje on liczbę 1 do zmiennej przy której ten operator występuje. Jest to
skrót ot wyrażenia:

a = a + 1;

//lub

a += 1;

Składnia:

++zmienna

zmienna++

*Operator zmniejszania

Odejmuje on liczbę 1 do zmiennej przy której ten operator występuje. Jest
to skrót ot wyrażenia:

a = a - 1; lub
a -= 1;

Składnia:

--zmienna

zmienna--

Operatory bitowe :

*Przesuwanie bitów w lewo
Zakładamy że operacja dzieje się na zmiennych typu unsigned char. Jeżeli

zmienna ma wartość przedstawioną w
postaci binarnej:

00100100

to wynikiem takiej operacji zmienna << 2 będzie wynik:

10010000

to polecenie przesuwa bity w lewo o dwie pozycje. Argument traci bity które

w wyniku przesunięcia znajdą się poza nim. po prawej stronie na miejsce
brakujących bitów wstawia zera. Składnia:

zmienna << liczba bitów

*Przesuwanie bitów w prawo .

Jeżeli zmienna ma wartość przedstawioną w
Zakładamy że operacja dzieje się na zmiennych typu unsigned char

postaci binarnej:

00100100

to wynikiem takiej operacji zmienna >> 1 będzie wynik:

00010010

to polecenie przesuwa bity w lewo o jedną pozycję. Argument traci bity
które w wyniku przesunięcia znajdą się poza nim. po lewej stronie na

miejsce brakujących bitów wstawia zera. Składnia:
zmienna >> liczba bitów

*Negacja bitowa
Negacja bitowa zamienia w zmiennej wszystkie zera na jedynki i jedynki na

zera. Jeżeli mamy zmienną o wartości 10011010 to jej negacja bitowa
wygląda tak: 01100101

Składnia:

~zmienna

CD51Koniunkcja bitowa

CD51 *Koniunkcja bitowa

Koniunkcja bitowa jest to mnożenie pojedynczych bitu. Koniunkcja daje
wynik jeden na danej pozycji, gdy w we wszystkich zmiennych na tej pozycji

jest jedynka. Jeżeli tylko na jednym miejscu jest 0 to wynikiem jest 0.
Przykład:

01101011 - zmienna1
11001101 - zmienna2

01001001 - wynik

Składnia:

zmienna1 & zmienna2

*Różnica symetryczna
Wynikiem różnicy symetrycznej jest na danej pozycji jedynka tylko w tedy

gdy tylko w jednej zmiennej na danej pozycji jest jedynka. W przeciwnym
wypadku jest 0.

01101011 - zmienna1
11001101 - zmienna2

10100110 - wynik

Składnia:

zmienna1 ^ zmienna2

*Alternatywa bitowa
Wynikiem alternatywy bitowej jest na danej pozycji jedynka w tedy gdy

przynajmniej w jednej zmiennej na danej pozycji jest jedynka. W
przeciwnym wypadku jest 0.

01101011 - zmienna1
11001101 - zmienna2

11101111 - wynik

Składnia:

zmienna1 | zmienna2

52.Na czym polega inkrementacja i dekrementacja zmiennej?
Inkrementacja/dekrementacja polega na dodaniu/odjęciu od zmiennej

jedynki

#include <iostream>

using namespace std;

int main()
{

int a = 5;
cout << a << endl;

cout << ++a << endl; //preinkrementacja
cout << a++ << endl; //postinkrementacja

cout << a << endl;
return 0;

}

Powyższy program wypisze nam na ekranie:

5
6

6
7

Jak widać na powyższych przykładach rozróżniamy 2 typy inkrementacji -
tzw. preinkrementację i postinkrementację. Obie powodują zwiększenie

wartości zmiennej o 1 jednak jest między nimi pewna różnica. Otóż operator
preinkremencacji

(++a)

zwraca wartość już zwiększoną o 1 (w tym przypadku będzie to 6) natomiast

operator postinkrementacji

(a++)

zwraca wartość zmiennej przed procesem inkrementacji (tutaj zwróci
wartość 6 natomiast wartość zmiennej 'a' będzie już wynosić 7).

Dokładnie tak samo sprawa wygląda dla operatora dekrementacji -

predekrementacji (--a) i postdekrementacji (a--).

53.Podaj przykłady wykorzystania operatorów: sizeof, rzutowania.
*Operator sizeof

Operator sizeof przekazuje liczbę bajtów będącą rozmiarem wyrażenia lub
specyfikatora typu. Może on występować w jednej z dwóch postaci:

sizeof (specyfikator_typu);

sizeof wyrażenie;

*Operator rzutowania
Zmiana typu danych: operator rzutowania

Operator rzutowania służy do zmiany typu danych na inny:

(typ_danych)x;

gdzie typ_danych oznacza ten typ danych, na który ma zostać zamieniona
wartość zmiennej x.

Np. deklaracja:

(float)5;

spowoduje zmianę stałej całkowitej 5 (typu int) na stałą
zmiennoprzecinkową 5.0 (typu float).

54.W jaki sposób można przesyłać argumenty do funkcji –

porównaj te sposoby?
*Przesyłanie argumentów funkcji przez wartość
: występują tutaj

argumenty formalne formalne i aktualne. Argumenty formalne to jest to, jak
na parametry mówi sobie w środku funkcja, natomiast argumenty aktualne

to te, co aktualnie stosujemy w konkretnym wywołaniu funkcji.
*Przesyłanie argumentów przez referencje: ( przez przezwisko) ,

przesyłanie argumentów przez referencje pozwala tej funkcji na
modyfikowanie zmiennych ( nawet lokalnych) znajdujących się poza ta

funkcja.
55.Na czym polega przeładowanie funkcji.

Przeładowanie funkcji: następuje wtedy, gdy w danym zakresie
ważności jest więcej niż jedna funkcja o tej samej nazwie. To, która z tych

funkcji zostanie wykonana, zależy od liczby lub typu argumentów, z którymi
dana funkcja jest wywoływana.

56. W jaki sposób definiuje się tablice i w jaki sposób przekazuje
się je do funkcji (przykłady)?

Tablica to ciąg obiektów tego samego typu, które zajmują ciągły obszar w
pamięci. Tablice są typem pochodnym czyli biorąc typ int tablica będzie typy

int.
Tablice przesyła się podając funkcji tylko adres początku tej tablicy. Nazwa

tablicy jest równocześnie adresem zerowego jej elementu.

definicja np. int liczba[20];

57.Co pojawi się na ekranie monitora w wyniku wykonania
fragmentu programu …..

58.Zdefiniuj i napisz do czego wykorzystuje się wskaźniki?
Wskaźnik to zmienna (zwana zmienna wskaźnikową) która zawiera adres

pierwszej komórki pamięci, w której przechowana jest inna zmienna. Jeśli
zmienna zajmuje więcej niż jedną komórkę pamięci to wskaźnik wskazuje na

pierwszą z tych komórek. Dla każdego wskaźnika określany jest jego typ.
Wskaźnik typu

int wskazuje na zmienną typu int. Dzięki temu, kompilator

wie ile komórek w pamięci zajmuje zmienna rozpoczynająca się w komórce,
na którą wskazuje wskaźnik. Nierozłącznie ze wskaźnikami związane są dwa

operatory. Są to operator wyłuskania, który jest zapisywany jako gwiazdka
(*) oraz operator pobrania adresu &. Oba te operatory są operatorami

przedrostkowymi (zapisuje się je przed zmienną) oraz jednoargumentowymi.
Zastosowanie wskaźników: wskaźniki stosuje się w różnych sytuacjach,

a mianowicie gdy chodzi nam o:
- ulepszenie pracy z tablicami

- funkcje mogą zmieniać wartość przesyłanych do nich argumentów
- dostęp do specjalnych komórek pamięci

- rezerwacje obszarów pamięci
int x=1; //deklaracja zmiennej int

int *wskaznik; //deklaracja wskaźnika na typ int
wskaznik = &x; //przypisanie adresu zmiennej wskaźnikowi

*wskaźnik = 99; //zapis równoważny z "x=99;"
Pierwsza linia przedstawionego kodu jest oczywista więc nie będziemy jej

spejcajlnie analizować. W drugiej lini zadeklarowaliśmy wskaźnik na typ int.
Zatem jak można się domyślać deklaracja wskaźnika wygląda następująco:

<modyfikator> <typ> *nazwa;

background image

Zatem sama deklaracja wskaźnika na zmienną danego typu różni się od
deklaracji zmiennej jedynie dodatkowym znakiem '*' poprzedzającym nazwę

zmiennej.
KONIEC


Wyszukiwarka

Podobne podstrony:
2011 ODP Informatyka Sadzik prezent na swieta
2011 ODP Informatyka Sadzik prezent na swieta, Polibuda, I semestr, Informatyka
INFORMACJE DOTYCZĄCE PRZEDMIOTU wdr, 3 # SZKOŁA - prezentacje na lekcje, wdżwr
Prezentacja na zajęcia dostęp do informacji publicznej 9 10 2015 (1)
Prezentacja na informatykę o wirusach
Prezentacja na technologię informacyjną
Prezentacja na informatyke
Jak przygotować prezentację multimedialną, Ogrodnictwo 2011, Technologia informacyjna
Informacja dotyczaca sytuacji na lokalnym rynku pracy styczen 2011
Techniki zbierania informacji prezenatcja na zaliczenie
BFG prezentacja na 18 12 2011
Prezentacja na seminarium
internetoholizm prezentacja na slajdach
Bezrobocie prezentacja na WOS
Prezentacja na muzyke
Pozagałkowe zapalenie nerwu wzrokowego prezentacja na zajęcia

więcej podobnych podstron