Aktualności Forum Graffiti Publicystyka Teleport
  • Kurs języka C - część 3

20.02.2005 13:58, autor artykułu: Grzegorz "Y-Greg" Tarka
odsłon: 7176, powiększ obrazki, wersja do wydruku,

W ostatnim odcinku naszego kursu opisany był mały programik wypisujący w kolumnie liczbę i jej kwadrat. Dziś dokończymy opis funkcji "printf" z poprzedniego przykładu i zajmiemy się pętlą "for".

PRINTF...

#include <stdio.h>

main()
{
   int liczba,kwadrat;   /* deklaracja zmiennych liczba i kwadrat */

   liczba = 1;  /* Przypisanie zmiennej liczba wartości 1 */

/* "Serce" programu,pętla while */

   while ( liczba <= 10) {
      kwadrat = (liczba * liczba);
      printf("%d  %d\n",liczba,kwadrat);
      liczba = liczba + 1;
   }
   return(0);
}


W naszym małym programiku,funkcja printf wypisuje dwie kolumny liczb, w jednej kolumnie wartość zmiennej "liczba", a w drugiej wartość zmiennej "kwadrat".

printf("%d  %d\n",liczba,kwadrat);


Kurs C Printf jest funkcją która wypisuje formatowane dane, jej pierwszym argumentem (u nas w przykładzie "%d %d\n", jest ciąg znaków, które trzeba wypisać. Każdy znak % pokazuje nam miejsce na wartość kolejnego argumentu oraz podaje format w jakim ta wartość będzie wypisywana. Specyfikacja %d wskazuje na argument całkowity, czyli w naszym programie, "printf" spowoduje wypisanie dwóch argumentów całkowitych "liczba" i "kwadrat". Natomiast drugi argument ("liczba,kwadrat") to kolejne odpowiadające naszym przekształceniom ("%d %d") argumenty wywołania funkcji. Mówią one jakie wartości mają mieć nasze kolejne przekształcenia. A teraz może małe przykłady, aby bardziej zrozumieć zasadę działania funkcji "printf":

printf("%d %d %d %d\n"jeden,dwa,trzy,cztery);


Kiedy nasze zmienne (jeden,dwa,...) będą miały wartość tak jak odpowiadające im nazwy (tj. jeden = 1, itd.), to nasz wynik działania funkcji będzie wyglądał następująco:

1 2 3 4


Następny przykład:

printf("Amisię mam od %d lat\n",lata);


Jeżeli zadeklarujemy zmienną "lata" i przypiszemy jej wartość 10, to wynik będzie wyglądał tak:

Amisię mam od 10 lat.


Przyszedł czas żeby opisać specyfikacje inne niż %d (liczba całkowita):
%f - liczba zmiennopozycyjna
%o - liczba w postaci ósemkowej
%x - liczba w postaci szesnastkowej
%c - jeden znak
%s - ciągu znaków
%% - wypisanie znaku %.

Istnieje także możliwość podawania szerokości pola poprzez dopisanie wartości przed %, np.

%6d - oznacza liczbę całkowitą zajmującą co najmniej 6 pól. Wypisywane liczby będą wtedy dosunięte do prawej granicy pola. Można także podawać ilość miejsc po kropce w liczbach zmienno pozycyjnych (%f), np.

%.2f - liczba zmiennopozycyjna z 2 miejscami po kropce
%5.3f - liczba zmiennopozycyjna z 2 miejscami po kropce, zajmująca co najmniej 5 znaków

W trakcie używania funkcji "printf" ważne jest to aby zachować kolejność argumentów, a także odpowiednie specyfikacje, gdyż inaczej uzyska się błędne wyniki. Zerknijmy na przykład:

printf("%d\n",liczba);


zakładając, że zmienna "liczba" będzie miała wartość 8, uzyskamy na ekranie napis "8", ale także można tutaj zastosować bardziej skomplikowane wyrażenie, np.

printf("%d\n",4+4);


Tutaj także otrzymamy wynik "8" albo zakładając że zmienna "numer" ma wartość 5:

printf("%d\n",numer + 5);


W wyniku otrzymamy na ekranie "10".

Wniosek z tego, że tam gdzie musimy podać wartość zmiennej, możemy podać bardziej skomplikowane wyrażenie tego typu.

Warto także zapamiętać, że w języku C ważne jest czy piszemy wielkimi, czy małymi literami, gdyż np. funkcje printf() i Printf(), będą zinterpretowane jako dwie oddzielne funkcje.

PĘTLA "FOR"

W poprzednim odcinku poznaliśmy pętlę "while", a teraz przyszedł czas na inną pętle, a mianowicie "for". Może mały przykład:

#include <stdio.h>

main()
{

int zmienna1;

   for(zmienna1 = 1;zmienna1 <= 10;zmienna1 = zmienna1 + 1) {
      printf("%d\n"zmienna1);
   }

return(0);
}


Program wypisuje w słupku liczby od 1 do 10. Sercem jest tutaj właśnie pętla "for". Zamiast pętli "for" moglibyśmy użyć pętli "while", ale program miałby dłuższy kod żródłowy:

...
zmienna1 = 1;
while(zmienna1 <= 10) {
   printf("%d\n",zmienna1);
   zmienna1 = zmienna1 + 1;
}
...


Ale na czym polega działanie tej pętli? Otóż składa sie ona z trzech cześci oddzielonych średnikami. Część pierwsza, u nas "zmienna1 = 1" to część, która jest wykonywana tylko raz, przed wejściem do właściwej pętli. U nas w przykładzie zmiennej "zmienna1" przypisywana zostaje wartość 1. Druga część "for" to warunek sterujący, który u nas wygląda tak: "zmienna1 <= 10". Jeżeli warunek zostaje spełniony (jest on prawdziwy), to pętla jest wykonywana dalej. Jeżeli warunek nie zostaje spełniony (jest on fałszywy), to następuje koniec pętli. U nas w przykładzie sprawdzane jest czy "zmienna1" jest mniejsza lub równa 10. Jeżeli nie to następuje koniec pętli, jeżeli tak to zostaje wykonana zostaje trzecia część pętli, u nas "zmienna1 + 1", która zwana jest przyrostem. U nas "zmienna1" zostaje zwiększona o 1. Po trzeciej części znów zostaje sprawdzany warunek zawarty w częsci drugiej, potem znów część trzecia i tak w kółko, aż do czasu kiedy warunek stanie się nieprawdziwy, czyli w naszym przykładzie "zmienna1" przekroczy wartość 10.

STAŁE SYMBOLICZNE

Czasem gdy piszemy jakiś skomplikowany program zdarza się, że mamy jakąś liczbę zaszytą gdzieś głęboko w kodzie żródłowym i nie wiemy lub zapomnieliśmy co ona oznacza. W języku C możemy nadać jej nazwę i tutaj z pomocą przyjdą stałe symboliczne. Ich deklaracja wygląda następująco:

#define "nazwa" "zastępująca ją wartość"

    #define JEDEN 1
    #define DWA 2
    #define DZIELNA 28
    #define NAPIS "Jestem napisem"


I od teraz jeżeli w programie pojawi się napis JEDEN, to będzie on interpretowany jak "1",czyli:

printf("%d\n",1);


będzie równo znaczne z:

printf("%d\n",JEDEN);


To tyle na dzisiaj... W następnym odcinku między innymi pobieranie znaków z klawiatury.

 głosów: 1   
1 komentarzostatni: 29.12.2012 09:18
Na stronie SCENA.PPA.pl, podobnie jak na wielu innych stronach internetowych, wykorzystywane są tzw. cookies (ciasteczka). Służą ona m.in. do tego, aby zalogować się na swoje konto, czy brać udział w ankietach. Ze względu na nowe regulacje prawne jesteśmy zobowiązani do poinformowania Cię o tym w wyraźniejszy niż dotychczas sposób. Dalsze korzystanie z naszej strony bez zmiany ustawień przeglądarki internetowej będzie oznaczać, że zgadzasz się na ich wykorzystywanie.
OK, rozumiem