Laboratorium nr 2
1/7
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
//zdefiniowana stała
float global=213.234;
//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);
}
Język C
Temat: Wprowadzenie do języka C
Instrukcja
laboratoryjna
2
Przygotował: mgr inż. Maciej Lasota
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: