Pytania do egzaminu z informatyki - Notatki - Informatyka, Notatki'z Informatyka. Opole University
Kowal_86
Kowal_868 March 2013

Pytania do egzaminu z informatyki - Notatki - Informatyka, Notatki'z Informatyka. Opole University

PDF (550.9 KB)
11 strona
720Liczba odwiedzin
Opis
Notatki dotyczące tematów z dziedziny informatyki: pytania do egzaminu z informatyki
20punkty
Punkty pobierania niezbędne do pobrania
tego dokumentu
Pobierz dokument
Podgląd3 strony / 11
To jest jedynie podgląd.
Zobacz i pobierz cały dokument.
To jest jedynie podgląd.
Zobacz i pobierz cały dokument.
To jest jedynie podgląd.
Zobacz i pobierz cały dokument.
To jest jedynie podgląd.
Zobacz i pobierz cały dokument.
1

1. Wymień i krótko opisz fazy kompilacji programu w języku C++.

Plik źródłowy jest kompilowany do pliku zawierającego kod pośredni. Następnie pliki te są łączone w

program wykonywalny.

2. Jaka wygląda struktura poprawnego programu? Od jakiej instrukcji rozpoczyna się wykonywanie każdego programu w C++?

#include <iostream.h> (dyrektywy preprocesora)

main()

{…;

Return 0; }

Wykonywanie każdego programu zaczyna się od instrukcji main( )

3. Wymień cechy charakteryzujące każdą zmienną.

-nazwa

-jest określonego typu

-przechowuje określoną wartość jaką jej nadano np. w operacji przypisania

4. W jakich systemach liczbowych mogą być zapisane stałe reprezentujące liczby całkowite w języku C++?

-w systemie dziesiątkowym

-w systemie ósemkowym

-w systemie szestnastkowym

10 = 10 010= 8 0x10=16

5. Omów operatory, które umożliwiają tworzenie obiektów typów pochodnych.

[ ] tablica obiektów danego typu (macierz, wektor obiektów danego typu

* wskaźnik do pokazywania na obiekty danego typu (to obiekt w którym można umieścić adres innego typu w

pamięci)

( ) funkcja zwracająca wartość danego typu (podprogram realizujący określony algorytm)

& referencja (adres) obiektu danego typu (inaczej inne nazwanie „pseudonim” jakiegoś obiektu)

docsity.com

6. Omów operator inkrementacji i dekrementacji.

i „++” operator inkrementacji (i=i+1)

i „—„ operator dekremntacji (i=i-1)

Jeżeli operator „++” lub „—„ stoi przed zmienną, to najpierw jest ona zwiększona o 1, a następnie liczy się

wartość wyrażenia w której ona występuje.

7. Co to jest operator rzutowania? Jaką wartość przyjmie zmienna b po wykonaniu sekwencji: int a = 0xAE9C; char b; b = (char) a;

Działanie operatora polega na tym, że brany jest obiekt jakiegoś typu i jak rezultat zwracany jest obiekt innego

typu.

Zmienna b typu char przyjmie wartość 0x9C

8. Omów pojęcie zakres ważności obiektu w programie; wyjaśnij pojęcie zasłanianie nazw.

Zakres ważności obiektu to ta część programu w której nazwa obiektu znana jest kompilatorowi

a)zakres lokalny dot. bloku, np.:

main( )

{ ...; ...; ...;

{ // początek bloku wewnętrznego

Int x, y ; // zmienne x oraz y obowiązują

x = 10; y = sin(x); // w bloku wewnętrznym

...; ... ;

};

...; ...; ...; ...; return 0;

}

b) zakres „blok funkcji”

Zakres ważności ograniczony do bloku funkcji.

Int fun1(int k, double x)

{

Int n, m; double x1, y, w;

...; ...; ...;

E: w = 10;

y = sin(w);

...; ...;

if(...) goto

E;

...; ...;

return n+m;

}

Zasłanianie nazw - Nowa definicja zasłania definicję poprzednią, np.:

int

docsity.com

i = 25 ;

main ( )

{

...; ...; ...;

{

int

i = 125 ;

...; ...; ...;

};

...; ...; return 0;

9. Co to jest zmienna wskaźnikowa? Jak deklarujemy zmienne wskaźnikowe i jak nadajemy im określoną wartość, podaj przykłady.

Wskaźniki to nowy rodzaj zmiennych, które „wskazują” na zmienne określonego typu. Symbolem defniującym

zmienną wskaźnikową jest „*” umieszczona przed nazwą zmiennej np. int *w //w jest wskaźnikiem do

zmiennych typu int, char *wsk_c //wsk_c

10. Jakie są zasady definiowania tablic.

Ilość elementów tablicy podaje się wewnątrz nawiasów kwadratowych, przy czym ilość musi być stałą, znaną na

etapie kompilacji. np. float dane[5]

11. Jakie są zasady inicjowania elementów tablic o wartościach liczbowych w chwili definiowania tablicy?

tab [5]={1,2,3,4,5} dobrze; tab []={1,2,3,4,5} dobrze tab [3]={1,2,3,4,5} źle

12. Jakie są zasady inicjowania elementów tablic tekstowych w chwili ich definiowania.

char tab [10]={'l','o','t'} -apostrofy; char tab[10]={"lot"} - cudzysłów ale tutaj na końcu zostanie dopisany znak

NULL;

13. Na czym polega różnica pomiędzy pojęciami deklaracja funkcji oraz definicja funkcji? Do czego one służą?

Deklaracja daje informację dla kompilatora, która obejmuje tylko określenie typu, nazwy funkcji oraz liczby i

typu jej argumentów formalnych.

Definicja funkcji określa typ, nazwę funkcji, liczbę i typy argumentów formalnych oraz treść realizowanego

algorytmu

docsity.com

14. W jakim przypadku w programie można pominąć deklarację funkcji?

Jeżeli definicja funkcji wystąpi przed jej wywołaniem to jej deklaracje można pominąć.

15. Czy deklaracje funkcji i definicje funkcji jeżeli jednocześnie występują w programie, mogą być zapisane w dowolnej kolejności, czy też obowiązują stosowne reguły? Jeżeli tak, opisz je?

Najpierw deklaracja potem definicja. Jeżeli definicja funkcji wystąpi przed jej wywołaniem to jej

deklaracje można pominąć. Nie jest to jednak zaleca. Deklarujemy wiec wszystkie funkcje. Pozwala to

uniknąć problemu pamiętania w jakiej kolejności funkcje są wywoływane i czy wywołana funkcja była

już wcześniej definiowana.

16. Jakie obowiązują zasady przy definiowaniu funkcji, która nie oddaje wartości, podaj przykład definicji takiej funkcji?

Przed nazwą funkcji słowo void funkcja nie może zwracać wartości czyli return 7; źle return; dobrze

17. W jakich sytuacjach definicja funkcji może zastąpić deklarację funkcji?

Jeżeli definicja funkcji wystąpi przed jej wywołaniem to jej deklaracje można pominąć.

18. Co to oznacza, że argumenty przesyłamy do funkcji przez wartość lub przez referencję (adres)? Czy ma to jakieś znaczenie w programie?

Przesłanie argumentów do funkcji przez referencję pozwala w treści tej funkcji modyfikowanie zmiennych

(nawet lokalnych) znajdujących się poza tą funkcją.

19. Jak przesyłamy tablice do funkcji (tablica jest argumentem wywoływanej funkcji)?

Przez referencję , wskaźnik, nazwę tablicy (bo stanowi adres jej zerowego elementu)

20. Co rozumiesz przez pojęcie funkcja rekurencyjna - podaj conajmniej dwa przykłady takich funkcji.

Funkcja jest rekurencyjna, gdy definicja funkcji zawiera ją samą np. silnia, ciąg Fibonacciego

21. Omów instrukcję postaci { warunkowej / pętli / przełącznika }. Podaj przykład.

Instrukcja warunkowa „if” 0=fałsz, 1=prawda np. if(wyrażenie)instrukcja1; lub if(wyrażenie)instrukcja1; else

instrukcja2;

Instrukcja pętli „while”. Oblicza się wartość obiektu wyrażenie i jeżeli ma ono wartość różną od 0, to wykonuje

się instrukcja

Instrukcja „switch” umożliwia wielokrotne sprawdzenie wyrażenia

Instrukcja for(int i; i<k; i++); do instrukcja 1 while (wyrażenie)

docsity.com

22. Wymień operacje wykonywane na plikach, co to jest deskryptor pliku?

Operacje na plikach

otwieranie pliku do zapisu funkcja open

otwieranie pliku do odczytu funkcja open

odczyt z pliku funkcja read

zapisywanie do pliku funkcja write

zamykanie plików funkcja close

23. Wymień zasadnicze etapy związane z budową biblioteki statycznej.

a) piszemy pliki w C++ zawierające funkcje b) tworzymy z tych plików pliki objektowe c) Stosujemy narzędzie „ar” do utworzenia biblioteki statycznej o określonej nazwie i rozszerzeniu „a” d) Tworzymy plik nagłówkowy do naszej biblioteki

24. Co to są identyfikatory PID i PPID procesu. Do czego one służą systemowi operacyjnemu?

PID identyfikator (własny) procesu (ang. Process IDentifier) to unikalny identyfikator procesu w

wielozadaniowych systemach operacyjnych (np. Unix, Microsoft Windows NT), wyrażony jako liczba całkowita

z określonego przedziału.Dzięki PID jest możliwe działanie na procesach przez użytkownika: na przykład pod

powłoką uniksową PID podaje się przy takich funkcjach jak wait() (zawieszenie) czy kill() (zabicie procesu).W

systamach uniksowych PID 0 to proces bezczynności systemu, a PID 1 to proces init, odpowiedzialny za

inicjalizację innych procesów. Wszystkie procesy są procesami potomnymi względem inita. Maksymalne PID w

systamach Uniksowych można ustalić odczytując je z pliku /proc/sys/kernel/pid_max (często wynosi 32768). Po

zakończeniu procesu PID jest zwalniane, nie jest jednak wykorzystywane aż do czasu kiedy nie jest to

bezwględnie potrzebne, to znaczy do czasu kiedy wykorzystywanie puli PID rozpocznie się od nowa.

PPID- identyfikator procesu macierzystego

(czyli PID nadrzędnego, inaczej wywołującego), Aby uzyskać aktualną wartość każdego z ww. identyfikatoró

w należy wywołać właściwą funkcję systemową,

PID -identyfikator (własny) procesu

PPID - identyfikator procesu macierzystego (czyli PID nadrzędnego, inaczej wywołującego),

GID - identyfikator grupy procesów

UID - identyfikator użytkownika procesu.

docsity.com

25. Rola systemu operacyjnego?

To program, który działa jako pośrednik między użytkownikiem komputera a sprzętem komputerowym.

26. Opisz istotne cechy architektury modelu klient-serwer.

klientem to proces (program) nawiązujący połączenie, serwerem to proces (program) czekający na połączenia.

Model Klient-Serwer umożliwia komunikację sieciową i jest to podstawowy model współpracy pomiędzy

oprogramowaniem sieciowym. Klient jest oprogramowaniem Klient jest oprogramowaniem, działającym

lokalnie na komputerze użytkownika i obejmującym jedną sesję.

Korzysta on z usług dostarczanych przez Serwer.

Uruchamiany jest bezpośrednio przez użytkownika. Potencjalnie może kontaktować się z wieloma serwerami,

ale w danej sesji komunikuje się tylko z jednym serwerem aktywnie.Aktywnie inicjuje kontakt z biernie

czekającym na zgłoszenie serwerem.Nie wymaga specjalnego sprzę tu ani wyrafinowanego systemu

operacyjnego.Klient inicjujący połączenie musi podać identyfikatory:

- serwera (adres IP oraz port)

- programu użytkowego działającego na komputerze serwera.

Identyfikatory klienta (IP i port) dostarczane są serwerowi podczas

inicjacji połączenia.

Po wymianie komunikatów i wymianie (przesłaniu) danych klient kończy transmisję, pamiętając o zamknięciu

gniazda. Oprogramowanie Serwer jest specjalizowanym , uprzywilejowanym programem, którego zadaniem jest

świadczenie konkretnej usługi. Jest uruchamiany automatycznie przy starcie systemu i działa kolejno przez wiele

sesji.Serwer nasłuchuje przyjścia komunikatu od klienta na określonym porcie.Numer portu to dowolna liczba

naturalna (int) z określonego zakresu. Jej wartość informuje nas o świadczonej przez serwer usłudze.

Serwer czeka biernie na zgłoszenie od dowolnego, połączonego medium transmisyjnym, klienta.Adres

identyfikujący serwer i port na którym świadczona jest usługa jest powszechnie znany dla potencjalnych

klientów.

Pamiętamy, że identyfikatory klienta są dostarczane są serwerowi podczas

inicjacji połączenia.

Żadania wobec serwera muszą być formułowane zrozumiale przez klienta z

użyciem odpowiedniego protokołu transportowego.

Oprogramowanie Serwer wymaga wydajnego sprzętu i na ogół "wyrafinowanego" systemu

operacyjnego.Serwery wyposażone są w dyski o ogromnej pojemności i szybką pamięć ęć RAM. Najczęściej

działają pod systemami operacyjnymi: LINUX, Solaris,

FreeBSD opartymi na architekturze UNIX.

docsity.com

27. Jakie funkcje pozwalają na powoływanie procesów potomnych?

Nowy proces, czyli potomny jest kopią procesu wywołującego, czyli procesu macierzystego.Funkcja fork(),

funkcja waitpid(),funkcje rodziny exec,funkcja kill(),

28. Do czego służy funkcja fork? Jaką istotną cechę posiada funkcja fork, która odróżnia ją od wszystkich innych funkcji?

Do powoływania procesów potomnych służy unikalna funkcja fork( )

Funkcja fork( ) tworzy nowy proces .Nowy proces, czyli potomny jest kopią procesu wywołującego, czyli

procesu macierzystego. Będzie on natomiast realizowany od miejsca w ktorym zostala wywolana funkcja

fork().Funkcja jest specyficzną funkcją w systemieoperacyjnym Unix/Linux powodującą, że pojedynczemu

programowi, któremu do jego wykonania przypisany jest pojedynczy proces w systemie operacyjnym,

przypisuje się dwa procesy poprzez rozwidlenie na:macierzysty ( zwany rodzic) i potomny (zwany dziecko) -

czyli tworzy się nowy proces zwany procesem potomnym (dziecko),

który jest dokładną kopią procesu macierzystego (rodzica) Wywołując funkcję fork, proces powoduje

utworzenie jego kopii, tak aby jeden proces mógł obsługiwać jedno zadanie, podczas gdy drugi proces będzie

wykonywać inne zadanie i obydwa pozostają w systemie. Jest to typowe zastosowanie funkcji fork w serwerach

sieciowych. Proces potomny ma za zadanie wykonać inny istniejący program w systemie. Ale ponieważ

jedynym sposobem utworzenia nowego procesu jest wywołanie funkcji fork, więc proces macierzysty najpierw

wywołuje tę funkcję, aby została utworzona jego kopia (potomek). Następnie jeden z dwóch procesów,

zazwyczaj potomek, wywołuje jedną z funkcji grupy exec i dzięki temu potomek zostaje zastąpiony

nowym programem, który jest pierwszym argumentem tej funkcji. Takie

zachowanie jest typowe np. dla programu shella.. Macierzysty pozostaje

29. Ile wartości, jakie i gdzie oddaje funkcja fork?

Służy ona do powoływania procesów potomnych. wywołanie fork( ) zwraca więc wartości:

-1 w procesie macierzystym, przy nieudanym powołaniu procesu potomnego, np. uruchomionych jest zbyt wiele

procesów,lub

0 w procesie potomnym przy jego udanym powołaniu,

PID procesu potomnego w procesie macierzystym przy udanym powołaniu

procesu potomnego

30. Co nam pozwala "zorientować się" w wykonywanym programie czy realizowany jest program macierzysty czy potomny?

Obserwując zapisy na konsoli (monitorze) możemy śledzić PID aktualnie wykonywanego procesu i w ten

sposób możemy łatwo stwierdzić, który proces jest aktualnie wykonywany (macierzysty czy potomny)

docsity.com

31. Co rozumiesz przez powiedzenie, że proces potomny jest dokładną kopią programu macierzystego.

Nowy proces, czyli potomny jest kopią procesu wywołującego, czyli procesu macierzystego. Będzie on

realizowany od miejsca w którym została wywołana funkcja fork( )

32. Do czego służy funkcja waitpid?

Jeżeli zależy nam aby proces potomny wykonał swoje zadanie i zakończył się wcześniej niż proces mcierzysty

możemy sprawić, aby proces macierzysty zaczekał na zakończenie pracy procesu potomnego, wywołując w

prociesie macierzystym funkcję wait( ) lub waitpid( )

33. Co to jest proces zombi, jakie są skutki pozostawania tych procesów w systemie?

O procesach, które pozostają w systemie, mimo iż formalnie się zakończyły i zwolniły zasoby systemu mówimy

„proces zombie” Oznacza to, że pozostał wpis w tablicy procesów opisujący program, którego wykonanie w

systemie operacyjnym zostało zakończone, ale którego zamknięcie nie zostało jeszcze obsłużone przez proces

macierzysty

34. Do czego służą funkcje rodziny exec?

Funkcje z rodziny exec (tj. execlp() i execvp() pobierają argumenty i tworzą proces, który zastępuje proces

aktualnie wykonywany (podstawia się on w jego miejsce)

35. Omów cechy protokołu połączeniowego TCP.

Przesyłane dane są bezpieczne, kontrolowane, jest zachowana kolejność pakietów, pakiety nie giną, pakiety

mogą być powtórnie wysłane, przy wystąpieniu błędu jesteśmy o tym poinformowani

36. Omów cechy protokołu bezpołączeniowego UDP.

Wysyłane pakiety mogą nie dotrzeć do odbiorcy, o błędach nie jesteśmy informowani, kolejność pakietów może

nie być zachowana, dane nie zawsze są kontrolowane, pakiety mogą zaginąć i nikt nie zareaguje, przesłanie

danych jest raczej wolne.

37. Jakie warunki komunikacji zapewniają gniazda datagramowe a jakie strumieniowe?

SOCK_STREAM – gniazda połączeniowe, strumieniowe oferują dwukierunkowe połączenie w postaci

uporządkowanego i niezawodnego strumienia bajtów. Mamy gwarancję, że przesyłane dane nie zostaną

zagubione, zduplikowane albo przemieszane. Duże komunikaty są fragmentowane i ponownie składane.

Działanie gniazd strumieniowych jest przewidywalne.

Gniazda datagramowe – bezpołączeniowe. Nie nawiązują one i nie podtrzymują połączenia. Istnieje limit

datagramu, który można przesłać przez sieć. Datagram jest transmitowany jako pojedynczy komunikat sieciowy,

który może zostać zagubiony, zduplikowany, bądź nadejść w niewłaściwej kolejności

docsity.com

38. Wymień i krótko scharakteryzuj typowe funkcje komunikacji sieciowej transmisji połączeniowej TCP, wywoływane po stronie serwera i klienta.

socket() tworzy tzw. bierne gniazdo oddając w wyniku deskryptor

bind() serwer nadaje gniazdu nazwę

listen() tworzy kolejkę, przeznaczoną dla nadchodzących połączeń

accept() tworzy nowe aktywne gniazdo (tzw. gniazdo połączone)

close() zamyka otwarte gniazda

connect()- usiłuje nawiązać połączeni z serwerm używając nazwanego gniazda

39. Postać i wartości adresu IP i numeru portu. Do czego one służą w programach K-S?

Adres IP w pętli zwrotnej to 127.0.0.1. Serwery oczekują na połączenia na konkretnych portach 21- FTP , 23-

Telnet, 25- SMTP, 53-DNS, 80- HTTP, 110 – POP3 (poczta)

40. Omów pojęcie gniazda strumieniowego. Co to jest deskryptor gniazda.

Deskryptor gniazda służy do identyfikowania gniazda i przeprowadzenia operacji na gnieździe.

41. Wymień znane Ci atrybuty gniazda. Jakie podstawowe operacje są wykonywane na gniazdach?

Gniazda charakteryzują się 3 atrybutami:

A) domeną, określającą środowisko sieciowe ( najpopularniejsza domena to AF_INET)

B) typem (np. połączeniowe, bezpołączeniowe)

C) protokołem

Gniazda posiadają również adres, który używany jest jako ich nazwa

42. Wymień i opisz kolejne pola zmiennej strukturalnej definiującej adres gniazda. Jakimi wartościami należy je wypełnić?

struct sockaddr_un

{ sa.family_t sun_family; //AF_UNIX

char sun_patch[ ]; //nazwa pliku ze ścieżką

docsity.com

43. Jaka funkcja (opisz jej argumenty) po stronie serwera tworzy tzw. gniazdo bierne i do czego ono służy?

Gniazdo bierne tworzy funkcja socket() jest to gniazdo nasłuchujące, które jest zasobem systemu operacyjnego

przypisanym do procesu serwera.

44. Jaka funkcja (opisz jej argumenty) po stronie serwera tworzy tzw. gniazdo aktywne i do czego ono służy?

funkcja accept() tworzy nowe aktywne gniazdo zwane gniazdem połączonym. Jest używane tylko do

komunikacji z danym klientem

45. Omów cykl przetwarzania poleceń po stronie klienta i serwera związanych z przygotowaniem i utrzymaniem komunikacji przez gniazda strumieniowe.

Funkcje (czynności ) wykonywane przez serwer:

A) aplikacja serwera używając funkcji systemowej socket( ) tworzy nienazwane bierne gniazdo tzw. ( gniazdo

nasłuchujące ang. listening socket), które jest po prostu zasobem systemu operacyjnego przypisanym do procesu

serwera. Po stworzeniu gniazda żaden inny proces na razie nie ma do niego dostępu.

B) za pomocą wywołania systemowego bind( ) serwer nadaje gniazdu nazwę. Lokalne gniazda otrzymują nazwę

pliku w systemie plików Uniksa, zazwyczaj zazwyczaj katalogu /tmp albo /user/tmp. W przypadku gniazd

sieciowych będzie to identyfikator usługi ( numer portu/ punkt dostępu) właściwy dla sieci z którą łączy się

klient.

C) proces serwera oczekuje na połączenie klienta z nazwanym gniazdem. Jeżeli z gniazdem chce się połączyć

jednocześnie wielu klientów, wówczas wywołanie systemowe listen( ) tworzy kolejkę, przeznaczoną dla

nadchodzących połączeń. Serwer może je zaakceptować przy użyciu funkcji systemowej akcept( ) .

D) wywołanie przez serwer funkcji systemowej akcept( ) tworzy nowe aktywne gniazdo zwane gniazdem

połączonym (ang. connected socket), nie zależnie od utworzonego(pkt a oraz b) Gniazdo to jest używane

wyłącznie do komunikacji z danym klientem.

Natomiast nazwane nasłuchujące gniazdo ( pkt. b ) oczekuje na dalsze połączenie z innymi klientami. Jeżeli

serwer jest odpowiednio napisany wówczas może obsługiwać wiele połączeń jednorazowo ( współbieżnie, tzn.

wielu klientów). W przypadku serwera iteracyjnego (zw. Także sekwencyjnym) pozostali klienci czekają w

kolejce utworzonej przez funkcję listen( ), aż serwer będzie ponownie gotowy do obsługi kolejnego klienta.

Funkcje (czynności ) wykonywane przez klienta:

A) aplikacja klienta używając funkcji systemowej socket( ) tworzy nie nazwane gniazdo,

B) za pomocą wywołania funkcji systemowej bind ( ) może ale nie musi nadać gniazdu nazwę

C) wywołując funkcje systemową connect ( ) „usiłuje nawiązać kontakt z serwerem, używając nazwanego

gniazda serwera jako adresu ( IP + port ). I jeżeli serwer był na tzw. „nasłuchu” kontakt zostaje nawiązany.

Po nawiązaniu połączenia, gniazda są używane w podobny sposób jak niskopoziomowe deskryptory plików,

zapewniając dwukierunkową komunikację np. przy użyciu funkcji write ( ) oraz read ( ).

docsity.com

46. Podaj sekwencję wywołań funkcji systemowych po stronie klienta i serwera związanych z przygotowaniem i utrzymaniem komunikacji przez gniazda strumieniowe.

47. Czy różni się serwer sekwencyjny(iteracyjny) od współbieżnego?

Tak różni się serwer iteracyjny używa się do prostych usług nie angażując klienta (np. podanie przez serwer

czasu dobowego, czyli nie wykorzystanie funkcji fork). Natomiast serwer współbieżny tworzy proces potomny

przy użyciu funkcji fork w celu wykonania usługi dla zgłaszającego się klienta.

docsity.com

komentarze (0)
Brak komentarzy
Bądź autorem pierwszego komentarza!
To jest jedynie podgląd.
Zobacz i pobierz cały dokument.