Wprowadzenie do programowania w C++
How C++ is like teenage sex:
It is on everyone's mind all the time.
Everyone talks about it all the time.
Everyone thinks everyone else is doing it.
Almost no one is really doing it.
The few who are doing it are: A. Doing it poorly. B. Sure it will be better next time. C. Not practising it safely.
Ciekawostka
Typy
Lista typów wbudowanych w standard C++
Nazwa | Opis | Rozmiar |
char | Znak, albo mała liczba całkowita | 1 bajt |
short int
(short) | Mała liczba całkowita | 2 bajty |
int | Liczba całkowita | 4 bajty |
long int
(long) | Długa liczba całkowita | 4 bajty |
bool | Wartość true albo false | 1 bajt |
float | Liczba zmiennoprzecinkowa | 4 bajty |
double | Liczba zmiennoprzecinkowa podwójnej precyzji | 8 bajtów |
long double | Duża liczba zmiennoprzecinkowa podwójnej precyzji | 12 bajtów |
void | Pusty typ danych | – |
Typy char, short, int, long int posiadają warianty signed i unsigned.
Instrukcje sterujące
W C++ dostępne są następujące instrukcje sterujace:
instrukcja warunkowa if … else …
instrukcja warunkowa switch … case
pętla while
pętla do … while
pętla for
break - przerywa aktualną pętlę
continue - kontynuuje pętlę przechodząc do następnej iteracji
return
Funkcje
Główną funkcją każdego programu jest funkcja main().
Pisanie funkcji można rozdzielić na dwie fazy:
opcjonalna deklarację (tworzenie tzw. prototypu funkcji):
double potega(double);
definicję:
double potega(double liczba){
return liczba*liczba;
}
Domyślnym typem zwracanym (jeśli nie określono) jest int.
Brak określenia typu zwracanego przez funkcję w jej definicji jest błędem składniowym jeśli prototyp określa typ zwracany inny niż int
Zapomnienie o zwróceniu wartości z funkcji, która zadeklarowana została jako zwracająca wartość, jest błędem składniowym.
Funkcje rozróżniane są po nazwie i liście parametrów, a nie po zwracanym typie. Dlatego nie można zdefiniować dwóch funkcji o takich samych nazwach i liście parametrów a innych zwracanych typach:
// NIEPOPRAWNIE
void foo(int a, int b){...}
double foo(int c, int d){...}
Tablice
Tablice jednowymiarowe
Tablice jednowymiarowe w C++ można deklarować na cztery sposoby:
Deklarując jedynie rozmiar tablicy, bez podawania jej elementów:
int tab[100];
Deklarując rozmiar i podając elementy tablicy:
int tab[5] = {1,2,3,4,5};
Deklarując rozmiar, ale nie podając wartości wszystkich elementów:
int tab[10] = {1,2,3,4,5};
Podając listę elementów a nie podając rozmiaru tablicy:
int tab[] = {1,2,3,4,5};
Tablice wielowymiarowe
Tablice wielowymiarowe deklaruje się analogicznie do jednowymiarowych, jednakże podczas deklaracji tablicy wielowymiarowej konieczne jest podanie rozmiarów wymiarów, poza pierwszym:
//Poprawnie
int tab[][4] = {{1,2,3,4},{5,6,7,8}};
//NIEPOPRAWNIE
int tab[][] = {{1,2,3,4},{5,6,7,8}};
Definiując funkcję, której parametrem jest tablica wielowymiarowa, również konieczne jest podanie wszystkich rozmiarów wymiarów, poza pierwszym:
void foo(int tab[][10]){
...
}
Prosty program w C++
Przykład
Program ma za zadanie wczytanie imienia i wyświetlenie powitania na ekranie.
// W pliku o nazwie program.cpp
#include <iostream> // Dołączamy bibliotekę odpowiedzialna za
// operacje wejścia i wyjścia
using namespace std;
int main(int argv, char* arg[]){
char imie[20];
cout << "Podaj swoje imie: ";
cin >> imie;
cout << "Witaj " << imie << endl;
return 0;
}
Jak kompilujemy
W konsoli
g++ program.cpp -o program
Omówienie
Warto zauważyć:
Nie jest wymagane podanie rozszerzenia biblioteki iostream.
Biblioteka iostream jest ekwiwalentem znanej z C biblioteki stdio. C++ wprowadza strumienie za pomocą których odbywają się wszystkie operacje wejścia/wyjścia.
Przekierowanie danych do/ze strumienia możliwe jest dzięki operatorom « oraz ». Obiektem strumienia odpowiedzialnym za wyświetlanie na ekranie jest cout natomiast cin jest to strumień wejściowy.
using namespace std określa, że korzystamy z przestrzeni nazw std z biblioteki iostream.
Ćwiczenia
-
[1 plus] Napisz program obliczający silnię. Silnia powinna być obliczana przez funkcję
int silnia(int);
Wykonaj dwie wersje funkcji:
[2 plusy] Wyświetlanie napisu wspak. Napisz funkcję która jako parametr będzie przyjmowała tablicę znaków i wyświetlała ją wspak. Funkcja powinna być rekurencyjna! Podpowiedź: przerwij rekurencję po napotkaniu zerowego znaku końcowego \0.
[2 punkty] Napisz funkcję palindrom, sprawdzającą czy podany jako parametr napis jest palindromem. Funkcja powinna zwracać true gdy napis jest palindromem, a false gdy nie jest.
Napisz proste menu posiadające dwie opcje: Wyjście i Sprawdź palindrom. Po wybraniu Sprawdź palindrom program powinien poprosić o wpisanie słowa a następnie sprawdzić i wyświetlić na ekranie czy podane słowo jest palindromem. Po wybraniu Wyjście program powinien kończyć działanie.
[2 plusy] Napisz funkcję która będzie przyjmować tablicę dwuwymiarową o rozmiarach 10 na 10 i będzie uzupełniać ją iloczynami wierszy i kolumn, tworząc tabliczkę mnożenia. Napisz osobną funkcję do wyświetlania tej tablicy.
-
[3 punkty] Zadanie 4.24 do pobrania tutaj. Zadanie znajduje się w książce Arkana C++.