Krótka historia
1970 – 1972 - język C Dennis Ritchie - Bell Laboratories
1983 - język C++ Bjarne Stroustrup - AT&T Bell Laboratories
1988 - ogłoszenie standardu ANSI C
1989 – 1998 - proces standaryzacji jezyka C++
1998 - standard jezyka C++ w postaci ISO/IEC 14882, zwany jako ANSI C++. Zawiera zestaw abstrakcji znany pod nazwa biblioteki standardowej C++.
2003 - poprawki w standardzie (ISO/IEC 14882:2003)
STL (Standard Template Library) - poczatkowo rozwijana jako niezalezna biblioteka przez firme Hewlett Packard
Styczeń 2012 poprawki w standardzie C++11 (ISO/IEC 14882:2011)
Właściwości języka -
Umożliwia abstrakcję danych oraz stosowanie kilku paradygmatów programowania: strukturalnego, obiektowego i generycznego.
-
Charakteryzuje się wysoką wydajnością kodu wynikowego, bezpośrednim dostępem do zasobów sprzętowych i funkcji systemowych, łatwością tworzenia i korzystania z bibliotek (napisanych w C++, C lub innych językach), niezależnością od konkretnej platformy sprzętowej lub systemowej (co gwarantuje wysoką przenośność kodów źródłowych) oraz niewielkim środowiskiem uruchomieniowym.
-
Podstawowym obszarem jego zastosowań są aplikacje i systemy operacyjne.
C++ został zaprojektowany przez Bjarne Stroustrupa jako rozszerzenie języka C o obiektowe mechanizmy abstrakcji danych i silną statyczną kontrolę typów. Zachowanie zgodności z językiem C na poziomie kodu źródłowego pozostaje jednym z podstawowych celów projektowych kolejnych standardów języka.
W latach 90. XX wieku język C++ zdobył pozycję jednego z najpopularniejszych języków programowania ogólnego przeznaczenia. Na początku XXI wieku liczbę programistów języka C++ szacowano na około 3 miliony.
Od 1998 obowiązuje standard ISO/IEC 14882:1998 (Standard for the C++ Programming Language) z drobnymi poprawkami zatwierdzonymi w 2003 r. (ISO/IEC 14882:2003). W 2009 roku ogłoszono, że nowy standard (tzw. C++0x) zacznie obowiązywać nie wcześniej niż w 2010 roku.
Niektóre właściwości języka C++:
1. Możliwość programowania obiektowego:
-
funkcje składowe
-
sekcje prywatne, chronione i publiczne
-
zaprzyjaźnianie funkcji i klas
-
Klasy, jako rozszerzenie struktury o funkcje składowe, enkapsulację, dziedziczenie i polimorfizm
-
Obiekty, będące instancjami klas
-
Dziedziczenie
-
Metody wirtualne dostarczające polimorfizm
2. Inne:
-
Referencje
-
Przeciążanie funkcji
-
Przeciążanie operatorów
-
Funkcje rozwijalne (inline)
Programowanie strukturalne – przykład
DANE
|
½ kostki masła
|
1 szklanka cukru
|
2 jajka
|
………….
|
ALGORYTM
|
Utrzeć masło
|
Stopniowo dodawać cukier
|
Wbić jajka
|
………….
|
+
PROGRAM
-
edycja kodu źródłowego programu
-
kompilacja – tłumaczenie kodu źródłowego na język wewnętrzny – język maszynowy; otrzymany plik, to kod obiektowy.
-
Ł ączenie (konsolidacja) kodu obiektowego z kodem bibliotecznym. Plik z końcowym produktem to plik wykonywalny.
Kompilacja to proces automatycznego tłumaczenia kodu napisanego w języku programowania na kod maszynowy(obiektowy). Dane wejściowe najczęściej nazywa się kodem źródłowym. Program wykonujący tłumaczenie to kompilator. Przeważnie kompilacja jest częścią większego procesu tłumaczenia, tworzony w jej trakcie kod wynikowy jest przekazywany do innych programów (np. linkera), możliwe jest również tłumaczenie do postaci zrozumiałej dla człowieka.
Konsolidacja (linkowanie od ang. link - łączyć) to proces polegający na połączeniu skompilowanych modułów (plików zawierających kod obiektowy lub plików bibliotek statycznych) i utworzeniu pliku wykonywalnego lub rzadziej innego pliku obiektowego. Dodatkowo podczas konsolidacji do pliku wynikowego mogą być dołączone odpowiednie nagłówki i informacje charakterystyczne dla konkretnego formatu pliku wykonywalnego.
P
komentarz
ierwszy program
//pierwszy.cpp
#include
u sing namespace std;
int main()
{
cout<<”Wpadnij do mnie pogadac o wakacjach\n”;
Nawiasy klamrowe
cout<<”albo o C++”<return 0;
}
Kończy funkcje
/*komentarz
w stylu C */
Elementy programu: -
Komentarze // oraz /* */
-
Dyrektywa preprocesora #include
-
Dyrektywa using namespace
-
Nagłówek funkcji int main()
-
Treść funkcji ograniczona nawiasami { }
-
Instrukcja cout do wyświetlenia komunikatu
-
Instrukcja powrotu return
Uwagi.
-
Średnik kończy instrukcję
-
Język C++ (oraz C) rozróżnia wielkość liter
-
słowa kluczowe: #include, using, int, return, { } // /* */
Pliki dołączone
Dodanie dyrektywy #include sprawia, że zawartość pliku iostream zostaje wysłana do kompilatora wraz z zawartością tego pliku.
Uwaga. Nazwy plików nagłówkowych w języku C miały rozszerzenie h, np. stdio.h lub iostream.h, string.h, math.h. Obecnie są to pliki bez rozszerzeń: iostream, cstring, cmath.
Przestrzenie nazw
Jeśli używamy nazw plików bez rozszerzeń .h, to musimy mu dodatkowo udostępnić definicje zapisane za pomocą dyrektywy using, np. jeśli używamy dyrektywy
#include
to musimy udostępnić naszemu programowi definicje za pomocą dyrektywy using:
using namespace std;
Formatowanie kodu -
Jedna instrukcja w wierszu
-
Otwierające i zamykające nawiasy klamrowe w oddzielnych wierszach
-
Wewnątrz nawiasów klamrowych instrukcje są wcięte
-
Brak odstępów wokół nawiasów związanych z nazwą funkcji
-
Stosowanie komentarzy
-
Nazwy zmiennych zgodne z kontekstem (np. v, prędkosc, dl, masa)
Instrukcje wejścia/wyjścia
W języku C wykorzystywano (m. in). funkcję scanf do wprowadzania danych z klawiatury oraz printf do wypisywania informacji na ekranie monitora. W języku C++ wykorzystujemy w tym celu odpowiednio obiektów cin oraz cout. (W przyszłości poznamy także inne).
Przykład
//twojkot.cpp
#include
using namespace std;
int main()
{
int pchly;
cout<<”Ile pchel ma twój kot?”<
cin>>pchly;
cout<<”Coz, to o ” <
cin.get(); //lub system(”pause”);
return 0;
}

Składnia języka Dane Proste zmienne
Nazwy zmiennych:
-
Litery, cyfry oraz _
-
Pierwszym znakiem nie może być cyfra
-
Duże litery są odróżniane od małych
-
Nazwy zaczynające się od dwóch znaków podkreślenia albo jednego znaku podkreślenia i dużej litery są zarezerwowane na użytek implementacji(np. __kot)
-
Długość nazwy jest dowolna
Przykład. Które nazwy zmiennych są prawidłowe w języku C++?
int spaniel;
int Spaniel;
int SPANIEL;
Int terier;
int Moj_piesek;
int _MojPiesek;
int 6nasta;
int double;
int begin;
int misz-masz;
Typy
proste
-
Całkowite
-
Zmiennoprzecinkowe
-
logiczne
Całkowite ze znakiem i bez znaku:
char signed char
short unsigned short
int unsigned int
long unsigned long
Zmiennoprzecinkowe
float
double
long double
Logiczne
bool
Kwalifikator const
Jeśli nie chcemy, aby wielkość symboliczna pozostawała stałą w trakcie trwania całego programu, możemy użyć słowa kluczowe const, Np:
const int MIESIACE=8;
const int ABC; //źle!!!
inny sposób – użycie dyrektywy preprocesora #define:
#define MIESIACE 12 //w C++ nieużywany
1. char:
65 lub ‘A’
97 lub ‘a’
10 lub ‘\n’ lub endl
2. całkowite long:
23L -9000000l
3. liczby zmiennoprzecinkowe:
9.0f 12.56F 2.45e12 8.33E-4
TYPE NAME MEMORY USED SIZE RANGE PRECISION
short
|
2 bytes
|
-32,767 to 32,767
|
|
int
|
4 bytes
|
-2,147,483,647 to 2,147,483,647
|
|
long
|
4 bytes
|
-2,147,483,647 to 2,147,483,647
|
|
float
|
4 bytes
|
ok. 10-38 do 1038
|
7 digits
|
double
|
8 bytes
|
ok. 10-308 do 10308
|
15 digits
|
long double
|
10 bytes
|
ok. 10-4932 do 104932
|
19 digits
|
char
|
1 byte
|
Wszystkie znaki ASCII (może być traktowana jako zmienna całkowita.)
|
|
bool
|
1 byte
|
true, false
|
|
Deklarowanie zmiennych
Przykład 1
int n, liczba_smokow;
double d;
Przykład 2 Instrukcja podstawienia (przypisania)
Kwiatek=fiolek;
Przykład 3 Deklaracja wraz z inicjalizacją
int liczba=10, n=-346;
double d=23.5e2;
Uwaga. W języku C++ można dokonywać deklaracji w dowolnym miejscu. Najczęściej będziemy dokonywali deklaracji zmiennych i stałych przed ich użyciem.
Operatory w C++
Operator
|
opis
|
+
|
dodawanie
|
-
|
odejmowanie
|
*
|
mnożenie
|
/
|
dzielenie
|
%
|
reszta z dzielenia
|
Zadania
-
Napisz program, który pyta o wzrost w cm i przekształca go w stopy i cale wzrost.cpp
-
Napisz program, który pyta o wzrost w stopach i calach oraz wagę w funtach. Program ma wyświetlać tzw. BMI. (waga[kg]/wzrost[cm]2). bmi.cpp (BMI zmiennoprzecinkowa)
-
Napisz program, który pyta o zużycie benzyny w stylu europejskim i podaje go w stylu amerykańskim.
-
Napisz program, który po wczytaniu znaku wyświetla jego kod ASCII. znak.cpp
http://phppp.gajdaw.pl/projekty/25-03/index.php?id=1

|