c na egzamin z programowania sem 3

background image

1.

Funkcja main()

Oznaczonym początkiem programu C++, który programista musi zdefiniować jest funkcja main(). W
standardowej postaci funkcja ta może nie przyjmować żadnych lub przyjmować dwa argumenty podawane przez
system operacyjny przy uruchomieniu programu. Typem zwracanym funkcji main() jest int,np.:

Int main()

Int main(int grac, char *argv[])

2.

Petla for

Pętla for jest podobna do pętli while, lecz zapewnione są dodatkowe mechanizmy umożliwiające inicjalizację
pętli oraz wykonanie odpowiednich modyfikacji po każdej iteracji. Na przykład

#pragma warning(disable:4786) //zapobiega ostrzeżeniom w Visual C++//

typedef map<int, string> IntStringMap

IntStringMap m;

char s[4]

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

{

s[0]=’a’+i; s[1]=’b’+i

s[2]=’c’+i; s[3]=’\0’;

m.insert(IntStringMap::value_type(i, string(s)));

}

Instrukcja znajdująca się przed pierwszym średnikiem wykonywana jest w celu inicjalizacji pętli. Przed każda
interacja, włączenie z pierwsza, wyznaczana jest wartość wyrażenia umieszczonego pomiędzy dwoma

ś

rednikami. Jeśli wartość wyrażenia równa jest true, wykonane zostaje ciało pętli, w przeciwnym razie pętla

kończy swoje wykonanie.

3.

Dyrektywy preprocesorowe

Każda dyrektywa zaczyna się od znaku # jako pierwszego znaku w wierszu, który nie jest znakiem odstępu.
Pojedyncza dyrektywę można zapisać wielu wierszach, wstawiając lewy ukośnik (\) na końcu wierszy
pośrednich.

a)

#define – powoduje zastąpienie danego identyfikatora tekstem, który został po nim określony, we
wszystkich miejscach występowania identyfikatora w pliku źródłowym.

Jeśli po identyfikatorze nie podamy żadnego tekstu, wówczas preprocesor zdefiniuje ten identyfikator w taki
sposób, aby każde sprawdzenie istnienia jego definicji dało w wyniku wartość true, a wszystkie wystąpienia
identyfikatora w kodzie źródłowym zostały zastąpione tekstem pustym (zostały usunięte)

b)

#undef – usuwa definicję identyfikatora tak, aby sprawdzenie jego istnienia dawało w wyniku wartość
false

c)

#ifdef, #ifndef, #else, # endif – stosowane są łącznie. Dyrektywa #ifdef powoduje dołączenie przez
preprocesor innego kodu w zależności od istnienia lub braku definicji danego identyfikatora. Użycie
dyrektywy #else jest opcjonalne. Dyrektywa #ifndef działa podobnie, lecz powoduje dołączenie
występującego po niej kodu tylko wtedy, gdy brakuje definicji danego identyfikatora.

d)

#if, #elif, #else, #endif – stosowane są łącznie. Powodują one dołączenie lub wykluczenie przez
preprocesor kodu w zależności od prawdziwości danego wyrażenia. Dyrektywa #elif służy do
łańcuchowego łączenia szeregu testów.

e)

#include – powoduje dołączenie przez preprocesor innego pliku, zazwyczaj pliku nagłówkowego.
Nazwy standardowych plików nagłówkowych ujmujemy w nawiasy ostre, a plików nagłówkowych
zdefiniowanych przez użytkownika w znaki cudzysłowiu.

f)

#error – powoduje przerwanie kompilacji i wyświetlenie określonego tekstu

g)

#line – dyrektywa, która sprawia, że preprocesor modyfikuje bieżący numer wiersza zapisywany
wewnętrznie przez kompilator podczas kompilacji w makrodefinicji _LINE_

h)

#pragma – umożliwia sterowanie operacjami przez podanie dyrektywy wraz z dowolnymi parametrami
w postaci wymaganej przez tę dyrektywę.

background image

4.

Pętla wyboru(instrukcje wyboru) – powodują wykonanie różnych instrukcji lub bloku w zależności
od wyniku zwróconego przez wyrażenie. Występują dwa typy instrukcji wyboru:
a) if – oblicza wartość wyrażenia i wykorzystuje wynik do ustalenia, którą z maksymalnie dwóch
instrukcji lub bloków następnie wykonać.

5. Instrukcja warunkowa - są to instrukcje, które wykonują się tylko wtedy gdy spełniony
jest podany warunek. Dzięki instrukcjom warunkowych program może "zachowywać" się
zależnie od spełnienia pewnych warunków.

a) if…else - Podstawowa instrukcja warunkowa wygląda następująco:
if( <warunek> )
{//blok1
...
}
else
{//blok2
...
}

Jeżeli spełniony jest warunek to wykonane zostaną instrukcje zawarte w bloku 1, a gdy warunek nie jest
spełniony to wykonane zostaną instrukcje z bloku 2.

6. Instrukcja:
a) switch (instrukcja wyboru) –
wybiera do wykonania jeden z kilku bloków kodu na podstawie wartości
wyrażenia sterującego, np.:
switch (type)
{
Case keyDown:
//operacje do wykonania w przypadku naciśnięcia klawisza
….
Break;
Case keyUp:
//operacje do wykonania w przypadku zwolnienia klawisza
….
Break;
….
Default: //obsługa tego, nie zostało obsłużone
….
}
Każdy blok jest oznaczony słowem case, po którym występuje wyrażenie, które podczas kompilacji sprowadzać
się musi do jednoznacznej stałej wartości całkowitej. Podczas wykonywania sterowanie przekazywane jest do
bloku o wartości zgodnej z wartością wyrażenia sterującego i do tego miejsca kontynuowane jest wykonywanie
programu. Na końcu każdego bloku case jest instrukcja break w celu zapobieżenia wykonania kodu związanego
z kolejnymi klauzulami case. Opcjonalna klauzula default umożliwia obsługę sytuacji, w której wartość
wyrażenia sterującego nie odpowiada żadnej klauzuli case.

b) break (instrukcja skoku) – umożliwia opuszczenie najbardziej wewnętrznej pętli lub
instrukcji switch
c) continue (instrukcja skoku) – powoduje przekazanie sterowania na początek najbardziej

wewnętrznej pętli

d) Goto (instrukcja skoku) – powoduje przekazanie sterowania do określonej etykiety

7. Funkcja – funkcje w c++ mogą pobierać pewne argumenty i zwracać określony typ wartości.

Funkcję deklarujemy w następujący sposób:

<typ_zwracanej_wartości> nazwa_funkcji( <argumenty_funkcji> );


a) deklaracje funkcji – składają się z następujących elementów: typu zwracanego, nazwy oraz ujętej w nawiasy
zwykłe listy parametrów rozdzielonych przecinkami lub, w przypadku braku parametrów, pustej pary nawiasów
zwykłych. Nazwy parametrów nie są wymagane, lecz stanowią dobrą dokumentacje kodu.
b) odwołania się do funkcji -
c) funkcja rekrutacyjna –

background image


8. Deklaracje
a) Deklaracje stałych –
b) deklaracje zmiennych –
deklaracje dotyczące zmiennych wprowadzają nazwy odnoszące się do danych.
Zawierają one: opcjonalną klasę pamięci, opcjonalne kwalifikatory, typy oraz listę jednej lub kilku
deklarowanych nazw rozdzielonych przecinkami, np.:
int i,j,k;
char buffer[80];
deklaracje zmiennych mogą wystąpić w dowolnym miejscu wewnątrz bloku, nie tylko na początku.

Typy zmiennych:

int

liczba całkowita (dodatnia lub ujemna)

float

liczba rzeczywista (z częścią ułamkową)

bool

wartość logiczna (prawda lub fałsz)

char

pojedynczy znak

std::string

łańcuch znaków (tekst)


9. Tablice – zawierają określoną liczbę elementów danego typu. Aby podczas kompilacji programu kompilator
mógł zarezerwować wymagana ilość pamięci, w definicji tablicy trzeba określić typ oraz liczbę elementów,
które będzie on zawierać. Kompilator musi mieć możliwość ustalenia tej wartości podczas kompilacji programu.
Tablice wielowymiarowe – są to tablice zdefiniowane przy użyciu więcej niż jednego indeksu.

10. Instrukcje wejścia/wyjścia

11. Wskaźniki –
deklaruje się je przez umieszczenie w deklaracji przed nazwą zmiennej znaku gwiazdki (*),
np.:
Int 1=20;
Int *itr=&i;
Zmienna i jest typu int, natomiast *iptr jest wskaźnikiem do zmiennej.

a)

Wskaźniki typu void – mogą wskazywać dane dowolnego typu.

b)

Wskaźniki puste – można im przypisać wartość 0. Na tym wskaźniku nigdy nie wolno wykonywać

definicji.

c)

Wskaźniki funkcji – wskazuje funkcje. Jego typ jest związany z sygnaturą wskazywanej przez niego

funkcji.

12. Klasy – są typami grupującymi dane i funkcje w zhermetyzowane, spójne jednostki. Definiuje się je,
deklarując dla nich zestaw danych i funkcji składowych

13. Konstruktor i destruktor
a) konstruktor
są specjalnymi funkcjami składowymi służącymi do inicjalizacji egzemplarzy klasy.
Umożliwiają one przeprowadzenie inicjalizacji zanim obiekt zostanie w ogóle użyty. Konstruktory wywoływane
są przy każdej alokacji pamięci dla obiektu, automatycznie przez kompilator, czy tez na skutek zastosowania
operatorów new lub new[]. Konstruktory posiadają taką samą nazwę, co klasa i nigdy nie zwracają wartości.

Konstruktory domyślne

Konstruktory kopiujące

Konstruktory jawne

background image

b) destruktor – są specjalnymi funkcjami składowymi wywoływanymi w momencie, gdy egzemplarz klasy ma
właśnie zostać zniszczony. Umożliwiają one przeprowadzenia czyszczenia zanim obiekt przestanie istnieć.
Destruktory wywoływane są bezpośrednio przed opuszczeniem zakresu przez obiekt oraz w przypadku jawnego
niszczenia obiektów za pośrednictwem wskaźnika do nich przy użyciu operatora delete lub delete[]. Destruktory
posiadają taka samą nazwę, co klasa, lecz poprzedzoną znakiem tyldy (~). Nie przyjmują żadnych argumentów i
nie zwracają wartości.



14.Słowa kluczowe, komentarze, operatory
a) słowa kluczowe -
Słowa kluczowe to słowa które mają zastrzeżoną nazwę oraz specjalne znaczenie w danym
języku programowania.

Wykaz słów kluczowych języka c++ wraz z krótkim opisem:

asm

Wstawianie kodu w asemblerze

auto

Klasa zmiennej lokalnej

bool

Typ zmiennej

break Przerywa wykonywanie pętli (for, while) oraz instr. switch
case

Wskazuje na warunek insturkcji switch

catch

Wyłapuje wyjątek

char

Typ zmiennej

class

Deklaracje klas

const

Klasa zmiennych, deklaracja stałych funkcji

continue

Wykonanie kolejnej iteracji pętli

default Wskazuje na dowolny warunek insturkcji switch
delete Zwalnianie pamięci przydzielonej dynamicznie
do

Tworzenie pętli do-while

double Typ zmiennej
else

Alternatywa dla instr. if, gdy warunek nie jest spełniony

enum

Typ zmiennej

extern Klasa zmiennej
float

Typ zmiennej

for

Pętla

friend Wskazuje zaprzyjaźnioną klasę lub funkcję
goto

Skok bezwarunkowy

if

Instrukcja warunkowa

inline

Wstawia kod funkcji w miejscu jej wywołania

int

Typ zmiennej

long

Kwalifikator zmiennej

namespace

Przestrzeń nazw

new

Przydziela pamięć dynamicznie

operator

Przeciążanie operatorów

private Stopień ochrony danych w klasie
protected

Stopień ochrony danych w klasie

public Stopień ochrony danych w klasie
register Klasa zmiennej
return Zwracanie wartości przez funkcje
short

Kwalifikator zmiennej

signed Kwalifikator zmiennej
sizeof

Zwraca rozmiar obiektu (typu) w bajtach

static

Klasa zmiennej, funkcje statyczne

struct Deklaracja struktur
switch Rodzaj instrukcji warunkowej
template

Tworzenie wzorców

this

Wskaźnik dla klas

throw Rzucanie wyjątkiem
try

Przechwytywanie wyjątków

typedef Tworzenia nowego typu danych
union Deklaracja do definiowania unii
unsigned

Kwalifikator zmiennej

using

Wybór przestrzeni nazw

background image

virtual Deklarowanie metod wirtualnych klasy
void

Typ zmiennej

volatile Klasa zmiennej
wchar_t Typ zmiennej
while

Rodzaj pętli


b) komentarze
c) operatory –
służy do wykonania określonej operacji na zbiorze operandów występujących w wyrażeniu..
Operatory w języku C++ , w zależności od operatora, wykonują działania na jednym, dwóch lub trzech
operandach. Mogą one być łączone lewostronnie lub prawostronnie. Operatory przypisania(=,+=,<<=, itd.) na
przykład SA łączne prawostronnie,a zatem wyrażenie: i=j=k określa faktycznie operację: i=(j=k)
z drugiej strony operator przypisania (+) jest lewostronnie łączny, a więc wyrażenie: i+j+k określa faktycznie
operację: (i+j)+k


Operator

Opis

Łączność

::

Rozróżnianie zakresu

Brak

[]

Indeks tablicy

Lewostronna

.

Wybór składowej

Lewostronna

->

Wybór składowej

Lewostronna

( )

Wywołanie funkcji

Lewostronna

( )

Konstrukcja wartości

Brak

++

Inkremenatcja przyrostkowa

Brak

--

Dekrementacja przyrostkowa

Brak

Typeid

Informacja o typie

Brak

*_cast

Rzutowanie w stylu języka C++

Brak

Sizeof

Inf. o rozmiarze

Brak

++

Inkrementacja przedrostkowa

Brak

--

Dekrementacja przedrostkowa

Brak

~

Negacja bitowa (NOT)

Brak

!

Negacja logiczna (NOT)

Brak

-

Jednoargumentowy znak minusa

Brak

+

Jednoargumentowy znak plusa

Brak

&

Pobranie adresu

Brak

*

Adresowanie pośrednie

Brak

New

Przydział pamięci

Brak

New[]

Przydział pamięci

Brak

Delete

Zwolnienie pamięci

Brak

Delete[]

Zwolnienie pamięci

Brak

( )

Rzutowanie w stylu języka C++

Prawostronna

.*

Wy bór wskaźnika do składowej

Lewostronna

->*

Wy bór wskaźnika do składowej

Lewostronna

*

Mnożenie

Lewostronna

/

Dzielenie

Lewostronna

%

Reszta z dzielenia

Lewostronna

+

Dodawanie

Lewostronna

-

Odejmowanie

Lewostronna

<<

Przesunięcie bitowe w lewo

Lewostronna

>>

Przesunięcie bitowe w prawo

Lewostronna

<

Mniejsze niż

Lewostronna

<=

Mniejsze lub równe

Lewostronna

>

Większe niż

Lewostronna

>=

Większe lub równe

Lewostronna

==

Równe

Lewostronna

!=

Różne

Lewostronna

&

Koniunkcja bitowa (AND)

Lewostronna

^

Różnica symetryczna (XOR)

Lewostronna

|

Alternatywa bitowa (OR)

Lewostronna

&&

Iloczyn logiczny (AND)

Lewostronna

background image

||

Suma logiczna (OR)

Lewostronna

?:

Wyrażenie warunkowe

Prawostronna

=

Przypisanie proste

Prawostronna

*=

Przypisanie wyniku mnożenia

Prawostronna

/=

Przypisanie wyniku dzielenia

Prawostronna

%=

Przypisanie reszty z dzielenia

Prawostronna

+=

Przypisanie wyniku dodawania

Prawostronna

-=

Przypisanie wyniku odejmowania

Prawostronna

<<=

Przypisanie wyniku przesunięcia w lewo

Prawostronna

>>=

Przypisanie wyniku przesunięcia w prawo

Prawostronna

&=

Przypisanie wyniku bitowego AND

Prawostronna

^=

Przypisanie wyniku bitowego XOR

Prawostronna

|=

Przypisanie wyniku bitowego OR

Prawostronna

Throw

Zgłoszenie wyjątku

Prawostronna

,

Sekwencja

Lewostronna


15. Struktura programu
Na najwyższym poziomie program w języku C++ składa się z jednego lub wielu plików źródłowych
zawierających kod źródłowy C++. We wszystkich tych plikach łącznie zdefiniowane jest dokładnie jedno
miejsce rozpoczęcia wykonania programu i być może wiele miejsc jego zakończenia.
W plikach źródłowych C++ często importowany jest, czyli dołączany, dodatkowy kod źródłowy znajdujący się
w tzw. plikach nagłówkowych. Za dołączenie kodu z tych plików przed kompilacją każdego pliku źródłowego
odpowiedzialny jest preprocesor języka C++. Jednocześnie preprocesor, poprzez zastosowanie tzw. dyrektyw
preprocesora, może wykonać także inne operacje. Plik źródłowy po przetworzeniu przez preprocesor zwany jest
jednostką translacji.

16. Algorytm - opis rozwiązywania problemu (zadania) wyrażony za pomocą takich operacji, które wykonawca
algorytmu rozumie i potrafi wykonać.
Jako przykład posłuży algorytm wyznaczania wartości całkowitej pierwiastka kwadratowego z danej liczby
naturalnej n, czyli algorytmicznego obliczania wartości funkcji (sqrt(n)), gdzie n jest liczbą naturalną. Algorytm
ten jest oparty na bardzo prostym pomyśle. Bierzemy liczbę naturalną i, a następnie sprawdzamy czy (i+1)²>n;
Jeśli warunek ten nie jest spełniony, to bierzemy kolejną liczbę naturalną i dla niej sprawdzamy warunek. Jeżeli
warunek jest spełniony, to i jest szukaną wartością funkcji E(sqrt(n)). Przyjmuje się, że wykonawca tego
algorytmu potrafi dodawać, podnosić do kwadratu i porównywać dwie liczby naturalne.


Wyszukiwarka

Podobne podstrony:
Zagadnienia na egzamin WPS 1 sem, Praca Socjalna, I rok, I semestr, WPS
pytania na egzamin - ekonomika sem.II (1), Pomoce naukowe=D, administracja
Pytania na egzamin - BPZ, I sem
pytania na egzamin, eeeeeeeeh, Sem 2, Bot systematyczna
filozofia pyt na egzamin, WOiO, sem I, filozofia
pytania na egzamin (2), Zarządzanie, sem VI marketing, Zarządzanie ryzykiem, Zarządzanie ryzykiem W
pytania na egzamin (1), Zarządzanie, sem VI marketing, Zarządzanie ryzykiem, Zarządzanie ryzykiem W
FIZJOLOGIA ROŚLIN - opracowane pytania na egzamin, biotechnologia 2 sem rok2, pobrane z góry DS 7, z
pytania na egzamin (3), Zarządzanie, sem VI marketing, Zarządzanie ryzykiem, Zarządzanie ryzykiem W
pytania na egzamin(1), eeeeeeeeh, Sem 2, Bot systematyczna
Pytania na egzamin-I, Matematyka sem I, 1 sem
Notatka na egzamin z Programowania obiektowego
Pytania na egzamin nowa podstawa programowa, sem I
program zajęc aud I sem 10-11, Szkoła, penek, Przedmioty, Nawigacja, Teoria, Materiały do nauki na I
Pytania na egzamin nowa podstawa programowa, sem I
ZAGADNIENIA NA EGZAMIN Z MECHANIKI TECHNICZNEJ II DLA SEMESTRU III, sem III, +Mechanika Techniczna I

więcej podobnych podstron