Zarówno w Internecie, jak i wśród dostępnych książek na rynku, mało jest pozycji, które skierowane są do początkujących programistów - początkujących w prawdziwym tego słowa znaczeniu. Moim celem było napisanie kursu języka C# skierowanego właśnie do takich osób. Zadanie z początku wydawało się proste, jednak z upływem czasu zauważyłem, że chyba łatwiej pisze się o rzeczach bardziej zaawansowanych. Wiele razy łapałem się na tym, że nie tłumaczyłem podstawowych pojęć potrzebnych do zrozumienia danego zagadnienia – jednak chyba za dużo przebywam w towarzystwie innych programistów i komputerów J . Mam nadzieje, że uda mi się przekazać minimum wiedzy potrzebne do rozpoczęcia samodzielnej przygody z programowaniem. Ze względu na ograniczoną objętość kursu, a zarazem próbę jak najdokładniejszego tłumaczenia podstaw programowania, wiele ważnych aspektów zostanie pominiętych. W przypadku trudności w zrozumieniu niektórych części, bądź ewentualnych błędów zachęcam do udzielania się na forum CentrumXP.pl. Postaram się na bieżąco wprowadzać poprawki.
Programowanie czyli tworzenie aplikacji
Programowanie to pisanie instrukcji, które ma wykonywać komputer. Niestety współczesne komputery nie znają języka człowieka, a więc to my musimy poznać język jakim posługuje się komputer. Komputer „rozumie” kod maszynowy, czyli ciąg 1 i 0. Całe szczęście my nie musimy go poznawać. A więc jak porozumieć się z tym tajemniczym urządzeniem? Do tego celu powstały języki programowania oraz kompilatory. Język programowania składa się ze słów, które jesteśmy w stanie zrozumieć, a dokładniej – nauczyć się jakie działanie powoduje dane słowo. Operując pewną pulą tych wyrazów, jesteśmy w stanie pisać programy komputerowe, a ściślej rzecz ujmując – kod źródłowy, który na kod maszynowy (jedynki i zera) tłumaczą kompilatory.Algorytm
Algorytm to sposób na osiągnięcie jakiegoś celu. Program komputerowy realizuje zawsze jakiś algorytm. W uproszczeniu program komputerowy składa się z danych oraz instrukcji, które na tych danych operują. My także co chwila wykonujemy jakiś algorytm. Przykładem może być gotowanie obiadu:Cel: | gotowy obiad |
---|---|
Dane: | składniki |
Instrukcje: | - weź składniki - obierz ziemniaki - pokrój mięso - … |
Wynik: | gotowa potrawa |
Co prawda tego za nas program komputerowy nie zrobi (może w przyszłości J ), ale inne zadania jak najbardziej.
Cel: | oblicz wynik |
---|---|
Dane: | 7 i 8 |
Instrukcje: | dodaj |
Wynik: | 15 |
Program, który realizuje takie zadanie będzie wyglądać w większości języków podobnie, dlatego posłużę się kodem uogólnionym (nie napisanym w konkretnym języku) tzw. „pseudokodem”. Program komputerowy wykonuje instrukcje w kolejności takiej samej jak by czytał tekst, czyli od góry do dołu i od lewej do prawej strony.
Dodaj
{
Zwróć 7 + 8
}
Dodaj
Powyżej mamy instrukcje: „Dodaj”,” Zwróć” , „+”,
oraz dane: „7” i „8”. Pierwsze 4 linijki to definicja instrukcji „Dodaj”.
Czym jest definicja?
Zacznijmy od tego, że język programowania oprócz
słówek podstawowych, takich jak np. „Zwróć”, pozwala nam definiować własne
instrukcje składające się z podstawowych. Można by to porównać do tworzenia
nowych wyrazów w jakimś języku. Może właśnie tak powstało słowo „gotować”
J Zamiast wypowiadać całą sekwencję
zdań:
- „Obierz ziemniaki”,
- „Wlej wodę do garnka”,
- „Posól wodę”
- …
Wystarczy, że powiemy „Ugotuj ziemniaki”. Tak samo w C# możemy ze słówek podstawowych stworzyć nową instrukcję. Tak więc definiując instrukcję „Dodaj” możemy jej później użyć wielokrotnie (robimy to w linijce piątej), tak samo jak instrukcji podstawowych.
@STRONA@Zmienne
Aby nasze programy były uniwersalne musimy zapewnić im interakcję z użytkownikiem, czyli możliwość komunikacji. Przykład:
Cel: | dodaj dwie liczby |
---|---|
Dane: | X i Y |
Instrukcje: | - pobierz dane - dodaj liczby |
Wynik: | X + Y |
Poniżej znajduje się program w pseudokodzie, który najpierw definiuje nową instrukcję dodającą dwie liczby, a następnie pobiera dane od użytkownika i je dodaje.
Dodaj(zmienna1, zmienna2)
{
Zwróć zmienna1 + zmienna2
}
X = Pobierz liczbę
Y = Pobierz liczbę
Dodaj(X, Y)
X oraz Y to zmienne, czyli pojemniki na dane. Dane można do nich wkładać, wyjmować lub podmieniać. W definicji instrukcji „Dodaj” określamy, że będziemy podawać jej dwie zmienne (zmienna1 oraz zmienna2), a następnie zwracali ich sumę. Zmienne podawane jako dane wejściowe dla instrukcji nazywają się parametrami i w przypadku mnogiej ich ilości rozdzielane są przecinkami. Następnie do zmiennej X wkładamy liczbę pobraną od użytkownika. To samo robimy ze zmienna Y. Na koniec nakazujemy instrukcji „Dodaj” dodać zawartości zmiennych X oraz Y. Wracając do słówka „gotować”, możemy sobie wyobrazić, że też otrzymuje dwie zmienne:
- co ugotować,
- jaką ilość.
Gotuj(co, jak)
{
Obierz co,
Wlej wodę do garnka,
…
}
Następnie pobranie danych od użytkownika.
zmienna_potrawa = Podaj co mam ugotować
zmienna_ilość = Podaj ile
Teraz możemy wykonać instrukcję.
Gotuj(zmienna_potrawa, zmienna_ilość)
Jak pewnie każdy zauważył nazwy zmiennych są różne. W C#, trzymając się kilku zasad, zmienne możemy praktycznie nazywać dowolnie.
@STRONA@„Prawdziwy” program w C#
using
System;
namespace
PierwszyProgram {
class NaszaKlasa
{
static int
Dodaj(int zmienna1, int
zmienna2)
{
return zmienna1 + zmienna2;
}
static void
Main(string[] args)
{
string x = Console.ReadLine();
string y = Console.ReadLine();
int
wynik = Dodaj(int.Parse(x),
int.Parse(y));
Console.WriteLine(wynik);
}
}
}
Niestety nie wygląda tak prosto jak pseudokod ale mam nadzieję, że niedługo wszystko się wyjaśni (w końcu to dopiero pierwsza część z dwudziestu). W tej chwili wystarczy jak wychwycimy kilka instrukcji, które odpowiadają tym z pseudokodu.
Definicja instrukcji:
static
int Dodaj(int
zmienna1, int zmienna2)
{
return zmienna1 + zmienna2;
}
Pobranie danych do zmiennych:
int
x = Convert.ToInt32(Console.ReadLine());
int
y = Convert.ToInt32(Console.ReadLine());
Pobranie danych do zmiennej „wynik”. Danymi jest wynik działania instrukcji “Dodaj”.
int
wynik = Dodaj(x, y);
Instrukcja wyświetlająca wynik na monitorze:
Console
.WriteLine(wynik);
W miarę postępów czynionych podczas nauki stopniowo wszystko powinno stawać się zrozumiałe.