Laboratorium nr 2 1/7 Język C Instrukcja laboratoryjna Temat: Wprowadzenie do języka C 2 Przygotował: mgr inż. Maciej Lasota 1) Wprowadzenie do języka C. Język C jest językiem programowania ogólnego zastosowania (przeznaczenia) i należy do najpopularniejszych języków programowania na świecie. Był i jest nadal ściśle związany z systemem operacyjnym Unix, dla którego został opracowany i stworzony (większość kodu źródłowego Unix'a zostało napisane w języku C). Język C wyposażony jest w podstawowe typy danych, instrukcje sterujące, instrukcje grupowe, instrukcje pętli i podprogramy (funkcje). Nie zapewnia natomiast wieloprogramowości, współbieżności czy też metod synchronizacji, nie ma w nim też instrukcji do manipulowania na ciągach znaków, zbiorach, listach czy też całych tablicach (dodatkowe biblioteki umożliwiają taką funkcjonalność np. pthread-lib, IPC itp.). Przykładowy program w języku C: #include <stdio.h> #include <stdlib.h> #define PI 3.14 float global=213.234; //zdefiniowana stała //zmienna globalna int main(void) { int a; int b; int wynik; printf("podaj liczbe a: "); scanf("%d",&a); //podajemy liczbe a printf("podaj liczbe b: "); scanf("%d",&b); //podajemy liczbe b wynik = (a+b); //dodawanie dwoch liczb a i b printf("wynik dodawania: %d\n",wynik); printf("wynik dodawania: %d\n",(a+b)); /* Tu wyswietlam liczbe PI zadeklarowana jako "stala" oraz zmienna globalna "global"*/ } printf("zmienna globalna: %4.1f\n",global); printf("stala: %4.4f\n",PI); return (0);
Laboratorium nr 2 2/7 2) Typy danych, deklaracja stałych, zmiennych. Podstawowe typy danych: Nazwa typu Rodzaj Liczba bitów Wartość min Wartość max int całkowity 32-2147483648 2147483647 short int całkowity krótki 16-32768 32767 long int całkowity długi 32-2147483648 2147483647 unsigned int całkowity bez znaku 32 0 4294967295 unsigned short int całkowity krótki bez znaku 16 0 65535 unsigned long int całkowity długi bez znaku 32 0 4294967295 char znakowy 8 - - unsigned char znakowy bez znaku 8 0 255 float rzeczywisty pojedynczej precyzji 32-3,4E+38 3,4E+38 double rzeczywisty podwójnej precyzji 64-1,7E+308-1,7E+308 long double rzeczywisty długi 64-1,7E+308-1,7E+308 void typ pusty (bez wartości) Deklaracja stałej: const [typ danych] [nazwa stałej]; Przykład: const int liczba = 2; // stała całkowita Deklaracja zmiennej: [typ danych] [nazwa zmiennej]; Przykład: int liczba; // zmienna całkowita float liczba2 = 2.0; // zmienna rzeczywista + inicjalizacja char znak; // zmienna znakowa char test='a'; // zmienna znakowa + inicjalizacja Wartości do zmiennych możemy przypisywać za pomocą operatora przypisania =, każda zmienna oraz instrukcja w języku C zakończona jest znakiem średnika ;.
Laboratorium nr 2 3/7 3) Operatory arytmetyczne, relacji, logiczne oraz bitowe. Operatory arytmetyczne: * mnożenie, / dzielenie, + dodawanie, - odejmowanie, % modulo (zwraca resztę z dzielenia). Operatory specjalne: +=, przykład x += 2; --> x = x + 2; -=, przykład x -= 2; --> x = x 2; *=, przykład x *= 2; --> x = x * 2; /=, przykład x /= 2; --> x = x / 2; %=, przykład x %= 2; --> x = x % 2; Operatory inkrementacji i dekrementacji: ++prefiks, postfiks++, --prefiks, postfiks--. Operatory relacji: == równy, <= mniejszy lub równy, >= większy lub równy, < mniejszy niż, > większy niż,!= negacja. Operatory logiczne: && iloczyn logiczny (AND), suma logiczna (OR),! negacja logiczna (NOT). Operatory bitowe: & koniunkcja bitowy (AND), alternatywa bitowa (OR), ^ suma modulo (EXOR), ~ negacja.
Laboratorium nr 2 4/7 4) Wyświetlanie danych. Podstawową funkcją do wyświetlania danych w języku C jest funkcja printf(). Funkcja ta zadeklarowana jest w pliku nagłówkowym <stdio.h>. Ogólna postać tej funkcji wygląda następująco: int printf(const char *format,...); lub int printf( format, arg1, arg2,...); Funkcja printf() posiada co najmniej jeden argument tzw. format, będący stałą łańcuchową (const char). Może ona przyjmować ciąg argumentów, każdy argument zostaje wstawiony w odpowiednie miejsce formatu rozpoczynające się od znaku %. Tak stworzony napis zostaje wyprowadzony na standardowe wyjście (stdout -> ekran monitora). Istotną rzeczą jest to, aby liczba argumentów odpowiadała specyfikatorom formatu w tekście formatującym. Pierwszym argumentem funkcji printf() jest tekst formatujący czyli stała znakowa. Znak procenta oznacza rozpoczęcie tzw. specyfikatora formatu. Specyfikator formatu pozwala na wprowadzenie w jego miejsce wartości kolejnych argumentów funkcji printf() (wyjątek stanowi %%, który umożliwia wprowadzenie znaku % ). Znak \ w tekście formatującym umożliwia wprowadzenie tzw. znaków specjalnych. Specyfikator formatu ma postać: % [flaga] [szerokość] [.precyzja] [modyfikator] typ Typ:
Laboratorium nr 2 5/7 Modyfikator: Precyzja: Określa dokładność liczby zmiennoprzecinkowej, czyli liczbę miejsc po przecinku. Szerokość: Określa minimalną szerokość pola w znakach dla argumentów znakowych, oraz ilość liczb przed przecinkiem dla argumentów liczbowych. Flaga:
Laboratorium nr 2 6/7 Znaki specjalne:
Laboratorium nr 2 7/7 5) Wprowadzanie danych. Podstawową funkcją do wczytywania danych w języku C jest funkcja scanf(). Funkcja ta zadeklarowana jest w pliku nagłówkowym <stdio.h>. Ogólna postać tej funkcji wygląda następująco: int scanf(const char *format,...); lub int scanf( format, &arg1, &arg2,...); Funkcja scanf() wczytuje dane ze standardowego wejścia (stdin -> klawiatura) i przekształca je na odpowiednie wartości w zależności od specyfikatora formatu. Pierwszym argumentem funkcji scanf() jest stała znakowa tzw. format. Specyfikatory formatu rozpoczynają się identycznie jak funkcji printf() od znaku %. Argumenty do funkcji scanf() przekazujemy w postaci wskaźników dlatego też używamy przed nazwami argumentów znaku &. Specyfikatory formatu używane w funkcji scnaf() są identyczne jak w funkcji printf(). Dodatkowo też można używać modyfikatorów z funkcji printf(). Używanie modyfikatora dla liczb całkowitych (%ld, %li, %lx, %lo, %lu) powoduje, że wczytana wartość traktowana jest jak long int lub jak unsigned long int. Używanie modyfikatora dla liczba zmiennopozycyjnych (%lf, %le, %le) powoduje, że wartość traktowana jest jak double. Specyfikatory formatu: