1. Co to jest informatyka - dziedzina wiedzy zajmująca się problemem

*Algorytm rekurencyjny – algorytm, którego wynik zależy od swojego przetwarzania i przesyłania danych.

poprzedniego wyniku (funkcja, która odwołuje się do samej siebie).

2. Algorytm - jest to ciąg informacji służących wykonywaniu pewnego 25. S

pecjalizowany układ cyfrowy – nie wymaga programu, układ może 43. *NWD – Podajemy 2 liczby. Sprawdzamy czy obie cyfry są podzielne zadania. W każdym algorytmie można wyróżnić szereg instrukcji które są realizować tylko jeden (konkretny) algorytm przetwarzania informacji

przez kolejne cyfry rozpoczynając od 2. Iloczyn otrzymanych cyfr da NWD.

szczegółowym przepisem do wykonania procedury.

prowadząc do wyników przetwarzania. System mikroprocesorowy, do 36,18|2; 18,9|3; 6,3|3; 2,1|STOP bo nie ma już wspólnych dzielników czyli 3. Języki programowania proceduralne i deklaratywne - wiążą się ze przetworzenia informacji wymaga wprowadzonych danych i szczegółowego

NWD(36,18)=2x3x3

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

zbioru instrukcji zwanych programem który realizuje proces przetwarzania

*F(n):

F(n)= 1) 0

dla n=0

operacji.

danych prowadząc do otrzymania wyników. System mikroprocesorowy jest

2) 1

dla n=1

J.p. Proceduralne - zapisują procedury które komputer wykonuje

zdolny do szerszego i bardziej uniwersalnego przetwarzania danych, zależnie 3) F(n-1)+F(n-2)

dla n>1

(procedura- moduł programu wykonujący określone zadania)

od wprowadzonego programu.

Ciąg Fibonacciego wyraża się rekurencyjnym wzorem: F(n)=F(n-2)+F(n-1), J.p. Deklaratywne - umożliwiają wyszukiwanie danych w dużych zbiorach.

26. Schemat blokowy systemu mikroprocesorowego:

gdy F(1)=1 oraz F(2)=1.

4. Różnica między obliczeniami numerycznymi i symbolicznymi -

+omów poszczególne części(każdy to musi znać)

Łatwo obliczyć, że:

obliczenia numeryczne to przetwarzanie konkretnych liczb. Obliczenia F(3)=F(1)+F(2)=1+1=2

symboliczne – operacje wykonywane na wyrażeniach(symbolach)

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

matematycznych. Programy z grupy obliczeń symbolicznych nazywane są

*2^n – Przyjmujemy założenia dla n: Gdy n należy do l. całkowitych programami algebry komputerowej. Np. Matlab.

n<0, n=0, n>0, gdy n należy do l. wymiernych… Przyjmijmy że algorytm 5. Czym zajmuje się inżynieria oprogramowania - zajmuje się

odnosi się do liczb całkowitych to: Gdy n=0 to n^0=1, gdy n>0 to wynik to doskonaleniem i optymalizacją oprogramowania. Dobre oprogramowanie

n krotny iloczyn cyfry 2, czyli gdy n=3 to wynik=2*2*2. Gdy n<0 to wynik to powinno być: zgodne z wymaganiami użytkownika, niezawodne, efektywne,

1/(n krotny iloczyn cyfry 2).

łatwe w konwersacji, ergonomiczne. Przyczyny powstania: duża złożoność

*n! – Podaj n, gdy n=0 to wynik=1, gdy n>0 to wynik =1*2*3*…*n systemów operacyjnych, niepowtarzalność poszczególnych przedsięwzięć,

czyli iloczyn kolejnych liczb naturalnych kończąc na n.

pozorna łatwość dokonywania poprawek.

*czy n jest liczbą pierwszą – sprawdzam czy n przy dzieleniu przez 6. Co to jest baza danych - zbiór informacji z pewnej dziedziny, wszystkie liczby z zakresu od 2 do n-1 daje resztę z dzielenia, jeśli tak to n prowadzony w taki sposób, aby łatwo je można było analizować. Każdy zbiór jest liczbą pierwszą.

danych to baza danych, nie musi być komputerowa. Komputerowa baza

*równanie kw. Mam równanie w postaci Ax^2+Bx+C=0. Sprawdzam danych jest podzielona na rekordy. Najprostszą bazą danych jest tabela jakie współczynniki ma równanie. Jeżeli A=0 to nie jest to równanie

składająca się z rekordów.

kwadratowe. Jeśli A≠0 i Δ=0 to x= -B/2A, jeśli A≠0 i Δ>0 to x1=(-B-

7. Siec komputerowa – system połączonych ze sobą urządzeń sieciowych sqrΔ)/2A; x2=(-b+sqrΔ)/2A, jeśli A≠0 i Δ<0 to brak rozwiązań.

które pozwalają na wymianę informacji pomiędzy urządzeniami

27.J

przyłączonymi do tej sieci (wymiana danych wewnątrz sieci, korzystanie z 1

ednostka arytmetyczno logiczna ALU - jednostka ta wykonuje operacje C++

drukarki sieciowej, komunikacja użytkowników dzięki oprogramowaniu

takie jak: dodawanie, odejmowanie, przyrównanie bitów, porównanie

sieciowemu). Rodzaje: LAN(lokalna), MAN(miejska), WAN(światowa).

wartości 2 słów, operacje iloczynowe i sumy algebraiczne, negacji,

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

8. I nternet - globalna sieć komputerowa, umożliwiająca wymianę alternatywy, wyboru rodzaju operacji dokonujemy sygnałem sterującym.

instrukcje do realizacji pętli obliczeń, instrukcja wyboru, break,

informacji dzięki jednolitemu sposobowi kodowania i przesyłu informacji Układ nie ma pamięci własnej, dlatego współpracuje z rejestrem.

continua, skoku, typedef – składnia (przykłady).

protokołem TCP/IPv4 obecnie lub w przyszłości TCP/IPv6. I ntranet -

28. Struktura mikroprocesora – w każdym mikroprocesorze możemy

*Przypisania - w językach programowania to instrukcja w której do pewnej wewnętrzna sieć lokalna w przedsiębiorstwie lub instytucji. Serwer WWW

wyróżnić następujące elementy: ALU, interpreter rozkazów, rejestry, szynę lokacji (l-wartości) przypisuje się wartość, która będzie w nim

udostępnia swoje zasoby wewnątrz przedsiębiorstwa lub instytucji.

danych i szynę adresową.

przechowywana.

9. KONWERSJA BIN-DEC-HEX (samemu)

29. Przykładowe rejestry mikroprocesora: rejestry danych, rejestry np. int x=5; a=20; d=a+x;

10. Relacja pomiędzy ilościami informacji - 8bitów= 1bajt,

adresowe, licznik rozkazów, rejestr instrukcji, wskaźnik stosu.

*Warunkowa - umożliwia wykonanie pewnej instrukcji w zależności od 1kbajt=1024bitów, 1Mb=1024^2bajtów, 1Gb=1024^3bajtów.

30. Magistrala – zespół lini oraz układów przełączających służących do wartości wyrażenia. Wszystkie wartości różne od 0 są w języku C++

11. Cyfrowe kodowanie informacji - dowolna informacja w komputerze przesyłania sygnałów między połączonymi urządzeniami w systemach

traktowane jako prawda, równe 0 jako fałsz. Wyrażenia logiczne są liczone występuje tylko w postaci binarnej dlatego potrzebne są zatem reguły które mikroprocesorowych, złożony z trzech współdziałających szyn: sterująca -

tylko do momentu, w którym można określić jego wartość.

przekształcają różne postacie informacji na postać ciągu cyfr binarnych.

mówi, czy sygnał ma zostać zapisany, czy odczytany, adresowa - mówi,

if (warunek)

int a=4;

Proces przekształcenia informacji nazywamy kodowaniem, polega ono na

z(do) jakiej komórki pamięci sygnał ma zostać odczytany(zapisany),

{instrukcja}

if (a > 5)

zamianie każdego kodu na kod binarny. Z kolei skróceniem kodu binarnego danych - tą magistralą przepływają dane. Przykłady: PCI, PCI Express,

else

cout<<”a jest wieksze od 5”;

jest kod hexadecymalny.

PCMCIA, USB, AGP, COM…

{instrukcja}

else if

12. Co to jest kod ASCII- służy do kodowania tekstu i przesyłania go 31. Cykl adresowy - przy realizacji jakiegokolwiek rozkazu procesora z cout<<”a jest mniejsze od 5”;

między urządzeniami cyfrowymi oprócz znaków alfanumerycznych, koduje

pamięci następują: wczytywanie do układu sterowania, realizacji rozkazu.

else

także znaki sterujące pracę drukarki, przyporządkowuje znakom

Faza pobrana: 1.odczytujemy rozkaz z licznika rozkazu, a dokładniej

cout<<”a jest rowne 5”;

alfanumerycznym i znakom sterującym ciąg złożony z 8 cyfr binarnych.

odczytuje się adres komórki z nowym kodem rozkazu, adres ten jest

*Warunkowa zagnieżdżona - instrukcja if...else... wykonuje serię testów Kodowanie ASCI ma 83 znaków. Posługując się kodem ASCI możemy każdy

przesyłany magistralą danych, 2.pobranie kodu rozkazu z pamięci i

aż wystąpi jedna z poniższych sytuacji:

tekst zapisać jako ciąg bitów i na odwrót.

umieszczenie go w IR, 3.modyfikacja licznika rozkazu IPC=PC+1. Faza

-jeden z warunków w instrukcji if lub else if jest prawdziwy. W tym wypadku 13. Porównanie kombinacyjnych i sekwencyjnych - Ukł.

wykonana: 1.zdekodowanie kodu rozkazu 2.wysyłanie sygnałów sterujących wykonują się instrukcje występujące po tym warunku

kombinacyjny - układ w którym stan wyjść układu zależy wyłącznie od realizujących dany rozkaz.

- żaden z testowanych warunków nie jest prawdziwy. Program wykonuje

stanu wejść. Ukł. sekwencyjny – układ w którym stan wyjść zależy od 32. Zadania i rodzaje WE/WY. Układy pośredniczące w wymianie

instrukcję z ostatniej instrukcji else (jeżeli występuje)

stanu wejść oraz od poprzedniego stanu wyjść.

informacji miedzy pamięcią, procesorem, a urządzeniami zewnętrznymi.

-jeżeli warunek jest spełniony, po prostu wykonuje instrukcje. Np.

14. Układ synchroniczny i asynchroniczny - układem

Układy we/wy mogą być dedykowane tylko do pracy z konkretnym

if (warunek)

char c ;

asynchronicznym (niejednoczesnym) nazywamy taki układ cyfrowy

urządzeniem np. mysz PS/2, lub pracować z wieloma urządzeniami np. USB.

{if(warunek2)

clrscr () ;

którego stan wyjść ustala się po kolei. Czas ustalania się stanu wyjść nie jest Wyróżniamy układy we/wy :

{ instrukcja1}

cout << "Podaj znak" ;

sterowany. Układem synchronicznym nazywamy taki układ którego stan

*Współadresowe z pamięcią operacyjna (traktuje się te układy jako else {instrukcja2}

cin >> c ;

każdego z wyjść ustalany jest taktem zegarowym. Eliminuje to błąd mogący pewien zespól rejestrów, które są wybierane za pomocą adresów np. karta

}

if (c >= 'A' && c <= 'Z')

powstać gdy pojawia się impuls wejściowy a układ nie zdąży zadziałać na grafiki-w celu wyświetlenia grafiki.

else {instrukcja3}

cout << "litera duza\n" ;

skutek zbyt długiego czasu propagacji(zadziałania).

*Izolowane-obiekt we/wy wybierany jest poprzez podanie uprzedniego else if (c >= 'a' && c <= 'z')

15. Do czego rejestr i rodzaje - układ cyfrowy służący do krótkotrwałego sygnału sterującego. Przestrzeń adresowa układu we/wy i pamięć może się cout << "litera mala\n" ;

zapamiętywania określonej porcji bitów danych. Na wejście podaję się

pokrywać, o wyborze decyduje sygnał sterujący (sterowanie dysku IDE).

else if (c >= '0' && c <= '9')

informację do zapamiętania w rejestrze. W tym momencie na wejście

33. Tryb DMA - technika pozwalająca niektórym urządzeniom uzyskiwać cout << "cyfra/n" ;

sterujące podaje się sygnał sterujący który zapisuje informację z wejść.

bezpośredni dostęp do modułów pamięci operacyjnej, a więc bez

else

Informacja przechowywana w rejestrze pojawia się na wyjściu. Rodzaje: pośrednictwa procesora, nie zajmując jego mocy obliczeniowej.

cout << "inny znak\n" ;

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

*Adresowanie w trybie rzeczywistym - adresy mają 20 bitów.

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

*Pętle

Natomiast rejestry mają 16 bitów. Zatem by uzyskać fizyczny adres komórki asynchroniczny.

for (inicjacja; warunek; instrukcja1) instrukcja2 ;

pamięci zawartość rejestru segmentowego mnoży się razy 16 i dodaje

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

{

przesunięcie (OFFSET).

zapewnić przesyłanie informacji między różnymi układami w systemie

double a = 10 ;

*Adresowanie w trybie chronionym - rejestry segmentowe

mikroprocesorowym, najprościej każdy układ połączyć z każdym, co jest

int n ;

zawierają selektory, które wskazują na pole w tablicy deskryptorów. Z

jednak fizycznie niemożliwe, więc tych połączeń jest mniej i droga którą cout << "Podaj liczbe z zakresu [1..30]: " ;

wskazanego elementu tablicy deskryptorów procesor pobiera 32-bitowy

komunikują się dane układy nazywana jest magistralą. Składa się ona z 2

cin << n ;

adres bazowy, który sumowany jest z przesunięciem. Tak powstaje adres

lub więcej układów będących nadajnikami lub(i) odbiornikami informacji.

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

liniowy, który przy włączonym mechanizmie stronicowania zostaje poddany 17. U2(kod uzupełnień do dwóch) obecnie najpopularniejszy sposób

{

transformacji na adres fizyczny.

zapisu liczb całkowitych oraz ułamkowych przedstawionych w formacie

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

35. Tablica deskryptorów - w trybie chronionym procesora x86 struktura stałoprzecinkowym na bitach. Operacje dodawania i odejmowania są w nim cout << n << " != " << a << '\n' ;

ulokowana w dedykowanym segmencie, zawierająca deskryptory

wykonywane tak samo jak dla liczb binarnych bez znaku. Nazwa kodu wzięła

}

wszystkich segmentów znajdujących się w pamięci operacyjnej. Dysponując się ze sposobu obliczania liczb przeciwnych. Dla liczb n-bitowych wartości else cout << "Liczba z poza zakresu" ;

rozmiarem tablicy deskryptorów można określić maksymalny rozmiar pamięci przeciwne uzyskujemy odejmując liczbę od dwukrotnej wagi najstarszego

return 0 ;

wirtualnej, którą może zaadresować pojedynczy proces.

bitu (2·2n–1 = 2n).

}

36.Różnice w adresowaniu rzeczywistym a wirtualnym - W trybie

18. Dekodery i kodery priorytetu. Dekoder - układ kombinacyjny dodatkowo pętle:

rzeczywistym procesor 80286 jest kompatybilny z 8086 na poziomie kodu

posiadający n wejść oraz k wyjść (k=2n). Jego działanie polega na

while

do-while

wynikowego, co oznacza, że procesor może wykonywać skompilowane

zamianie kodu binarnego (o długości n), lub każdego innego kodu, na kod programy z systemu 8086 bez dokonywania w nich jakichkolwiek zmian. W

while (zmienna < 100)

do

"1 z k". Koder priorytetu – układ kodera z następującymi zmianami: na trybie adresów wirtualnych zgodność programowa z procesorem ’86 dotyczy

{

{

wejściu kodera może pojawić się więcej niż 1 wyróżniony sygnał, każde

tylko postaci źródłowych programów. Program wynikowy dla 8086 będzie

instrukcja_1;

instrukcja_1;

wejście ma przypisany swój priorytet. Na wyjściu pojawia się zakodowany błędnie wykonywany przez ‘286 pracujący w trybie adresów wirtualnych.

instrukcja_2;

instrukcja_2;

numer tego wejścia wyróżniony sygnałem który posiada najwyższy priorytet.

37.Praca wielozadaniowa w systemie jednoprocesowym - w tym

instrukcja_3;

instrukcja_3;

19. Podział pamięci półprz. RAM- pamięć ulotna służy do zapisu i samym czasie jest wykonywanych kilka zadań współbieżnie, każde na innym

}

}

odczytu. Tą pamięć dzielimy na: DRAM- są to pamięci wolne, tanie, łatwe w etapie zaawansowania. Na ogół jeden proces jest realizowany przez

while (zmienna > 10);

miniaturyzacji stosuje się je jako RAM w komputerach; SDRAM- szybkie,

określony czas, po czym ustępuje miejsca innemu procesowi, który również

*Wyboru – switch

drogie stosuje się je jako pamięci podręczne (cache) w procesorach. ROM -

jest realizowany przez określony czas. System realizuje wielozadaniowość

- instrukcja wymaga wartości całkowitej, wartość ta może być stałą pamięć nieulotna przeznaczone tylko do odczytu. Dzieli się ją na: ROM-tylko drogą przełączania procesora pomiędzy poszczególnymi zadaniami, dzięki zmienną, wywołaniem funkcji lub wyrażeniem. Switch nie działa ze

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

czemu każde zadanie zyskuje na swoje potrzeby pewną ilość czasu. Na

zmiennoprzecinkowymi typami danych.

tylko do odczytu, EEPROM - pamięć kasowalna i programowalna

platformach jednoprocesorowych to przełączanie procesora pomiędzy

- wartość występująca po każdej etykiecie case musi być stałą.

elektrycznie(Flash).

poszczególnymi procesami.

- C++ nie zezwala na użycie etykiet case z zakresem wartości, każda

20. Laczenie pamięci - zwiększenie liczby slów, zwiększenie liczby adresów, 38. Cel stosowania pamięci cache i współpraca z mikroprocesorem –

wartość musi występować w oddzielnej etykiecie case.

zwiększenie długości slow, zwiększenie ilości lini w szynie adresowej coraz szybsze procesory wymagają coraz szybszych układów pamięciowych.

- po każdej grupie wykonywanych instrukcji, trzeba użyć instrukcji break.

21. Skracanie czasu dostępu do pamięci. Skracanie czasu dostępu do Doszło do sytuacji w której procesor musiał odczekać kilka cyklów

Powoduje ona wyjście programu z instrukcji switch. Jeżeli nie użyje się pamięci polega na zwiększaniu częstotliwości taktowania pamięci poprzez zegarowych zanim otrzymał dane z pamięci. W celu usunięcia tego

instrukcji break program przejdzie do wykonania instrukcji po kolejnych podnoszenie taktowania szyny FSB. Niektóre płyty główne umożliwiają

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

etykietach case.

modyfikację timingów z jakimi pamięć pracuje (CAS Latency(CL), RAS-to-

krótkim czasie dostępu. Zastosowanie jej zaowocowało zwiększeniem

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

CAS Delay(tRCD), RAS Precharge Time(tRP), Cycle Time(Tras), Command

wydajności obliczeniowej procesorów. Sterownik cache cały czas monitoruje nawiasach klamrowych.

Rate(CR), xxxMHz). Wraz ze zmianą częstotliwości pracy magistrali

czy potrzebna informacja jest przechowywana w buforze. Jeżeli tak to mamy

- instrukcja po etykiecie default jest wykonywana gdy nie natrafiono na procesorów parametry pamięci ulegają zmianom.

do czynienia z cache hit tzn. dane nie muszą być wyszukiwane i pobierane żadną etykietę else.

22. Na czym polega odświeżanie pamięci – Odświeżanie pamięci polega od początku ponieważ znajdują się już w pamięci cache i mogą być więc

Przykład:

na okresowym odświeżaniu zawartości pamięci, ponieważ w przeciwnym

bezpośrednio wysłane do CPU, co znacznie zwiększa wydajność. W drugim

char c ;

przypadku dane mogą zaniknąć (kondensatory się rozładują). Odświeżanie przypadku mamy do czynienia z cache miss czyli należy pobrać nie obecne w clrscr () ;

musi następować w regularnych odstępach czasu oraz bezpośrednio po

cach'u adresy i dane potrzebne procesorowi. W tym celu konieczny jest

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

każdej operacji odczytu i polega na ponownym zapisie odczytanej wartości w dostęp do pamięci (wolniejszej) gdzie owe dane są przechowywane i

switch (c)

tych samych komórkach pamięci.

pobranie ich co w rezultacie spowalnia pracę CPU i owocuje spadkiem

{

23. SDRAM - pamięć dynamiczna, synchroniczna, zbudowana na

wydajności komputera.

case "A":

kondensatorach i tranzystorach. Synchroniczna, ponieważ działa ona zgodnie 39.Praca potokowa procesora - polega na jednoczesnym przetwarzaniu case "B":

z przebiegiem taktu zegara procesora.

kilku zadań. Na każdy takt przypada jedno rozpoczęcie zadania, jedno

…

DRAM - ulotna pamięć półprzewodnikowa o dostępie swobodnym,

przetworzenie wszystkich zadań i jedno zakończenie zadania. Pozwala to na cout << "Duza litera" ;

której bity są reprezentowane przez stan naładowania kondensatorów. Nie maksymalnie efektywne wykorzystanie magistrali procesora oraz

break ;

wymagają stałego zasilania, a jedynie okresowego odświeżania zawartości, zwiększenie wydajności procesora.

case "a":

przez co zużywają mniej energi . Komórka pamięci dynamicznej składa się z 40.*FSB(Front Side Bus) - magistrala łącząca procesor z kontrolerem case "b":

mniejszej liczby elementów niż analogiczna komórka pamięci statycznej.

pamięci.

…

Powyższe cechy pozwalają na większe upakowanie elementów w układach

*FCore - częstotliwość rdzenia procesora (fsb x mnożnik).

cout << "Mala litera" ;

scalonych, niższe koszty produkcji, budowa układów pamięci o większych

*DDR(Double Data Rate) - 2x większa przepustowość(FSBx2).

case "0":

pojemnościach.

41. Złożoność algorytmu –zależność między mocą obliczeniową a

case "1":

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

rozmiarami wprowadzonych danych z zakresu danego zagadnienia.

…

jednorazowego zapisu, EPROM – kasowalna(UV) pamięć tylko do odczytu,

42. *Algorytm iteracyjny - algorytm, który uzyskuje wynik przez cout << "Cyfra" ;

EEPROM - pamięć kasowalna i programowalna elektrycznie(Flash).

powtarzanie danej operacji określoną ilość razy.

break ;

default :

cout << "Inny znak" ;

}

*

Cd 44 instrukcja Break – umożliwia wyjście z pętli Instrukcja ta CD51Koniunkcja bitowa

powoduje przejście programu do końca aktualnej pętli. Składnia dla pętli for: 50. Struktura programu w języku C++

for (inicjalizacja, test, uaktualnienie)

Struktura programu:

CD51 *Koniunkcja bitowa

{

#include <iostream> // dyrektywa preprocesora dołączająca standardową Koniunkcja bitowa jest to mnożenie pojedynczych bitu. Koniunkcja daje

//sekwencja instrukcji nr 1

// bibliotekę wejścia - wyjścia

wynik jeden na danej pozycji, gdy w we wszystkich zmiennych na tej pozycji if (warunek wyjścia z pętli) break ;

using namespace std; // wybór przestrzeni nazw

jest jedynka. Jeżeli tylko na jednym miejscu jest 0 to wynikiem jest 0.

//sekwencja instrukcji nr 2

int main() //główny program

Przykład:

}

{

01101011 - zmienna1

//sekwencja instrukcji nr 3

double a = 3;

11001101 - zmienna2

Przykład:

double b, c;

01001001 - wynik

char s [8], FindChar ;

// Podaj ciąg

Składnia:

zmienna1 & zmienna2

znaków (string) s

cout << "Wprowadz liczbe: "; // wypisujemy na ekran tekst

*Różnica symetryczna

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

cin >> b; // wprowadzamy dane do zmiennej b Wynikiem różnicy symetrycznej jest na danej pozycji jedynka tylko w tedy łańcucha

gdy tylko w jednej zmiennej na danej pozycji jest jedynka. W przeciwnym if (s [i] == findchar) break ;

// znak do wyszukiwania

c = a * b; // obliczanie wartości wyrażenia arytmetycznego wypadku jest 0.

FindChar

01101011 - zmienna1

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

// wyprowadzanie tekstu na ekran

11001101 - zmienna2

*c ontinue - Instrukcja ta kończy działanie przebiegu kodu pętli - czyli jeżeli cout << endl << a << " * " << b << " = " << c; 10100110 - wynik

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

Składnia:

zmienna1 ^ zmienna2

występujące po niej i przystępuje do ponownego sprawdzenia warunku.

}

*Alternatywa bitowa

Instrukcja ta powoduje przedwczesne, bezwarunkowe zakończenie

51. Operatory arytmetyczne, relacji, logiczne, bitowe.

Wynikiem alternatywy bitowej jest na danej pozycji jedynka w tedy gdy

wykonania wewnętrznej instrukcji pętli i podjęcie próby realizacji następnego Operatory relacji:

przynajmniej w jednej zmiennej na danej pozycji jest jedynka. W

cyklu pętli.

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

przeciwnym wypadku jest 0.

*Instrukcje skoku - goto

4 > 2; //prawda

01101011 - zmienna1

Instrukcja goto jest postrzegana przez programistów jako spadek po

3 > 8; //fałsz

11001101 - zmienna2

BASIC'u, ponieważ za jej pomocą możemy wykonywać skoki do

Całe wyrażenie ma wartość prawda, gdy warunek jest prawdziwy

11101111 - wynik

deklarowanej etykiety. Większość domorosłych programistów uważa, że jej

*operator „< ” czyli: mniejszy od..

Składnia:

zmienna1 | zmienna2

stosowanie jest przykładem złej znajomości rzeczy, ale tak na prawdę,

21 < 15; //fałsz

52. Na czym polega inkrementacja i dekrementacja zmiennej?

użycie goto w uzasadnionym przypadku ma swój sens. Konstrukcja goto jest 11 < 23; //prawda

Inkrementacja/dekrementacja polega na dodaniu/odjęciu od zmiennej

prosta:

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

goto nazwa_etykiety; // a w kodzie programu umieszczamy:

jest mniejsza od wartości będącej po stronie prawej.

#include <iostream>

nazwa_etykiety;

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

using namespace std;

instrukcje_etykiety;

2 >= 3; //fałsz

Ograniczenia instrukcji goto nie pozwalają jej na przeskoczenie definicji 14 >= 13; //prawda

int main()

zmiennej, po każdej etykiecie musi wystąpić co najmniej jedna instrukcja.

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

{

Instrukcja ta może przydać się choćby do natychmiastowego opuszczenia

jest większa lub równa wartości będącej po stronie prawej.

int a = 5;

wielokrotnie zagnieżdżonej pętli. Ponadto goto nie może spowodować

*operator „<=” mniejszy lub równy od

cout << a << endl;

przejścia do wykonania instrukcji znajdującej się poza funkcją zawierającą 21 <= 3; //fałsz

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

goto.

10 <= 18; //prawda

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

*Typedef- Język C++ umożliwia zdefiniowanie swoich własnych typów Wyrażenie jest prawdziwe tylko wtedy, gdy wartość stojąca po lewej stronie cout << a << endl;

danych poprzez

jest mniejsza lub równa wartości będącej po stronie prawej.

return 0;

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

*operator „==” służy do porównywania dwóch wartości. Gdy wartości są

}

program może

równe wyrażenie jest prawdą i odwrotnie.

Powyższy program wypisze nam na ekranie:

rozszerzyć podstawowe typy danych języka C. Ogólna postać instrukcji

42 == 42; //prawda

5

typedef jest na-

4 == 14; //fałsz

6

stępująca,

Jeśli liczby są takie same wyrażenie jest prawdziwe.

6

typedef deklaracja_typu;

*operator „!=” służy do porównywania dwóch wartości. Gdy wartości są 7

gdzie deklaracja_typu jest identyczna jak deklaracja zmiennej, poza tym że jednakowe wyrażenie jest fałszem i odwrotnie.

Jak widać na powyższych przykładach rozróżniamy 2 typy inkrementacji -

zamiast nazwy_

28 != 28; //fałsz

tzw. preinkrementację i postinkrementację. Obie powodują zwiększenie

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

6 != 11; //prawda

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

Operatory logiczne:

preinkremencacji

przykład:

Operatory te służą do obliczania wartości "prawda" lub "fałsz". Warunek (++a)

main()

prawdziwy daje wartość 1 natomiast fałszywy 0.

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

{

*Negacja logiczna zamienia prawdę w fałsz, a fałsz w prawdę. Np. jeżeli operator postinkrementacji

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

wyrażenie: a==b jest prawdziwe i do niego

(a++)

'group' */

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

zwraca wartość zmiennej przed procesem inkrementacji (tutaj zwróci

group totals; /* Przypisanie nowego typu

Składnia:

!argument

wartość 6 natomiast wartość zmiennej 'a' będzie już wynosić 7).

danych zmiennej */

*Iloczyn logiczny

for (i = 0; i < 10; i++)

Wynikiem iloczynu logicznego jest prawda tylko wtedy gdy oba argumenty Dokładnie tak samo sprawa wygląda dla operatora dekrementacji -

totals[i] = 0;

też są prawdziwe. Jeżeli tylko jeden jest

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

return (0);

fałszywy to wynikiem jest fałsz.

}

Składnia:

argument1 && argument2

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

45. Jakie znasz typy standardowe?

*Suma logiczna

*Operator sizeof

Typ Boolean

Wynikiem sumy logicznej jest prawda wtedy jeżeli przynajmniej jeden

Operator sizeof przekazuje liczbę bajtów będącą rozmiarem wyrażenia lub Typ Integer

argument jest prawdziwy. Tylko jeżeli oba są fałszywe to wynikiem jest specyfikatora typu. Może on występować w jednej z dwóch postaci:

Typ Float

fałsz. Np:

sizeof (specyfikator_typu);

Typ Character

01001010 - zmienna1

sizeof wyrażenie;

*bool - przechowuje informacje typu: prawda lub fałsz. Zajmuje 1 bajt 00101001 - zmienna2

*Operator rzutowania

pamięci.

01101011 - wynik

Zmiana typu danych: operator rzutowania

*char - typ znakowy. Można za jego pomocą przechowywać znaki w kodzie Składnia:

argument1 || argument2

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

ASCII (American Standard Code for Information Interchange) lub innym

*Równość

(typ_danych)x;

stosowanym na danej maszynie.

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

gdzie typ_danych oznacza ten typ danych, na który ma zostać zamieniona

*short - short integer, czyli krótki całkowity. Zmienne typu short są Składnia:

argument1 == argument2

wartość zmiennej x.

zapisywane na dwóch bajtach.

*Nierówność

Np. deklaracja:

*int - integer, czyli całkowity. Zapisywany jest na czterech bajtach.

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

(float)5;

*long - long integer, czyli dla odmiany długi całkowity, na 4 bajtach.

Składnia:

argument1 != argument2

spowoduje zmianę stałej całkowitej 5 (typu int) na stałą

*float - typ zmiennoprzecinkowy pojedynczej precyzji, 4 bajty.

Operator arytmetyczne:

zmiennoprzecinkową 5.0 (typu float).

*double - typ zmiennoprzecinkowy zapisywany na 8 bajtach (większa

*Operator if

dokładność)

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

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

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

argumenty. Ma on następującą składnię:

porównaj te sposoby?

bajtów)

warunek ? wyrażenie1 : wyrażenie2

*Przesyłanie argumentów funkcji przez wartość: występują tutaj

*void - typ pusty oznaczający brak wartości (stosowany w ANSI C). Żadna Zawsze na początku jest obliczany warunek. Jeżeli jest on prawdziwy ( !=

argumenty formalne formalne i aktualne. Argumenty formalne to jest to, jak zmienna nie może być typu void. Tylko parametry przekazywane do funkcji 0 ) to jest obliczany wrażenie1 a jeżeli warunek jest równy 0 to jest

na parametry mówi sobie w środku funkcja, natomiast argumenty aktualne mogą być typu void (oznacza wtedy, że do funkcji nic się nie przekazuje) lub obliczane wyrażenie2.

to te, co aktualnie stosujemy w konkretnym wywołaniu funkcji.

zwracane przez funkcję (funkcja nic nie zwraca). Oprócz tego typ void może

*Operator zwiększania

*Przesyłanie argumentów przez referencje: ( przez przezwisko) , być stosowany przy tworzeniu pewnych typów złożonych.

Dodaje on liczbę 1 do zmiennej przy której ten operator występuje. Jest to przesyłanie argumentów przez referencje pozwala tej funkcji na

*unsigned - typ bez znaku (tylko wartości dodatnie)

skrót ot wyrażenia:

modyfikowanie zmiennych ( nawet lokalnych) znajdujących się poza ta

46. W jaki sposób możesz zdefiniować typy pochodne (własne)?

a = a + 1;

//lub

funkcja.

Typy pochodne – tworzymy na podstawie typów fundamentalnych za

a += 1;

55.Na czym polega przeładowanie funkcji.

pomocą operatorów deklaracji

Składnia:

Przeładowanie funkcji: następuje wtedy, gdy w danym zakresie

* - wskaźnik danego typu – int *w;

++zmienna

ważności jest więcej niż jedna funkcja o tej samej nazwie. To, która z tych

& - referencja do danego typu

zmienna++

funkcji zostanie wykonana, zależy od liczby lub typu argumentów, z którymi

[] – tablice danego typu

*Operator zmniejszania

dana funkcja jest wywoływana.

() – funkcja zwracająca dany typ, o parametrach danego typu

Odejmuje on liczbę 1 do zmiennej przy której ten operator występuje. Jest 56. W jaki sposób definiuje się tablice i w jaki sposób przekazuje

47.Jakie znasz zakresy ważności zmiennej (obiektu)?

to skrót ot wyrażenia:

się je do funkcji (przykłady)?

- czas życia obiektu - od momentu gdy obiekt został zdefiniowany do

a = a - 1; lub

Tablica to ciąg obiektów tego samego typu, które zajmują ciągły obszar w momentu, kiedy przestaje istnieć,

a -= 1;

pamięci. Tablice są typem pochodnym czyli biorąc typ int tablica będzie typy

- zakres ważności nazwy – zakres w którym nazwa jest znana kompilatorowi, Składnia:

int.

- zakres lokalny – od punktu deklaracji do końca bloku,

--zmienna

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

- zakres globalny – dla nazwy zadeklarowanej poza klasą lub funkcją, zasięg zmienna--

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

od punktu deklaracji do końca pliku zawierającego tą deklarację,

Operatory bitowe :

definicja np. int liczba[20];

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

*Przesuwanie bitów w lewo

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

zaprzyjaźnionych

Zakładamy że operacja dzieje się na zmiennych typu unsigned char. Jeżeli fragmentu programu …..

48. Definiowanie(utworzenie) zmiennej. Podczas definiowania najpierw zmienna ma wartość przedstawioną w

58. Zdefiniuj i napisz do czego wykorzystuje się wskaźniki?

podajemy typ zmiennej, później jej nazwę oraz jej wartość.

postaci binarnej:

Wskaźnik to zmienna (zwana zmienna wskaźnikową) która zawiera adres typ zmienna = wartość;

00100100

pierwszej komórki pamięci, w której przechowana jest inna zmienna. Jeśli to wynikiem takiej operacji zmienna << 2 będzie wynik:

zmienna zajmuje więcej niż jedną komórkę pamięci to wskaźnik wskazuje na W ten sposób zdefiniowaliśmy zmienną, którą zainicjalizowaliśmy określoną 10010000

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

wartością początkową.

to polecenie przesuwa bity w lewo o dwie pozycje. Argument traci bity które Wskaźnik typu int wskazuje na zmienną typu int. Dzięki temu, kompilator 49. Co to jest enum?

w wyniku przesunięcia znajdą się poza nim. po prawej stronie na miejsce wie ile komórek w pamięci zajmuje zmienna rozpoczynająca się w komórce, Typ wyliczeniowy enum.

brakujących bitów wstawia zera. Składnia:

na którą wskazuje wskaźnik. Nierozłącznie ze wskaźnikami związane są dwa Typ wyliczeniowy jest bardzo sprytnym rozwiązaniem polepszającym

zmienna << liczba bitów

operatory. Są to operator wyłuskania, który jest zapisywany jako gwiazdka czytelność kodu oraz

*Przesuwanie bitów w prawo .

(*) oraz operator pobrania adresu &. Oba te operatory są operatorami zmniejszającym ilość błędów w programie. Stosuje się go w wypadku, gdy Jeżeli zmienna ma wartość przedstawioną w

przedrostkowymi (zapisuje się je przed zmienną) oraz jednoargumentowymi.

znamy ilość pewnych

Zakładamy że operacja dzieje się na zmiennych typu unsigned char

Zastosowanie wskaźników: wskaźniki stosuje się w różnych sytuacjach, stanów układu, oraz jeśli jesteśmy je w stanie wyliczyć. Klasycznym

postaci binarnej:

a mianowicie gdy chodzi nam o:

przypadkiem może być typ

00100100

- ulepszenie pracy z tablicami

użyty do wyliczenia dni tygodnia:

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

- funkcje mogą zmieniać wartość przesyłanych do nich argumentów

00010010

- dostęp do specjalnych komórek pamięci

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

to polecenie przesuwa bity w lewo o jedną pozycję. Argument traci bity

- rezerwacje obszarów pamięci

czwartek, piatek, sobota, niedziela};

które w wyniku przesunięcia znajdą się poza nim. po lewej stronie na

int x=1; //deklaracja zmiennej int

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

int *wskaznik; //deklaracja wskaźnika na typ int

Taka konstrukcja jest jednak mało przydatna. Najlepiej typ enum połączyć z zmienna >> liczba bitów

wskaznik = &x; //przypisanie adresu zmiennej wskaźnikowi

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

*Negacja bitowa

*wskaźnik = 99; //zapis równoważny z "x=99;"

Negacja bitowa zamienia w zmiennej wszystkie zera na jedynki i jedynki na Pierwsza linia przedstawionego kodu jest oczywista więc nie będziemy jej typedef enum { poniedzialek=1, wtorek, środa, czwartek,

zera. Jeżeli mamy zmienną o wartości 10011010 to jej negacja bitowa

spejcajlnie analizować. W drugiej lini zadeklarowaliśmy wskaźnik na typ int.

piątek, sobota, niedziela}dniTygodnia;

wygląda tak: 01100101

Zatem jak można się domyślać deklaracja wskaźnika wygląda następująco: Składnia:

~zmienna

<modyfikator> <typ> *nazwa;

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

KONIEC