Teoria programowania: Wstęp

article-thumbnail

Zapoznanie się z teorią programowania

Pisanie kodu wymaga dużego samozaparcia, szczególnie podczas pisania złożonych aplikacji. Zwłaszcza wtedy, gdy nie działają one według ustalonego projektu. Oraz wtedy, gdy czytamy i próbujemy zrozumieć cudzy kod.

Nie obiecujemy, że poniższa teoria zamknie zagadnienia dotyczące programowania. Będzie ona raczej wejściem do głębokiego basenu, pierwszym krokiem, który zostanie wykonany przez Ciebie, adepta pisania kodu, w kierunku tak złożonego zagadnienia, jakim jest programowanie.

Jedyną rzeczą, jaką możemy Ci obiecać jest to, że będzie to trudna droga, która będzie wymagała od Ciebie pisania kodu, kompilowania, sprawdzania różnych warunków. Chcemy przybliżyć Ci pewne zagadnienia z tym związane, które pozwolą zrozumieć Ci samą istotę programowania, w szczególności programowania imperatywnego.

Nie wiesz co oznacza programowanie imperatywne? Nie martw się, niebawem zrozumiesz o co chodzi!

Ale tak na początek, małe pytanie. Jak sądzisz, czy operacja zawierająca poniższe dwie czynności kiedykolwiek się zakończy?

10 Wypisz „Nasze kompendiumEE09 jest świetne”
20 Wróć do 10

Jeśli chcesz poznać odpowiedź, to dedykuję Tobie poniższy filmik:

Wstęp do teorii programowania

Programowanie jest to uczenie danego urządzenia elektronicznego pewnych czynności za pomocą kodu, który jest zrozumiały przez urządzenie. Zbiór czynności, spójników oraz warunków o określonej składni, której możemy użyć podczas pisania kodu nazywamy językiem programowania, zaś skończony ciąg czynności, służący rozwiązaniu danego problemu, zapisany w jasny sposób nazywamy algorytmem.

Obliczanie pola trójkąta (przykład algorytmu):

Pomnóż bok a przez wysokość h;
Podziel wynik mnożenia przez 2.

Algorytm zapisany w postaci zrozumiałej dla człowieka i możliwej do przeniesienia na dowolny język programowania nazywamy pseudokodem. Wersja graficzna pseudokodu zaś jest nazywana schematem blokowym.


Obliczanie pola trójkąta (przykład pseudokodu i schematu blokowego):

Zacznij program; Zdefiniuj liczby a, h, pole; Przeczytaj liczbę a; Przeczytaj liczbę h; Podstaw zmienne do działania pole = a*h/2; Wypisz liczbę pole; Zakończ program;

Programy możemy pisać kodując czynności za pośrednictwem prostych oznaczeń symbolicznych, czyli w języku niskopoziomowym, bądź posługując się bardziej rozbudowanymi poleceniami i oznaczeniami, używając języka wysokopoziomowego. Jednym z przykładów języków niskopoziomowych jest Assembler, tłumaczony do instrukcji zapisanych w systemie szesnastkowym.

“Witaj świecie” w C++ (przykład języka wysokopoziomowego):

#include // import biblioteki wejścia-wyjścia int main() // funkcja główna { std::cout << "Hello, World!"; // wypisanie "witaj świecie" return 0; // zwróć wartość "0" }

“Witaj świecie” w Assemblerze (przykład języka niskopoziomowego):

segment .data tekst db "Hello World!",0Dh,0Ah,"$" segment stosik stack resb 64 segment .text mov ax, .data mov ds, ax mov ax, stosik mov ss, ax mov dx, tekst mov ah, 9 int 21h mov ax, 4C00h int 21h

“Witaj świecie” w postaci heksadecymalnej (przykład kodu maszynowego):

EEDAAEDBED0D0AEEACEB64EEDA1A4C0021

Komputery przetwarzają jedynie instrukcje napisane w kodzie maszynowym. Kod napisany w języku programowania wyższego poziomu niż kod maszynowy należy poddać procesowi tłumaczenia go, zwanego inaczej kompilacją. Oprogramowanie, które tłumaczy kod napisany w danym języku programowania, nazywane jest kompilatorem.

Wynik kompilacji w środowisku Code::Blocks.

Proces wyszukiwania błędów w programowaniu nazywamy debugowaniem (inaczej nazywać to można odpluskwianiem). Aplikację, która zawiera w sobie kompilator, debugger oraz wykrywacz składni nazywamy Integrated Development Enviroment (po Polsku to zintegrowane środowisko programistyczne).

Zintegrowane środowisko Code::Blocks.

Autor tekstu: Jacek Woźniak