Informatyka 13 03 2012


OPERATORY
" Operatory, działające tylko na jeden operand, nazywa się jednoargumentowymi (unarnymi). Przykładem może być
wyrażenie -wyr.
" Operatory dwuargumentowe nazywa się binarnymi; ich argumenty określa się jako operand lewy i operand prawy.
" Niektóre operatory reprezentują zarówno operacje jednoargumentowe, jak i dwuargumentowe; np. operator  - (minus),
który wystąpił w wyrażeniu -wyr, w innym wyrażeniu, np.
 Zmienna1-zmienna2 reprezentuje operator odejmowania.
" Język C++ oferuje ogromne bogactwo operatorów, zarówno dla argumentów typów podstawowych, jak i typów
pochodnych. Jest to jedna z przyczyn, dla której język ten jest tak popularny.
" Operatory arytmetyczne służą do tworzenia wyrażeń arytmetycznych. W języku C++ przyjęto jako normę stosowanie
tzw. arytmetyki mieszanej, w której wartość argumentu operatora jest automatycznie przekształcana przez kompilator do
typu, podanego w deklaracji tego argumentu. W związku z tym nie przewidziano oddzielnych operatorów dla typów
całkowitych i typów zmiennopozycyjnych, za wyjątkiem operatora %, stosowalnego jedynie dla typów short int, int i
long int.
Symbol Funkcja Zastosowanie
operatora
+ dodawanie wyrażenie + wyrażenie
- odejmowanie wyrażenie - wyrażenie
* mnożenie wyrażenie * wyrażenie
/ dzielenie wyrażenie / wyrażenie
% operator reszty z dzielenia wyrażenie % wyrażenie
" Wszystkie operatory za wyjątkiem operatora % można stosować zarówno do argumentów całkowitych, jak i
zmiennopozycyjnych. Operatory + i - można również stosować jako operatory jednoargumentowe. Jeżeli przy dzieleniu
liczb całkowitych iloraz zawiera część ułamkową, to jest ona odrzucana; np. wynik dzielenia 18/6 i 18/5 jest w obu
Ćwiczenia 2 1
przypadkach równy 3. Operator reszty z dzielenia (%) można stosować tylko do argumentów całkowitych; np. 18 % 6
daje wynik 0, a 18 % 5 daje wynik 3.
" W pewnych przypadkach wartościowanie wyrażenia arytmetycznego daje wynik niepoprawny lub nieokreślony. Są to
tzw. wyjątki. Mogą one być spowodowane niedopuszczalnymi operacjami matematycznymi (np. dzieleniem przez zero),
lub też mogą wynikać z ograniczeń sprzętowych (np. nadmiar przy próbie reprezentacji zbyt dużej liczby). W takich
sytuacjach stosuje się własne, lub predefiniowane metody obsługi wyjątków.
" Wszystkie operatory relacji są dwuargumentowe. Jeżeli relacja jest prawdziwa, to jej wartością jest 1; w przypadku
przeciwnym wartością relacji jest 0.
Symbol Funkcja Zastosowanie
operatora
< mniejszy wyrażenie < wyrażenie
<= mniejszy lub równy wyrażenie <= wyrażenie
> większy wyrażenie > wyrażenie
>= większy lub równy wyrażenie >= wyrażenie
== równy wyrażenie == wyrażenie
!= nierówny wyrażenie != wyrażenie
" Wyrażenia połączone dwuargumentowymi operatorami logicznymi koniunkcji i alternatywy są zawsze wartościowane
od strony lewej do prawej. Dla operatora && otrzymujemy wartość 1 (prawda) wtedy i tylko wtedy, gdy wartościowanie
obydwu operandów daje 1. Dla operatora || otrzymujemy wartość 1, gdy co najmniej jeden z operandów ma wartość 1.
Ćwiczenia 2 2
Symbol Funkcja Składnia
operatora
! negacja !wyrażenie
&& koniunkcja wyrażenie && wyrażenie
|| alternatywa wyrażenie || wyrażenie
" Rozmiary dowolnego obiektu (stałej, zmiennej, etc.) języka C++ wyraża się wielokrotnością rozmiaru typu char; zatem,
z definicji
" sizeof(char) == 1
" Operator sizeof jest jednoargumentowy. Składnia języka przewiduje dwie postacie wyrażeń z operatorem sizeof:
" sizeof(nazwa-typu)
" sizeof wyrażenie
" Dla podstawowych typów danych obowiązują następujące relacje:
 1 == sizeof(char) <= sizeof(short int) <= sizeof(int) <= sizeof(long int)
 sizeof(float) <= sizeof(double) <= sizeof(long double)
 sizeof(I) == sizeof(signed I) == sizeof(unsigned I)
" gdzie I może być char, short int, int, lub long int.
" Jedyny operator trójargumentowy w języku C++. Wyrażenie warunkowe, utworzone przez zastosowanie operatora
"?:" ma postać:
 wyrażenie1 ? wyrażenie2 : wyrażenie3
" Wartość tak utworzonego wyrażenia jest obliczana następująco:
 Najpierw wartościowane jest wyrażenie1.
 Jeżeli jest to wartość niezerowa (prawda), to wartościowane jest wyrażenie2 i wynikiem obliczeń jest jego wartość.
 Przy zerowej wartości (fałsz) wyrażenia wyrażenie1 wynikiem obliczeń będzie wartość wyrażenia wyrażenie3.
" W języku C++ istnieją operatory, służące do zwięzłego zapisu zwiększania o 1 (++) i zmniejszania o 1 (--) wartości
zmiennej. Zamiast zapisu
Ćwiczenia 2 3
 n=n+1 (lub n+=1)
 n=n-1 (lub n-=1)
" piszemy krótko
 ++n, n++
 --n, n--
" przy czym nie jest obojętne, czy dwuznakowy operator  ++ lub  -- zapiszemy przed, bądz za nazwą zmiennej. Notacja
przedrostkowa (++n) oznacza, że wyrażenie ++n zwiększa n zanim wartość n zostanie użyta, natomiast n++ zwiększa n
po użyciu dotychczasowej wartości n. Tak więc wyrażenia ++n oraz n++ (i odpowiednio --n oraz n--) są różne.
#include
#pragma hdrstop
#include
#include
#pragma argsused
int main()
{
int i,j = 5;
i = j++ ; // przypisz 5 do i, po czym przypisz 6 do j
cout <<"i="<< i <<", j="<< j << endl;
i = ++j; // przypisz 7 do j, po czym przypisz 7 do i
cout << "Teraz i="<< i <<", j="<< j << endl;
// j++ = i; zle! j++ nie jest identyfikatorem zmiennej a wyrażeniem
getch();
return 0;
}
" Operator przecinkowy ',' pozwala utworzyć wyrażenie, składające się z ciągu wyrażeń składowych, rozdzielonych
przecinkami. Wartością takiego wyrażenia jest wartość ostatniego z prawej elementu ciągu, zaś wartościowanie przebiega
od elementu skrajnego lewego do skrajnego prawego.
" Przykładem wyrażenia z operatorem przecinkowym może być:
 num++, num + 10
Ćwiczenia 2 4
" Wartościowanie powyższego wyrażenia z operatorem przecinkowym przebiega w następujący sposób (od lewej do
prawej):
-Najpierw jest wartościowane wyrażenie num++, w wyniku czego zostaje zmieniona zawartość komórki pamięci o
nazwie num (efekt uboczny).
-Następnie jest wartościowane wyrażenie num + 10 i ta wartość jest wartością końcową.
int main()
{
double x, y, z;
z = (x = 2.5, y = 3.5, y++);
cout<<"z="< getch();
return 0;
}
Wynik:
" Komentarz: wynikiem wartościowania wyrażenia z dwoma operatorami przecinkowymi będą wartości: x==2.5, y==4.5
oraz z==3.5 (wartość z nie będzie równa 4.5, ponieważ do y przyłożono przyrostkowy operator '++').
TYP ZMIENNEJ fstream
Zanim zaczniemy odczytywać, bądz zapisywać dane z/do pliku, musimy posiadać zmienną, dzięki której będziemy mogli
wykonywać operacje na wybranym pliku. W tym celu utworzona została klasa fstream. Klasa ta jest umieszczona w
przestrzeni nazw std::. Klasa ta udostępnia nam cały interfejs, dzięki któremu będziemy mogli obsłużyć dowolny plik
znajdujący się na dysku lub innym nośniku danych.
std::fstream plik;
OTWIERANIE PLIKU
void open( const char * nazwa_pliku, ios_base::openmode tryb_otwarcia_pliku );
Pierwszy parametr funkcji (nazwa_pliku) określa ścieżkę dostępu i nazwę pliku do jakiego chcemy uzyskać dostęp.
Drugi parametr funkcji, czyli tryb_otwarcia_pliku służy do poinformowania kompilatora w jakim trybie dany plik
chcemy otworzyć. Lista dostępnych trybów wraz z opisami w poniższej tabeli.
Ćwiczenia 2 5
Tryb Opis trybu
([b]app[/b]end - dopisywanie danych do pliku) Ustawia wewnętrzny wskaznik zapisu pliku na jego koniec.
ios::app
Plik otwarty w trybie tylko do zapisu. Dane mogą być zapisywane tylko i wyłącznie na końcu pliku.
ios::ate ([b]at [/b]end) Ustawia wewnętrzny wskaznik pliku na jego koniec w chwili otwarcia pliku.
ios::binary ([b]binary[/b]) Informacja dla kompilatora, aby dane były traktowane jako strumień danych binarnych, a nie
jako strumień danych tekstowych.
ios::in ([b]in[/b]put - wejście/odczyt) Zezwolenie na odczytywanie danych z pliku.
ios::out ([b]out[/b]put - wyjście/zapis) Zezwolenie na zapisywanie danych do pliku.
ios::trunc ([b]trunc[/b]ate) Zawartość pliku jest tracona, plik jest obcinany do 0 bajtów podczas otwierania.
Wszystkie wymienione tryby możemy łączyć ze sobą - oznacza to, że jeśli chcemy otrzymać plik do odczytu i zapisu
wystarczy oddzielić je pojedynczym operatorem |.
std::fstream plik;
plik.open( "nazwa_pliku.txt", std::ios::in | std::ios::out );
Ćwiczenia 2 6
Zadanie 2.2
Napisz program, który spowoduje, iż zapisany do pliku tekstowego o nazwie zadanie zostanie komunikat  Uczymy się
programowac:-)
Zadanie 2.3
Napisać program, w wyniku którego dwie wczytane z klawiatury liczby zostaną najpierw wydrukowane na ekranie, a
następnie dodane, przy czym wynik dodawania również powinien wyświetlić się na ekranie.
Zadanie 2.4
Napisać program, w wyniku którego dwie wczytane z klawiatury liczby rzeczywiste zostaną wydrukowane na ekranie, a
następnie obliczyć ich iloczyn, przy czym wynik również powinien wyświetlić się na ekranie.
Zadanie 2.5
Korzystając z danych NBP przeliczyć wg. bieżącego kursu, wczytaną z klawiatury kwotę w złotówkach na: euro, CHF,
funta, USD, tak aby wyniki zostały zapisane na ekranie, jak również do pliku tekstowego o nazwie waluty.
Zadanie 2.6
Dokonać zamiana stopni na radiany i odwrotnie
Ćwiczenia 2 7


Wyszukiwarka

Podobne podstrony:
Informatyka 20 03 2012
Informatyka 06 03 2012
Technologia Informacyjna ( 13 10, 27 10, 03 11 2010)
Przyklad 03 2012 12 01
STOMATOLOGIA DZIECIĘCA, ĆWICZENIE 5, 13 12 2012
sieci lab 13 03 08
Informatyka 15 05 2012
548 03 2012 NORD 100
KPC Wykład (7) 13 11 2012
Centralne Laboratorium Kryminalistyczne Policji Wykaz zatwierdzonych specyfikacji 13 03 25
13 03
Cennik TelefonĂłw w Ofercie Biznes od 20 03 2012
t informatyk12[01] 03 101
4) 25 03 2012
Wykład 3 (13 03 2009) montaż

więcej podobnych podstron