wtorek, 11 sierpnia 2009

Zaczynamy

Witaj na stronie poświęconej programowaniu w języku C. Język C jest językiem programowania wysokiego poziomu, został stworzony na początku lat siedemdziesiątych XX w. przez Dennisa Ritchiego do programowania systemów operacyjnych i innych zadań . Zostawmy jednak historię z boku,i przejdźmy do sedna sprawy.

Jak skutecznie uczyć się programowania.

Programowanie nie jest rzeczą dla wybrańców , każdy przy odrobinie wysiłków może się tego nauczyć. Najbardziej skuteczną metodą na opanowanie danego języka są ćwiczenia. Tylko w taki sposób możemy nauczyć się składni , a także kreatywnego myślenia ,które jest niezbędne w pracy każdego programisty. Odradzam wszystkim ,którzy zamierzają podjąć się tego zadania aby nigdy nie przepisywali gotowego kodu bezmyślnie do kompilatora, ponieważ w ten sposób nie nauczą się programować ,a także nawet nie opanują składni danego języka. W tym kursie proponuje każde zadanie rozwiązywać na kartce papieru , potem jeśli jesteśmy pewni ,że nasz program działa poprawnie przepisujemy nasz kod do komputera. Natknąłem się na wiele kursów w sieci ale według mnie są mniej czy bardziej bezużyteczne, ponieważ brak w nich jest zadań do samodzielnego rozwiązywania. Pamiętaj ćwiczenie czyni mistrza.

Podstawy.

Do dalszych działań niezbędny będzie Ci kompilator to dzięki niemu powstanie Twój program. Co to właściwie jest kompilator?? Najprościej mówiąc jest to program ,który tłumaczy nasz kod w sposób zrozumiały dla komputera. Jak wiadomo komputer rozumie tylko liczby binarne czyli ciąg jedynek ‘1’ i zer ‘0’ . Jest to kod maszynowy na , który jest zmieniany nasz kod przez kompilator. Istnieje wiele kompilatorów języka C do pobrania z Internetu. Proponuje w tym kursie do używania jednego z najbardziej popularnych i darmowych kompilatorów języka C - Dev-C++. Czas wziąć się do pracy i napisać nasz pierwszy program. Nasz pierwszy program będzie wyświetlał na naszym ekranie słynne już zdanie: ”Hello Word !”. Oto jak będzie wyglądał kod naszego skromnego programu:

#include #include

int main(){

printf("Hello World !");

system("PAUSE");

}

Na pierwszy rzut oka może to się wydawać trochę straszne. Omówmy kolejne linijki kodu. Polecenie #include jest niezbędne do prawidłowego działania programu. Załącza ono standardową bibliotekę obsługującą wejście i wyjście, czyli odpowiada za wejście danych z klawiatury i wyjście danych na ekran . W pliku stdlib.h znajdują się zapowiedzi funkcji związanych głównie z systemem operacyjnym i z zamianą zmiennych jednego typu na inny typ. Zaczniemy od funkcji konwertujących tekst na liczbę i odwrotnie.Dalej widzimy deklarację pierwszej funkcji int main . Słówko int znaczy ,że funkcja mian zwraca dane typu całkowitego. Funkcja main jest główną funkcją bez niej żaden program nie może zadziałać. Kompilator pod czas kompilacji „szuka” funkcji main to od niej nasz program jak by zaczyna startować. Po słówku main możemy zauważyć dwa nawiasy „( )”.W tych nawiasach umieszczamy to co funkcja ma przyjmować , ale o tym napiszemy w dalszej części naszego kursu . Po deklaracji naszej głównej funkcji widzimy nawias klamrowy „{” od niego zaczyna się ciało funkcji , a na tym nawiasie kończy się „}”. W ciele funkcji umieszczona jest jedna z podstawowych funkcji języka C , funkcja printf . Jak się niełatwo domyślić wysyła ona dane do standardowego strumienia wyjścia czyli na nasz monitor. Funkcja printf wysyła tekst Hello World ! , zauważ ,że jest on umieszczony pomiędzy dwoma nawiasami i cudzysłowami (" "). Na końcu występuje średnik „ ; ” musimy go wstawiać po każdej instrukcji , w naszym przypadku jest nią printf("Hello World !") . Po naszej instrukcji , którą jest funkcja printf występuje kolejna instrukcja - system("PAUSE"); . Zapobiega ona zamknięciu konsoli tuż po wykonaniu naszego programu , bez niej nie zobaczylibyśmy jak działa nasz program , ponieważ tuż po jego zakończeniu konsola została by zamknięta. Czas zobaczyć działanie naszego programu. Uruchamiamy nasz kompilator , a następnie z menu Plik wybieramy Nowy i Plik źródłowy

Pora teraz napis ać nasz program na komputerze . Spróbujmy samemu bez bezmyślnego przepisywania napisać nasz program następnie po naciśnięciu klawisza nastąpi proces kompilacji naszego kodu , a następnie uruchomienie programu.

Jak widzimy nasz program działa poprawnie . Jednak po naszym słowie występuje napis: Aby kontynuować, naciśnij dowolny klawisz… Jest polecenie , za które odpowiada system(”PAUSE”); , czyli przed natychmiastowym zamknięciu konsoli. Spróbujmy napisać nasz program w taki sposób ,aby napis : ” Aby kontynuować, naciśnij dowolny klawisz…” znajdował się pod: „Hello Word !” W tym celu zmodyfikujmy naszą funkcje printf.

#include

#include

int main(){

printf("Hello World !\n"); \\ Jak widzimy po naszym zdaniu występuje znak „\n” ,nowej linii czyli

system("PAUSE");

}

Znak \n jest znakiem specjalnym, oto kilka znaków specjalnych dostępnych w C :

\a – Alarm – sygnał dźwiękowy

\b – cofnięcie jedno miejsce w tekście (backspace)

\f – przejście na początek nowej strony

\n – ustawienie kursora w nowym wierzy (załamanie teksu)

\r - Przejście na początek aktualnego wiersza

\t - Przejście do następnej pozycji w tabulacji linii

\\ - Znak backslash

\” – Znak „

\? – znak ?

Spróbuj napisać około 20 programów wyświetlających tekst : „Jestem zajebisty” z użyciem znaków specjalnych zobacz jak będzie zmieniać się Twój napis w zależności od miejsca , w którym wstawisz znak specjalny.

Teraz spróbuj napisać samemu ten program oczywiście nie staraj się go przepisywać w miarę możliwości staraj działać samodzielnie pozwoli Ci to opanować składnie języka. Jako pierwszą pracę domową napisz 2 programy.(Pamiętaj najpierw na kartce !!! ).

1. Program ,który będzie wyświetlał napis:

W

i

t

a

j

!

2. Program ,który będzie wyświetlał napis:

P r o g r a m u j e

w

ANSI

C.

3. Program ,który będzie wyświetlał napis:

Jes

tem mł odym pro

gramistą :) !!!

! !

Czas na napisanie drugiego programu . Nasz program teraz będzie wyświetlał na ekranie liczbę podaną przez użytkownika. O to kod naszego programu :

#include #include

int main(){

int n;

printf("Podaj liczbe \n");

scanf(“%d”,&n);

printf(“Liczba podana przez ciebie to %d !!!!\n”,n);

system("PAUSE");

}

Widzimy ,że w nowy program jest bardziej „skomplikowany” . Pojawia się tu nowa instrukcja „int n” , int jest to jeden z podstawowych typów danych języka C. Dane typu int przechowują jedynie liczby całkowite ze znakiem. Literka „n” jest to zmienna typu int, która będzie przechowywać naszą liczbę. Więc kompilator zarezerwuje pamięć dla naszej liczby. W zależności jaki kompilatorem się posługujemy zostanie zarezerwowane 2 lub 4 bajty. Dalej występuje znana nam już funkcja printf, która wysyła tekst „Podaj liczbe” .

Nową funkcję jaką tu widzimy jest funkcja scanf , która odczytuje dane zgodnie z podanym formatem. Format danych podajemy umieszczając w cydzusłowie znak %d, który oznacz ,że będą to liczby całkowite. Funkcja ta może przyjmować ,także dane typu zmiennoprzecinkowego czyli float.

Format Typ

%d int – liczby całkowite np. 100 ; 4 ; -234

%f float – liczby zmiennoprzecinkowe np. -234.34; 3.35; 0.523

%s char – strumień znaków np. Ala ma kota

Funkcja scanf przyjmuje wskaźnik &(czytaj ampersand) do zmiennej n typu int(całkowitego). Wskaźnik jest zmienną , która przechowuje adres zmiennej czyli jej „położenie” w pamięci komputera. O wskaźnikach opowiemy później. W naszej funkcji mamy wskaźnik do zmiennej n , którą wcześniej zadeklarowaliśmy. Najprościej mówiąc wskaźnik mówi naszej funkcji gdzie w pamięci będzie umieszczona nasza liczba. Mówiąc bardziej obrazowo zadeklarowaliśmy zmienną n typu int aby zarezerwować pamięć dla naszej liczby. (Pod literką n będzie kryła się nasza liczba to już dla tych co nie rozumieją :D ). Przyjrzyjmy się teraz funkcji printf różni się teraz troszkę od funkcji użytej w naszym pierwszym programie. Jej budowa jest analogiczna do funkcji scanf . Funkcja wyświetla napis: „ Liczba podana przez ciebie to n”

Jako n przyjmujemy wcześniej wprowadzoną liczbę. Występujący format %d „mówi” funkcji, że wyświetlana liczba będzie typu całkowitego.

printf(“Liczba podana przez ciebie to %d !!!!\n”,n);

- funkcja wypisuje ciąg znaków kiedy trafia na znak %d sprawdza co za nim się znajduje u nas jest to literka d, czyli w tym miejscu gdzie występuje znak będzie wstawiona liczba (całkowita ), którą funkcja bierze po „przecinku ” z n , potem funkcja wypisuje ciąg znaków znajdujących się za %d czyli „ !!!!\n ” . Napiszmy program , który będzie wyświetlał dwie liczby jedną zmiennoprzecinkową , a druga całkowitą.

#include #include

int main(){

float m;

int n;

printf("Podaj liczby \n");

scanf(“%f ”,&m);

scanf(“%d ”,&n);

printf(“Liczby podane przez ciebie to %f oraz %d !!!!\n”,m,n);

system("PAUSE");

}

printf(“Liczby podane przez ciebie to %f oraz %d !!!!\n”,m,n);

- funkcja wypisuje ciąg znaków kiedy trafia na znak % sprawdza co za nim się znajduje u nas jest to literka f, czyli w tym miejscu gdzie występuje znak będzie wstawiona liczba (typu zmiennoprzecinkowego ), którą funkcja bierze po „przecinku ” z m , potem funkcja wypisuje ciąg znaków znajdujących się za %f czyli „ oraz ” i natrafia na %d czyli w tym miejscu będzie wstawiona liczba typu całkowitego , która funkcja bierze po drugim przecinku z n. Napiszmy program , który będzie wyświetlał pole prostokąta.

#include

#include

int main(){

float a;

float b;

float wynik;

printf("Podaj bok a\n");

scanf(“%f ”,&a);

printf("Podaj bok b\n");

scanf(“%f ”,&b);

wynik=a*b;

printf("Pole wynosi %f",wynik);

system("PAUSE");

}