Programowanie Dodatki

Z Skrypty dla studentów Ekonofizyki UPGOW

(Różnice między wersjami)
(Dodatek 1)
(Dodatek 1)
Linia 11: Linia 11:
Większą ilość zmiennych jednego typu można zgromadzić w tablicy, np.
Większą ilość zmiennych jednego typu można zgromadzić w tablicy, np.
-
<source lang="cpp">int tab[4];</source>
+
<source lang="cpp">int tab[10];</source>
oznacza deklarację 10-elementowej tablicy liczb całkowitych. Numeracja elementów tablicy zaczyna się od zera.
oznacza deklarację 10-elementowej tablicy liczb całkowitych. Numeracja elementów tablicy zaczyna się od zera.
<source lang="cpp">int szachy [8] [8];  </source>
<source lang="cpp">int szachy [8] [8];  </source>

Wersja z 14:24, 31 mar 2010

Spis treści

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ększą ilość zmiennych jednego typu można zgromadzić w tablicy, np.

int tab[10];

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;