Politechnika Poznańska
Wydział Fizyki Technicznej
Fizyka komputerowa
Wstęp do programowania w C++
Wojciech Malinowski
Instytut Fizyki Molekularnej PAN
Poznań 2005/2006
1
Cel wykładów:
" Wprowadzenie do ćwiczeń laboratoryjnych
" Przygotowanie do nauki programowania w C++
" Prezentacja wybranych narzędzi i metod
programowania w środowisku Borland Builder
2
Podręczniki
Dowolny podręcznik do języka C++
oraz podręcznik dot. środowiska programowania Borlanda
np.
Herbert Schildt
Informator o języku programowania Borland C++
wydawnictwo NAKOM, Poznań 2000
seria Biblioteka Użytkownika Mikrokomputerów tom 38
3
Proces tworzenia programu
Pomysł !!!
wybór metody rozwiązania
wybór algorytmu
wybór języka programowania
wybór maszyny i środowiska SO
schemat działania programy
KODOWANIE
uruchamianie
4
Proces tworzenia programu
Kompilacja
Aączenie
Kod Kod Kod
zródłowy obiektowy binarny
pliki zródłowe
biblioteki
włączane
5
START
Uruchamianie programu
Edycja pliku (plików)
kodu zródłowego
Kompilacja
Tak
Błędy?
Aączenie
Tak
Błędy?
Błędy na każdym z etapów
tworzenia programu zawsze
Uruchomienie
prowadzą do konieczności
Tak
poprawiania kodu zródłowego !
Błędy?
KONIEC
6
Droga do C++
Martin Richards BPCL
Univ. Math. Lab. Cambridge
Ken Thompson 1970 B PDP-7
Dennis M. Ritchie 1972 C UNIX PDP-11
Bell Laboratories
1983 > 1989 C ANSI tylko 32 słowa kluczowe !
Bjarne Stroustrup 1979 -1983 C++ (nazwę ++ nadał Rick Mascitti)
Brian Kernighan
Bell Laboratories
modyfikacje 1985, 1989
proponowany standard ANSI 1994
koncepcja klas i funkcji wirtualnych z języka Simula67,
koncepcja przeciążania operatorów z Algol68.
7
Elementy języka C++
Program składa się z funkcji.
W każdym programie musi być funkcja główna o
nazwie
main( ) { instrukcje }
Zazwyczaj daje ona w wyniku działania liczbę
całkowitą.
Na zapis instrukcji składają się:
" słowa kluczowe,
" operatory,
" stałe,
" nazwy zdefiniowane (zmienne, stałe, funkcje)
8
Prosta funkcja main()
#include
int main()
{
// tu się zaczyna ciało funkcji
float x ;
cin >> x ;
x = x+7;
cout << x wynosi teraz << x ;
/* i tak wygląda
nasz krótki program */
}
9
Zmienne
pamięć
obszar pamięci programu,
0
w nim kod
1
i wydzielony obszar stosu, a na stosie
zmienne lokalne
.
.
.
.
Poza obszarem programu
obszar sterty (heap), tj.
dynamicznie pobierana pamięć
10
Obszar programu i wolna pamięć
Słowa kluczowe
C ++:
auto break case catch char class const
continue default delete do double else enum
extern float for friend goto if int long
mutable new operator private protected public
register return short signed sizeof static struct switch
template this throw typedef union unsigned virtual
void volatile while
rozszerzenia:
asm bool const_cast dynamic_cast explicit false inline
namespace true reinterrupt_cast __rtti static_cast
try typeid typename using wchar_t
pascal, far, near, huge, interrupt, _cs, _ds, _es, _ss, _export
11
formaty danych (INTEL)
Standard IEEE 754 i 854
liczby binarne całkowite 8- , 16- i 32-bitowe,
liczby binarne zmiennoprzecinkowe 32-, 64- i 80-bitowe,
liczby dziesiętne (spakowane) 18-cyfrowe, kod BCD
łańcuchy bajty, słowa, słowa podwójne
pojedyncze bity
1 8 23
1 11 52
1 15 1 63
12
Typy zmiennych
typ długość zakres wartości
int
unsigned short int 2 bajty 0 do 65 535
short int 2 bajty -32 768 do 32 767
unsigned long int 4 bajty 0 do 4 294 967 295
long int ( a" int ) 4 bajty -2 147 483 648 do
2 147 483 647
char 1 bajt 0 do 255
float 4 bajty 1.2e-38 do 3,4e38
double 8 bajtów 2.2e-308 do 1.8e308
long double 10 bajtów 3.4 e-4932 1,1 e+4932
modyfikatory: signed unsigned long short
13
Deklarowanie zmiennych
int i;
int j, k, Irena, iRena, szeLest;
double KupaHuku = 4.789;
char znak, liter = a ;
/* ale nie
char to_tekst = Litwo, Ojczyzno moja ; */
float x,
y, z; // to dalszy ciag linii
14
Stałe, deklarowanie
liczbowe
x = 3.1415826;
int StopaProcentowa = 15;
symboliczne
#define zakres 15
const unsigned short int wiek = 75; //Requiescat ...
15
Stałe, deklarowanie cd.
char to_tekst[ ]= "Litwo, Ojczyzno moja ...";
char * i_ to_tekst = "Litwo, Ojczyzno moja ...";
// char a_to_nie_tekst = "Litwo, Ojczyzno moja ...";
16
Stałe wyliczeniowe
enum KOLOR { R = 100, G = 010, B = 001, White = 111,
Black = 000};
enum tydzien_roboczy { poniedzialek, wtorek, sroda,
czwartek, piatek};
ale nie
enum tydzień_roboczy { poniedziałek, wtorek, środa,
czwartek, piątek};
17
Instrukcje i wyrażenia
Instrukcja prosta
to_cos = (czar*0.23 + wdziek*0.58 wady) * random( );
Instrukcje złożone umieszczamy w nawiasach klamrowych
{
alfa = alfa
* 2.5 ;
beta = alfa/4.;
i++;
}
Całe ciało funkcji też jest jedną złożoną instrukcją
18
Operatory matematyczne
+ dodawanie
- odejmowanie
*mnożenie
/ dzielenie
% reszta z dzielenia
19
zapis
speed = speed + 7;
jest równoważny zapisowi
speed += 7;
Operator matematyczny zestawiony z operatorem podstawienia
( = ) oznacza:
oblicz wartość wyrażenia po prawej stronie (RightValue),
z obliczoną wartością wykonaj działanie matematyczne w
wyrażeniu po lewej stronie (LeftValue),
wykonaj podstawienie.
20
Przykład zapisu
Inkrementacja i dekrementacja
Jest to dodawanie (++) lub odejmowanie (--) jedynki.
Zamiast napisać
Izydor = Izydor + 1 ;
lub
Izydor += 1 ;
piszemy
Izydor++ ;
Identycznie działa operator -- dekrementacji.
21
Priorytety operatorów i kolejność
działań
priorytet operator symbol
2 wywołanie funkcji,
grupowanie, in- i dekrementacja ( ) ++ --
5mnożenie, dzielenie, reszta * / %
6 dodawanie, odejmowanie + -
16 przypisanie = *= /= %=
+= -=
operatory o równych priorytetach - od lewej do prawej
22
Prawda, fałsz i operatory relacji
wartość 0 (zero) jest traktowana jako FAASZ,
dowolna inna jako PRAWDA
== równe
!= nie równe
>>= większe, większe lub równe
< <= mniejsze, mniejsze lub równe
23
Przykłady wyrażeń logicznych
wyrażenie wynik
5 == 7 fałsz
3.14 >= 3.14 prawda
3.14 < 3.14 fałsz
7 != 5 prawda
0FAASZ
2.7174 PRAWDA
24
Pętle w programie
Pętla z etykietą i instrukcją goto
etykieta: instrukcja ;
.
.
.
goto etykieta;
staramy się tego unikać,
czyni program mało czytelnym!
25
Pętle w programie
while, do ... while, for ...
mają postać odpowiednio :
while (warunek) { instrukcja }
do { instrukcja } while (warunek);
for ( warunki ) { instrukcja }
26
Instrukcja warunkowa while
Continue i break we wnętrzu pętli
while (warunek )
instrukcja; // może być złożona { }
while (warunek )
{
continue; // wróć do początku pętli
break; // wyjdz z pętli, przerwij wykonywanie bieżącej
// instrukcji (złożonej)
27
}
Pętla do - while( )
i pętla wyliczeniowa for
do // wykona się zawsze choć jeden raz
{
// instrukcje
} while (warunek);
// przestanie powtarzać, jeśli warunek nie spełniony
for ( licz=wart_pocz; licz <= wart_konc; licz++)
{ . . . }
28
Tablice
Tablica to zbiór pewnej liczby komórek pamięci
przeznaczonych do przechowywania pewnej liczby danych
określonego typu.
n.p.
int OjJakDuzo[50], malo[3];
double wielomian[8];
char calka[50] = wykonuje calkowanie ;
29
29
Tablice, cd.
przykłady deklarowania i nadawania wartości
początkowej elementom tablic
double As [3] = { 2.54, 5.15, 7.123 };
// As[0] = 2.54, As[1]=5.15, As[2]=7.123
int Ala [5] [2] = { 2, 4, 1, 3, 5, 7, 6, 8, 9, 0};
int Ola [5] [2] = {{2, 4}, {1, 3}, {5, 7}, {6, 8}, {9, 0}}
float Kot [ ] = { 1.1, 2.2, 3.3 4.4 }; // jak zmierzyć długość Kota?
// (nie narazajac sie przy tym na podrapanie ...)
const int DługoscKota = sizeof ( Kot ) / sizeof ( Kot [ 0 ] );30
Tablice znaków (char)
cout << Czesc! \n ;
char greet [ ] = { C , z , e , s , c , ! , \0 };
cout << greet;
// ----------------------------------------
#include
char greet [ ] = Czesc! ; // 6 znaków + znak pusty (null)
char serdecznie [80];
strcpy ( serdecznie, greet);
strncpy( serdecznie, greet, 3 );
31
31
dodatek: wejście/wyjście w C++
Strumienie we/wy i klasy
obsługi
Predefiniowane strumienie:
cin - strumień wejścia
cout - strumień wyjścia
cerr - strumienie wyjścia komunikatów
clog błędu, strumień clog jest buforowany
Strumienie przypisane standardowo do klawiatury i ekranu można
przypisać do innych urządzeń i plików.
Klasa obsługi strumieni najniższego poziomu - streambuf,
Klasy pochodne - istream, ostream, iostream.
32
dodatek: wejście/wyjście w C++
flagi
W pliku iostream.h zdefiniowana jest zmienna wyliczeniowa (enum)
zawierająca następujące flagi:
skipws - pomiń spacje
left right internal - wyrównaj do lewej, prawej, szerokości
dec oct hex scientific - dziesiętnie, itd.
Showbase - wyświetl podstawę liczenia,
showpoint showpos - zawsze . , zawsze + przy floating
uppercase - dużymi literami
fixed - zwykły format liczb
boolalpha - we/wy danych logicznych
unitbuf stdio - wyczyszczenie strumieni
33
dodatek: wejście/wyjście w C++
flagi, sposób użycia
Korzystamy z funkcji setf() i unsetf() (ustaw flagę i cofnij flagę)
należących do klasy ios .
cout.setf(ios::showpos);
cout.setf(ios::scientific);
cout << 123 << <<1234.5566; // wynik: +123 +1.234557e+03
long f = cout.flags();
funkcja flags() pozwala sprawdzić ustawione dla strumienia
flagi.
34
dodatek: wejście/wyjście w C++
Manipulatory
Włącza je plik nagłówkowy iomanip.h
dec hex oct
setioflags(long f) , resetioflags(long f)
- ustawianie i cofanie flag wg bitów w zmiennej f
setbase (int base)
setw(int w) - ustawienie szerokości pola
setfill(int ch) - wypełnianie pustych miejsc pola znakiem ch
setprecision(int p) ilość miejsc po kropce dziesiętnej
ws - pomiń początkowe spacje
endl ends - koniec linii, koniec łańcucha (znak pusty)
35
flush - wyczyszczenie strumienia
dodatek: wejście/wyjście w C++
manipulatory,
#include
przykład
#include
int main(int argc, char* argv[])
{
cout << setiosflags(ios::fixed);
cout << setprecision(5) << 1.23 << endl;
cout << setw(13) << "O, kurcze blade ..." << endl;
cout << setw(31) << "O, kurcze pieczone ..." << endl;
getchar();
1.23000
O, kurcze blade ...
return 0;
O, kurcze pieczone ...
36
}
Builder, co w istocie robi?
Debugger
Analiza
statyczna kodu
Kompilacja,
Edytor
konsolidacja
programu
(Make, Build)
Analizator
wydajności
37
Instrukcja warunkowa if
if ( wyrażenie ) instrukcja ;
lub
if ( wyrażenie ) { instrukcja złożona }
np.
if ( maxY < 12 ) x += 5 ;
38
38
Alternatywa if ... else ...
if { warunek }
{ instrukcja 1 } // jeśli warunek spełniony
else
{ instrukcja 2 } // jeśli warunek nie spełniony
np.
if ( piles ) nie_jedz( ); else wypij( );
// z piosenki Wars wita!
39
39
inny przykład z else
delta = 0.005 ;
.
.
if (delta ) // to samo co if(delta != 0)
step = range / delta ;
else
step = range / 0.0001 ;
40
40
if ( czegos_ci_brak )
{ if ( glodny )
zjedz_cos ( );
else
{ if ( spragniony )
wypij_cos ( );
else
zadzwon_do ( EWA ); // jakkolwiek ma na imię
}
}
else
moze_cos_zrob( ) ;
41
41
e
on
dz
ż
e
gni
a
if z
Operatory logiczne
&& AND logiczne i
|| OR logiczne lub
! NOT negacja
priorytety operacja symbol
9równość, nierówność == !=
13 AND &&
14 OR ||
42
42
Operatory logiczne w instrukcjach
warunkowych
a. if ( wiek <= 21 && dosw_kierown > 5 && studia)
idealny_kandydat( ) ;
b. if (chleb || bulki && szynka ) smacznego ( ) ;
c. if ( napoj != (wodka || rum )) za_kierownice ( ) ;
d. if ( napoj != wodka || rum ) za_kierownice ( ) ;
e. if ( napoj != wódka || napoj != piwo )
za_kierownice ( ) ;
43
43
Instrukcja wielokrotnego wyboru
switch
switch ( zmienna )
{
case alfa: { ..... ; break; }
case beta: { ..... ; break; }
.....
default: .... ;
}
44
44
Przykład użycia przełącznika switch
int delta; double step;
cin >> delta;
switch ( delta )
{ case 1: step=3;
break;
case 2: step=6;
break;
case 3: {step=1./delta + delta; break;}
// {step= 1/delta + delta; break;}
default: step=123; }
45
45
No, i tyle ...
(na razie ...)
46
Wyszukiwarka
Podobne podstrony:
e Wstep do programowania DS
Projektowanie oprogramowania Wstep do programowania i techniki komputerowej
Wstep do programowania w jezyku C wstpcp
Wstep do programowania w jezyku C wstpch
Wstep do programowania w jezyku C wstpch
wstęp do programowania
Wstep do pracy z grafiką i programem PAINT paliwoda
10 Wstep do prawoznawstwa
01 Wprowadzenie do programowania w jezyku C
więcej podobnych podstron