piątek, 27 października 2017

Zasady programowania i typy danych


KILKA ZASAD PROGRAMOWANIA W DOBRYM STYLU

   Program jest zrozumiały dla komputera, gdy może być przez niego wykonany. Należy więc przestrzegać reguł języka programowania- stosować poprawną składnię instrukcji.
   Dobry styl programowania to taki, w którym potrafimy zapisać algorytm w sposób zrozumiała dla komputera i człowieka.

ZASADA 1:
Należy stosować zrozumiałe nazwy zmiennych, bądź zrozumiałe skróty.

ZASADA 2:

Warto zarezerwować pewne nazwy na zmienne używane wielokrotnie np. sterując pętlami - j,i.

ZASADA 3:
Dobrze jest sporządzić listy używanych zmiennych.

ZASADA 4:

Należy dzielić program na podprogramy realizujące mniejsze fragmenty zdania, zwłaszcza w złożonych problemach.

ZASADA 5:

Trzeba dbać o przejrzystość tekstu i zachowywać czytelność jego struktury. Warto też dodawać
komentarze na początku procedur i funkcji oraz przy niektórych instrukcjach.

ZASADA 6:
Należy pisać programy odporne na błędy użytkowników. Program powinien instruować swojego użytkownika o działaniach jakie musi on podejmować oraz wyświetlać komunikaty dotyczącego oczekiwanego rodzaju danych i nałożonych na nie ograniczeń.


TYPY DANYCH W JĘZYKU C++

[Typy danych w języku C++]

   Definiuje zakres lub zbiór dopuszczalnych wartości dla stałej, zmiennej, wyrażenia, funkcji oraz zbiór dopuszczalnych operacji wykonywanych na tych wartościach. Określa też format zapisu w pamięci.


[Podział typów w C++]

* typy proste
        - typy porządkowe (m.in. całkowity, logiczny, znakowy, wyliczeniowy)
        - typy rzeczywiste

* typy pochodne
        - tablice
        - struktury
        - unie

* typy wskaźnikowe

* typy obiektowe


[Podzbiory typu całkowitego i rzeczywistego w języku C++ i Pascal]


Sposoby przekazywania parametrów

PRZEKAZYWANIE PARAMETRÓW PRZEZ WARTOSC

W tresi danej procedury lub funkcji sa traktowane jak zmienne lokalne. Ewentualne operacje wykonywane na tych parametrach wewnatrz procedury lub funkcji nie powoduja zmian wartosci odpowiadajacych im parametrow aktualnych.





PRZEKAZYWANIE PARAMETROW PRZEZ ZMIENNA (PRZEZ REFERENCJE)


W procedurze lub funkcji, w której parametry przekazywane sa przez zmienna, operacje wykonywane w tresci procedury na parametrach formalnych w momencie wywolania danej procedury powoduja wykonanie tych operacji na odpowiednich parametrach aktualnych.

piątek, 20 października 2017

Funkcje w języku C++


  1. Funkcja niezwracająca wartości w języku C++


Aby w języku C++ wywołać niezwracającą wartość (typu void), należy wpisać jej nazwę w odpowiednim miejscu funkcji głównej main, a w przypadku funkcji z parametrami - dodatkowo podać parametry aktualne. 


nazwa_funkcji (lista parametrów aktualnych); 


   2. Funkcja zwracająca wartość w języku C++

Funkcja zwracająca wartość (podobnie jak w języku Pascal) wylicza wartość i odsyła tę wartość do funkcji wywołującej. Mówimy wtedy, że funkcja jest zwracająca.


        return a*b;

        return Wynik;

  3. Zmienne globalne - deklarujemy poza funkcjami.

  4. Zmienne lokalne - wewnątrz funkcji.

  5. Zmienne globalne mogą zostać przesłonięte. Zadeklarowanie w procedurze lub funkcji zmiennej lokalnej o takiej samej nazwie jak zmienna globalna spowoduje przesłonięcie zmiennej globalnej, co oznacza, że używana będzie zmienna lokalna, a nie globalna.
   


C++ 
(zmienna lokalna)

void Usmiechy()
{
   int k;
   cin >> k;
   if (k>0) for (i=0; i=20; i++) cout << ":-)";
   else for (i=0; i<20; i++) cout << ":-(";
}



C++
(zmienna globalna)

#include <iostream>
using namespace std;
int i;
void Usmiechy()
{
   int i;
   for (i=0; i<20; i++) cout << ":-)';
}
int main()
{
   i=10;
   Usmiechy();
   cout << i;
   return 0;
}


wtorek, 10 października 2017

Stosowanie procedur i funkcji



   1. Model programowania 

        * programowanie liniowe - klasa problemów programowania matematycznego, w której wszystkie warunki ograniczające oraz funkcja celu mają postać liniową.

        * programowanie struktualne -  paradygmat programowania opierający się na podziale kodu źródłowego programu na procedury i hierarchicznie ułożone bloki z wykorzystaniem struktur kontrolnych w postaci instrukcji wyboru i pętli.

        * programowanie modularne - paradygmat programowania zalecający stosowanie nadrzędności modułów w stosunku do procedur i bloków tworzących program. Moduł grupuje funkcjonalnie związane ze sobą dane oraz procedury i jest reprezentacją obiektu jednokrotnie występującego w programie.

        * programowanie obiektowe - paradygmat programowania, w którym programy definiuje się za pomocą obiektów – elementów łączących stan (czyli dane, nazywane najczęściej polami) i zachowanie (czyli procedury, tu: metody). Obiektowy program komputerowy wyrażony jest jako zbiór takich obiektów, komunikujących się pomiędzy sobą w celu wykonywania zadań.

        * programowanie zdarzeniowe - metodologia tworzenia programów komputerowych, która określa sposób ich pisania z punktu widzenia procesu przekazywania sterowania między poszczególnymi modułami tej samej aplikacji.


  2. Programowanie zstępujące i występujące 

        * programowanie zstępujące (top-down), czyli  "z góry do dołu" - najpierw planuje się całość, a potem dochodzi do szczegółów.

        * programowanie wstępujące (bottom-up), czyli "z dołu do góry" - ze szczegółowych elementów składa się całość.


  3. Zalety stosowania podprogramów

         * dzielenie zadania na mniejsze części - każda może być realizowania w oddzielnej procedurze lub funkcji.

        * wprowadzenie porządku do programu - zwiększenie jego czytelności i przejrzystości.

        * unikanie powtórzeń - fragmenty programu, które się powtarzają, są wyodrębnione w postaci procedur lub funkcji.

        * łatwiejsze wyszukiwanie błędów i dokonywanie poprawek - w procedurze lub funkcji można zlokalizować błędy szybciej niż na długiej liście instrukcji programu głównego.

        * programowanie zespołowe - po uzgodnieniu postaci procedur lub funkcji każdy z członków zespołu może zająć się pracą nad "swoimi" procedurami lub funkcjami.

piątek, 6 października 2017

Schemat blokowy II



1. Specyfikacja



Zadanie: Wyprowadzenie na ekran prostokąta o bokach n, m narysowanego za pomocą znaków * (m-liczba znaków * w poziomie, n- liczba znaków * w pionie). Wnętrze prostokąta powinno być wypełnione znakami *.

Dane: liczby naturalne dodatnie, określające ilość znaków * w prostokącie o bokach m,n.

Wynik: prostokąt o wymiarach m x n, zbudowany ze znaków *.

2. Schemat blokowy







3. Listing programu




#include <iostream>

using namespace std;

int main ()

{

int i, j, n, m;

cout << "Wprowadz wartosc n: ";

cin >> n;

cout << "Wprowadz wartosc m: ";

cin >> m;

for (i=0; i<n; i++)

{

for(j=0; j<m; j++)

cout << "*";

cout << endl;

}

return 0;







}

Schemat blokowy I


  

1. Specyfikacja:




Zadanie: Oblicz iloczyn n liczb całkowitych.

Dane: n dowolnych liczb całkowitych, kolejno zapamiętywanych w zmiennej a.

Wynik: wartość iloczynu: iloczyn.




2. Schemat blokowy:







3. Listing programu:


#include <iostream>

using namespace std;

int main ()

{

int i, a, iloczyn, n;

cout << "Podaj ilosc liczb do przemnozenia ";

cin >> n;

iloczyn=1;

for (i=0; i<n; i++)

{

cout << "Podaj liczbe nr " << i+1 << ": " ;

cin >> a;

iloczyn*=a;

}

cout << iloczyn;

return 0;




}