background image

 

 

Programowanie

w języku C

Programowanie

w języku C

© 2012

Grzegorz Łukawski & Maciej Lasota & Barbara Łukawska

Politechnika Świętokrzyska w Kielcach

Wykład nr 2:

Podstawowe cechy języka C

Kompilator gcc

Podstawy języka C

Zmienne

Podstawowe operatory

background image

 

 

Cechy języka C

Język C jest językiem względnie „niskiego poziomu”, tzn. operuje na danych 
na  których  pracuje  bezpośrednio  procesor  (znakach,  liczbach  i  adresach), 

podobnie jak język asemblera.

W  języku  C  istnieje  bardzo  mało  abstrakcyjnych  typów  danych, 

w przeciwieństwie np. do języka Pascal.

Dzięki tym cechom język C zapewnia maksymalną wydajność.

W  języku  C  nie  istnieją  operacje  na  złożonych  elementach,  jak  np.  ciągi 

znaków, listy lub zbiory. Nie ma wbudowanych operacji wejścia/wyjścia (zapis 

i odczyt plików)...

Wszystkie  te  mechanizmy  dostępne  są  poprzez  wywoływania  odpowiednich 
funkcji z bibliotek standardowych.

background image

 

 

Biblioteki

standardowe

Elementy składowe kompilatora ANSI C

Język C

preprocesor

kompilator

linker

ANSI C

CURSES

Biblioteki 

zewnętrzne

background image

 

 

Cechy języka C

Język C jest językiem  o  szerokim spektrum zastosowań:  od programowania 

systemów  wbudowanych  (sterowników),  przez  programowanie  systemowe 
(jądro systemu Unix), po różnego rodzaju aplikacje.

Kod źródłowy programu w języku C ma strukturę swobodną – formatowanie 

kodu nie jest wymagane, ale zalecane!

Rdzeń  języka  zawiera  bardzo  mało  słów  kluczowych  –  jest  łatwy  do 
przyswojenia, lecz sprawne korzystanie z niego wymaga praktyki...

background image

 

 

background image

 

 

Kompilacja

Uruchomienie

Kompilacja

i uruchomienie

background image

 

 

Podstawowe elementy języka C

Każdy program w języku C składa się z funkcji i zmiennych.

Funkcja  główna  main()  to  główny  element  programu,  obowiązkowy 

w każdym programie. Od tego miejsca zaczyna się jego wykonanie.

Identyfikatory (nazwy zmiennych i funkcji) muszą zaczynać się od litery lub 

znaku podkreślenia (_), nie mogą być takie same jak słowa kluczowe języka.

Małe i wielkie litery są rozróżniane:

licznik, Licznik

to dwie różne zmienne!

background image

 

 

/* Komentarz nr 1 */

// Komentarz nr 2

#include

 

<stdio.h>

// Biblioteka

int

 main() {

puts(”Hello PSk!”);

// Wywołanie funkcji

return

(

0

);

// Koniec programu

}

Drugi program w języku C

Po większości instrukcji języka C należy umieścić średnik;

Instrukcje  rozpoczynające  się  od  znaku  #  to  dyrektywy  dla 

preprocesora.

background image

 

 

Wartości stałe w języku C

Stałe liczbowe (liczby):

Liczby bez żadnych dodatkowych znaków traktowane są jako zapisane w kodzie 

dziesiętnym.

Liczby szesnastkowe poprzedzone są sekwencją 0x, np:

0x12AB, 0x12aa55ff, 0x0000

Stałe znakowe:

Pojedynczy znak umieszczony w apostrofach zamieniany jest na jego kod 
ASCII, np.:

'A', 'b', ' ', '1'

Stałe znakowe traktowane są na równi ze stałymi liczbowymi!

UWAGA!
W języku C nie istnieją specjalne instrukcje operujące na znakach. Znaki 
(ich kody ASCII) traktowane są jak liczby całkowite!

background image

 

 

Stałe napisowe w języku C

3

'A' 'b' 'c'

Pascal:

0

'A' 'b' 'c'

C:

Stałe napisowe (napisy, ciągi znaków):

Umieszczane są między znakami cudzysłowów ” ”

Każdy ciąg znaków uzupełniany jest niejawnie kodem 0 (zero).

Znaki specjalne:

\n

Nowy wiersz (LF)

\t

Tabulacja

\”

Znak cudzysłowu

\\

Backslash

Przykład:

puts(”Pierwszy wiersz\ndrugi\ntrzeci”);

background image

 

 

Typy całkowite w języku C

Nazwa

Opis

int

Liczba 16, 32 lub 64-bitowa ze znakiem*

short int

short

„Krótka” liczba całkowita ze znakiem – 16 bitów

long int

long

„Długa” liczba całkowita ze znakiem – 32 bity

long long

„Bardzo długa” Liczba całkowita ze znakiem – 64 bity

char

ZNAK lub liczba całkowita 8-bitowa (ze znakiem lub 

bez)*

signed ...

Wymuszenie typu całkowitego ze znakiem

unsigned ...

Wymuszenie typu całkowitego bez znaku – tylko liczby 

dodatnie lub 0

Porównanie zakresów typów ze znakiem i bez znaku:

signed char → od -128 do 127

unsigned char → od 0 do 255

short → od -32768 do 32767

unsigned short → od 0 do 65535

background image

 

 

Przybliżony zakres wartości typów float dla komputera PC z procesorem 32 
bitowym:

Typy zmiennoprzecinkowe w języku C

Nazwa

Opis

float

Liczba zmiennoprzecinkowa ze znakiem pojedynczej 

precyzji

double

Liczba zmiennoprzecinkowa ze znakiem podwójnej 

precyzji

Wynik operacji na liczbach tego typu może być przybliżony!

Liczba  podwójnej  precyzji  przechowuje  dokładniejszą  wartość  (więcej 

miejsc po przecinku).

10

-38

0

-10

-38

10

38

-10

38

background image

 

 

INT_MIN = -2147483648

INT_MAX = 2147483647

SHRT_MIN = -32768

SHRT_MAX = 32767

USHRT_MAX = 65535

Operator sizeof() zwraca liczbę bajtów które zajmuje typ lub zmienna, np.:

sizeof(long int) → 4
sizeof(char) → 1

Zakres i wielkość zmiennych

#include <limits.h>

Epsilon

 – najmniejsza liczba x taka, że 

1.0 + x != 1.0

FLT_MIN = 1.175494e-038

FLT_MAX = 3.402823e+038

FLT_EPSILON = 1.192093e-007

DBL_MIN = 2.225074e-308

DBL_MAX = 1.797693e+308

DBL_EPSILON = 2.220446e-016

#include <float.h>

background image

 

 

Przykłady:

int x; int y;
int x, y;
int x=0, y=10;
float zmienna;
double suma = 0.01;

x = sizeof(y);

Deklaracja zmiennych

typ   nazwa_zmiennej;

background image

 

 

Miejsce deklaracji zmiennych

#include <stdio.h>

int zmienna1;

// Zmienne globalne

float suma;

int main() {

int x, y, z;

// Zmienne lokalne

double iloczyn = 0;

… <instrukcje> …
return(0);

}

UWAGA!
Wartością początkową zmiennych globalnych jest zawsze zero. Wartość 
początkowa zmiennych lokalnych jest nieokreślona!

background image

 

 

scanf(format, zmienne...);

scanf(”%d”, 

&

liczba);

Wczytywanie i wyświetlanie wartości zmiennych

Ciąg formatujący

Typ zmiennej

Formatowanie

%d

%hd
%ld

int

short, char

long

Liczba całkowita dziesiętna ze 
znakiem

(signed)

%u

%hu
%lu

int

short, char

long

Liczba całkowita dziesiętna bez znaku 

(unsigned)

%x, %X

%hx, %hX
%lx, %lX

int

short, char

long

Liczba całkowita w zapisie 

szesnastkowym

%f, %e, %E

%lf, %le, %lE

float

double

Liczba zmiennoprzecinkowa

%c

char

Znak ASCII

printf(format, zmienne...);

printf(”%d”, liczba);

#include <stdio.h>

background image

 

 

printf(”Liczba = %d\n”, n);

Liczba = 123

printf(”x = %f, y = %f”, zm_x, zm_y);

x = 10.01, y = 33.0

printf(”ZMIENNE:\n%d, %f, %lf\n”, a, suma, iloczyn);

ZMIENNE:
1, 33.4, 10023.001

Wczytywanie i wyświetlanie wartości zmiennych

Przykłady:

background image

 

 

Podstawowe operatory języka C

Operatory arytmetyczne:

+ – * / %

Operator przypisania:

=

Operatory jednoargumentowe:

+ –

Nawiasy okrągłe pozwalają zmienić kolejność obliczeń.

x = 2*y+5*3;
y = y-100;
y = x%2;

y = y*2/x*3;
y = y*2/(x*3);

y = -y;
y = +y;

x = y = 0;

Wartość początkowa zmiennej może być wynikiem obliczeń:

int suma = (x*y + 100) / 10;

background image

 

 

Na 

początku 

każdego 

bloku 

można 

zadeklarować nowe zmienne lokalne.*

Zachowanie  porządku  w  programie  zapewnia 

stosowanie wcięć (tabulacji).

Każda klamerka musi mieć swoją parę!

Bloki instrukcji

*Standard  C99  dopuszcza  deklarację  zmiennych 
w dowolnym miejscu w kodzie programu!

int main() {

int x;
{

blok1;
{

blok2;

}

}
{

blok3;

}
return(0);

}

{ instrukcje }

background image

 

 

#include <math.h>
Argument i wyniki funkcji typu double. Kąty w radianach!

Wybrane funkcje i stałe:

Biblioteka funkcji matematycznych

sin(x), cos(x), tan(x)

funkcje trygonometryczne

sinh(x), cosh(x), tanh(x)

jw. hiperboliczne

fabs(x)

wartość bezwzględna liczby x

pow(x,y)

x do potęgi y

sqrt(x)

pierwiastek kwadratowy z x

M_PI

wartość stała liczby π


Document Outline