Z Skrypty dla studentów Ekonofizyki UPGOW
Spis treści[ukryj] |
Dodatek 1
Zamieszczam tutaj nieco bardziej rozbudowane przykłady programów wykorzystujących instrukcje sterujące. Napisane są wg reguł C++, dla ich zrozumienia kilka wstępnych informacji. C++ rozróżnia duże i małe litery, format zapisu jest swobodny, tak zwane białe znaki (np. spacja, tab, ...) są pomijane przez kompilator. Łańcuch znaków (komentarz) zawarty pomiędzy /* */ , służy programiście tylko do zwiększenia czytelności tekstu programu. Komentarzem jest także łańcuch znaków pisany po dwóch ukośnikach // , ale tylko do końca linii (tzw. krótki komentarz). Zmienne przed pierwszym użyciem muszą być zadeklarowane, np. zapis
int wynik; float X; double Y; char Z;
oznacza, że w programie będą używane zmienne o nazwach; wynik (liczba całkowita), X (liczba zmiennoprzecinkowa), Y (liczba zmiennoprzecinkowa podwójnej precyzji), Z (pojedynczy znak alfanumeryczny). Nazwy zmiennych mogą zaczynać się od litery (dużej lub małej) lub znaku podkreślenia, nie mogą zaczynać się np. od cyfry, znaków $, @, itp . Naturalnie, muszą też być różne od słów kluczowych języka, takich jak if, for, do, …itp.
Większa ilość zmiennych jednego typu można zgromadzić w tablicy, np.
int tab[4];
oznacza deklarację 10-elementowej tablicy liczb całkowitych. Numeracja elementów tablicy zaczyna się od zera.
int szachy [8] [8];
oznacza deklarację tablicy dwuwymiarowej o 8 wierszach i 8 kolumnach. Wymienię kilka najczęściej używanych operatorów:
- = podstawienie
- == jest równy
- != jest różny
- <= mniejszy lub równy
- <= większy lub równy
- || suma logiczna, inaczej alternatywa czyli logiczne „lub”
- && iloczyn logiczny, inaczej koniunkcja czyli logiczne „i”
- % dzielenie modulo, otrzymujemy resztę z dzielenia dwóch liczb
Program C++ składa się z jednej lub większej ilości funkcji. Funkcja jest zbiorem deklaracji i instrukcji przeznaczonych do wykonania jakiegoś zadania. Definicja funkcji zawiera
- typ_wartości nazwa_funkcji (lista parametrów)
- {
- // treść (ciało) funkcji czyli deklaracje zmiennych i instrukcje do wykonania
- ..............
- }
Przykład,
int suma (int i, int j) { int k; k = i + j; return k; }
Wywołanie funkcji to po prostu podanie jej nazwy, wraz z parametrami w nawiasach np.
int i = 50, j = 100, m; m = suma (i, j);
Po wywołaniu (uruchomieniu) funkcji wykonywane są instrukcje zawarte w jej ciele, aż do napotkania na słowo kluczowe return, wówczas zwracana jest wartość stojąca na prawo od return i kończy się działanie funkcji. Jeżeli funkcja nie zwraca żadnej wartości, to należy ją poprzedzić słowem void, w funkcji typu void instrukcja return nie musi wystąpić. Każdy program musi zawierać funkcję o nazwie main( ), wykonywanie programu rozpoczyna się zawsze od funkcji main( ), może ona być tylko typu void lub int.
Zwykle w przygotowywanym programie korzystamy z pewnych standardowych funkcji tzw. funkcji bibliotecznych lub specjalnych operacji np. wejścia/wyjścia. Przykładowo, instrukcja
cout << ” STOP” ;
wyprowadza na monitor (cout to skrót od ang. console output) łańcuch znaków zawartych w cudzysłowie, w naszym przykładzie to STOP. Przy pomocy cout potrafimy również skierować do standardowego wyjścia (monitor) liczbę np.
cout << 555; // wyświetli na ekranie liczbę 555
Aby przejść do nowej linii, w C++ stosuje się często endl (ang. end of line) np. ,
cout << 5 << endl << 6 << endl << 7 ;
powoduje wyświetlenie
5
6
7
Do wczytywania danych z klawiatury używa się cin (ang. console input) np.
int liczba; cin >> liczba; // za zmienną liczba podstaw wartość wpisaną przy użyciu klawiatury, // tym samym widoczną na ekranie
</source> Jeżeli chcemy w programie korzystać z funkcji bibliotecznych lub operacji na strumieniach danych (cin, cout, …), należy dołączyć (dyrektywa #include) odpowiednie pliki, zawierające niezbędne informacje dla kompilatora. W prostych programach wystarczy zwykle na początku napisać
#include <iostream> using namespace std;
Zobaczmy niewielki, ale kompletny program, w którym występują wspomniane wyżej elementy języka C++
# include <iostream> using namespace std; void main ( ) { int liczba; cout << ” Napisz liczbe i nacisnij ENTER” ; cin >> liczba; cout << ”Twoja ulubiona liczba: ” << liczba << endl; }
Biblioteka standardowa C++ zawiera rozmaite funkcje matematyczne, omówię teraz funkcję int rand( ), która generuje losowe (ściśle mówiąc pseudolosowe) liczby całkowite dodatnie z przedziału < 0, RAND_MAX >, RAND_MAX jest stałą zależną od platformy sprzętowej i używanego kompilatora C++. Wartość stałej RAND_MAX możemy zobaczyć na monitorze po uruchomieniu poniższego programu, jest to liczba 32 767 lub większa
#include <cstdlib> #include <iostream> using namespace std; int main( ) { cout << "Wartość RAND_MAX wynosi " << RAND_MAX << endl; }
Zaimplementowany w ciele funkcji rand() algorytm obliczania liczby losowej wymaga podania przy starcie pewnej liczby naturalnej, tzw. zarodka (ang. seed). Zajmuje się tym biblioteczna funkcja o nazwie srand( ), której argumentem może być liczba naturalna. Często za argument funkcji srand( ) wstawia się liczbę dostarczaną przez inną funkcje biblioteczną int time(). Wywołanie time(0) mianowicie zwraca pobrany z zegara systemowego aktualny czas, mierzony w sekundach od 00:00 1.01.1970 UTC. Instrukcja,
srand(time(0));
podanie losowego „zarodka” funkcji rand( ) - przy każdym uruchomieniu programu. Użycie funkcji rand() i time() wymaga dołączenia, odpowiednio, <cstdlib> i <ctime>. Funkcja rand( ) generuje liczby przypadkowe od 0 do RAND_MAX, często interesuje nas sekwencja liczb losowych w określonym przedziale, np w grach typu LOTTO liczby naturalne z przedzialu <1, 49>. Wystarczy w tym celu posłużyć się operatorem dzielenia modulo, instrukcja
rand( )%10;