skrypt_C.pdf
(
558 KB
)
Pobierz
Jêzyk C
Język C
Wprowadzenie – Historia
Język C został napisany przez B. Kernighan'a i D. Ritchie'go. Początkowo język ten był przeznaczony do
tworzenia oprogramowania systemowego (przy jego pomocy został napisany system operacyjny UNIX). W
miarę upływu czasu stał się językiem ogólnego przeznaczenia. Pierwsze wersje systemu UNIX były
rozpowszechniane w szkołach wyższych wraz z pełnym kodem źródłowym napisanym w języku C. Dlatego
język ten dość szybko stał się bardzo popularny. Ponieważ, korzystało z niego wiele osób, więc stworzono
amerykański standard tego języka - ANSI C. Był on znacznie rozszerzony w stosunku do wersji Kernighan'a i
Ritchie'go. W latach osiemdziesiątych powstały kolejne roszerzenia języka C - umożliwiające programowanie
obiektowe. Ich autorem był Bjarne Stroustrup. Swój język nazwał C++ - wskazując, że jest to lepsze C. Również
ta wersja doczekała się w krótkim czasie oficjalnego standardu (ANSI).
KOMPILACJA
1.
Podstawowy schemat kompilacji:
cc first.c
Powoduje kompilację i linkowanie z bibliotekami standardowymi pliku o nazwie first.c. W
wyniku
otrzymujemy program wykonywalny o nazwie a.out.
2
. Kompilacja i łączenie do pliku o podanej nazwie:
cc -o first first.c
Powoduje skompilowanie pliku first.c i utworzenie programu wykonywalnego o nazwie first.
NAJPROSTSZY PROGRAM
#include <stdio.h>
main()
{
printf(“Witam Wszystkich! \n");
}
Program w języku C składa się z funkcji. Funkcja jest wydzieloną częścią programu, realizującą pewne zadanie.
Kompletny program musi zawierać funkcję o nazwie „
main
" - od niej rozpoczyna się wykonanie programu.
Funkcja „
main
" może być umieszczona w dowolnym miejscu. Do programu można dołączać pliki zawierające
nagłówki (opis) funkcji zdefiniowanych w innych plikach lub funkcji systemowych. Dokonuje się tego za
pomocą dyrektywy
#include <nazwa_pliku>
". Plik "
stdio.h
" zawiera nagłówki standardowych funkcji
Wejścia/Wyjścia. Jedną z nich jest funkcja „
printf
" służąca do wypisywania wartości różnych typów na ekranie.
Każda instrukcja w języku C musi być zakończona średnikiem ';'. Instrukcje składające się na kod funkcji
umieszcza się w nawiasach klamrowych '{', '}'
. Uwaga:
duże i małe litery w języku C są rozróżniane!
ZMIENNE
Zmienną określany jest pewien obszar w pamięci komputera, w którym mogą być przechowywane dane. Z
punktu widzenia osoby piszącej program, zmienna posiada następujące cechy podstawowe:
• nazwa (identyfikator)
• typ
• wartość
Nazwa zmiennej pozwala wskazać w programie, o który fragment pamięci nam chodzi.
Wszystkie nazwy
zmiennych przed użyciem muszą być zadeklarowane.
Wartość zmiennej jest tym, co przechowujemy w obszarze pamięci określanym przez nazwę. Wartość może się
zmieniać w dowolnym momencie w czasie wykonania programu. Wartością może być liczba całkowita,
zmiennoprzecinkowa (ułamek dziesiętny), adres w pamięci komputera (tzw. wskaźnik), tekst itp.
W momencie
deklaracji wartość zmiennej lokalnej (zadeklarowanej wewnątrz funkcji) jest nieokreślona tzn. jej
wartość jest przypadkowa; zmienne globalne (deklarowane poza funkcjami) są inicjowane na zero.
IDENTYFIKATORY
Identyfikator (nazwa) służy do nazywania obiektów wchodzących w skład programu napisanego w języku C
(zmiennych, typów, funkcji itp). Identyfikator jest ciągiem znaków składającym się z liter, cyfr i znaków
podkreślenia, rozpoczynającym się od litery lub znaku podkreślenia(duże i małe litery są rozróżniane).
Przykładowe identyfikatory:
i, liczba, j1, J1, data_urodzenia, _koniec
Przykłady niepoprawnych identyfikatorów:
2rok, 1_kwietnia, ab$, czary!mar, a-b
Nie należy używać identyfikatorów mających dwa znaki podkreślenie obok siebie (są one poprawne z punktu
widzenia składni języka C), ponieważ mogą być one używane przez twórców kompilatora do tworzenia
bibliotek, makr itp.
TYPY ZMIENNYCH
Typ zmiennej określa jaką wartość można wpisać do obszaru wskazywanego przez nazwę (czy będzie to liczba
całkowita, zmienno-przecinkowa ... , czy też inny rodzaj danej). W zależności od rodzaju wartości (typu
zmiennej), inny będzie
rozmiar pamięci
potrzebny do jej zapamiętania. Kompilator na podstawie typu określa
jaką ilość pamięci należy przydzielić zmiennej i jakie operacje są na niej dopuszczalne.
Typ
Definicja
Znak
przekształcania
char
zmienna znakowa
%c
int
liczba całkowita
%d dziesiętna
%o ósemkowa
%x szesnastkowa
float
liczba zmiennoprzecinkowa
%f
double
liczba zmiennoprzecinkowa o
podwójnej precyzji
%lf
Funkcje Wejścia/Wyjścia
Funkcja printf
Funkcja printf służy do zapisywania w standardowym strumieniu wyjściowym różnych danych.
Składnia:
#include<stdio.h>
Int printf(char*Format[Wartość,...]);
Opis:
Funkcja printf analizuje najpierw przekazany jako pierwszy argument tekst, a następnie na podstawie informacji
zawartych w tym tekście, wypisuje kolejne wartości. Ilość wartości musi być taka jak wynika z przekazanego
formatu. W szczególnym przypadku do funkcji printf może zostać przekazany tylko format. Tekst przekazywany
jako format, składa się z tekstu, który zostanie wypisany tak jak został przekazany oraz informacji o
koniecznych konwersjach. Informacja o konwersji rozpoczyna się znakiem '%'. Każda taka informacja
odpowiada jednej wartości przekazanej jako kolejny argument. W wypisywanym tekście, kolejne wartości
pojawiają się w miejscu odpowiednich konwersji '%'. Same znaki '%' nie są wypisywane. W przypadku, gdy
chcemy wypisać na ekranie znak '%' w podanym tekście należy wpisać "%%".
Krótki przegląd częściej stosowanych formatów zmiennych:
• %d - liczba całkowita ze znakiem w formacie dziesiętnym
• %ld - liczba całkowita typu long ze znakiem w formacie dziesiętnym
• %i - synonim dla %d
• %x - liczba całkowita bez znaku w formacie szesnastkowym, z użyciem małych liter
• %X - liczba całkowita bez znaku w formacie szesnastkowym, z użyciem wielkich liter
• %o - liczba całkowita bez znaku w formacie oktalnym
• %u - liczba całkowita bez znaku w formacie dziesiętnym
• %e -
liczba zmiennoprzecinkowa
w zapisie naukowym (1.2345e+3)
• %E - liczba zmiennoprzecinkowa w zapisie naukowym (1.2345E+3)
• %f - liczba zmiennoprzecinkowa typu double (float jest automatycznie
konwertowany) w zapisie dziesiętnym (123.45)
• %c - liczba całkowita jest konwertowana na bajt o danej wartości
• %s - łańcuch tekstowy
• %p -
wskaźnik
• %n - do argumentu zapisywana jest ilość dotychczas zapisanych znaków. Istnienie
tego pola prowadzi do dużego niebezpieczeństwa (umożliwia przeprowadzenie
niektórych wariantów ataku typu
format string
) a nie jest zbyt przydatne w praktyce
• %04d - liczba całkowita, uzupełniana zerami do czterech miejsc.
• %.2f – liczba zmiennoprzecinkowa typu double z dokładnością do dwóch miejsc po
Przykłady:
printf("Dzisiaj jest wtorek!\n");
/* Dzisiaj jest wtorek */
printf("120 %% 10 = 0\n");
/* 120 % 10 = 0 */
printf("xx%10syy\n", "Ala");
/* xx Alayy */
printf("xx%-10syy\n", "Ala");
/* xxAla yy */
printf("%d+%d = %d\n", 2, 3, 2+3);
/* 2+3 = 5 */
Funkcja scanf
Funkcja scanf odczytuje dane ze standardowego strumienia wejściowego, wykonuje ich konwersję w zależności
od podanego formatu i zachowuje rezultat w podanym miejscu w pamięci.
Składnia
:#include<stdio.h>
Int scanf(char*Format[,wskaźnik,...]);
Opis:
Funkcja scanf analizuje najpierw przekazany jako pierwszy argument tekst, a następnie na podstawie informacji
zawartych w tym tekście, odczytuje ze standardowego strumienia wejściowego kolejne wartości. Ilość wartości
musi być taka jak wynika z przekazanego formatu.
Tekst formatu może zawierać następujące znaki:
• Spacji, tabulacji, nowej linii lub wysunięcia strony. Każdy z tych znaków powoduje odczyt wejścia aż
do napotkania następnego znaku nie będącego spacją, tabulacją, nową linią lub znakiem wysunięcia
strony. Końcowe znaki spacji, tabulacji, nowej linii i wysunięcia strony nie są odczytywane.
• Dowolnej litery z wyjątkiem '%', która musi odpowiadać takiej samej literze w strumieniu wejściowym
• Konwersji rozpoczynającej się znakiem '%'
Funkcja scanf stosuje te same formaty zmiennych, które stosuje funkcja printf.
Przykład:
#include <stdio.h>
void main(void)
{
int a,b;
int wynik = 0;
printf("Liczba1 = ");
scanf("%d", &a);
printf("Liczba2 = ");
scanf("%d", &b);
wynik = a+b;
printf("%d + %d = %d\n", a, b, wynik);
}
Instrukcje
Wyrażenie zakończone średnikiem jest uważane za instrukcję. Na przykład: i+1 jest
wyrażeniem, podczas gdy i+1; jest instrukcją. Oto przykłady innych instrukcji:
;
instrukcja pusta
if
(wyrazenie) instrukcja
if
(wyrażenie) instrukcja1
else
instrukcja2
while
(wyrażenie) instrukcja
do
instrukcja
while
(wyrażenie);
for
(wyrażenie1; wyrażenie2; wyrażenie3) instrukcja
break;
switch
(wyrażenie_całkowitoliczbowe) {
case
stała1: instrukcja1
break
;
case
stała2:
instrukcja2
break
; . . . .
default
: instrukcja
break;
}
continue;
goto
etykieta;
return;
//opis niżej
return wyrażenie;
Instrukcja return
Powoduje wyjście z aktualnie wykonywanej funkcji. Instrukcja return może wystąpić w dowolnym miejscu w
ciele funkcji. Opisywany rozkaz może być wywołany z podaniem wyrażenia lub bez. Jeśli wyrażenie zostanie
podane, to jego wartość zostanie obliczona przed wyjściem z funkcji i zwrócona na zewnątrz.
Składnia:
return;
lub
return wyrażenie;
Przykład:
long silnia(int n)
{
long wynik;
int i;
if (n <= 0) return 1;
wynik = 1;
for (i = 1; i <= n; i ++)
wynik *= i;
return wynik;
}
STAŁE ZNAKOWE
Zapis
Opis
\n
nowa linia
\t
tabulacja pozioma
\v
tabulacja pionowa
\b
skasowanie znaku na lewo
\a
sygnał dźwiękowy (alert)
\\
backslash
\?
znak zapytania
\'
apostrof
\"
cudzysłów
Operatory
operator
opis operatora
przykład
operatory nawiasowe i selektorowe
()
wywołanie funkcji
getc(stdin)
[]
odwołanie do elementu tablicy
k[17]
->
selekcja pola struktury lub unii
wskazywanej przez wskaźnik
wsu -> pole
.
odwołanie do elementu struktury su.c
operacje jednoargumentowe
!
negacja logiczna
!1
daje
0
!0 daje 1
~
uzupełnienie do jedynki lub negacja
bitowa
~0x7f
+
plus jednoargumentowy
+n
-
minus jednoargumentowy
-n
++
preinkrementacja
lub postinkrementacja
++i
i++
--
dekrementacja
--i lub i--
*
wkazanie pośrednie (wyłuskanie) *p_k
&
adres elementu
&n
Plik z chomika:
swider_007
Inne pliki z tego folderu:
20090618068(1).jpg_320x320
(22 KB)
20090617045(1).jpg_170x128
(7 KB)
20090623100(1).jpg_56x42
(4 KB)
wyk6_mnoz(1).dev
(0 KB)
mnożenie(1).cpp
(0 KB)
Inne foldery tego chomika:
Matlab
semestr I
semestrIII
Zgłoś jeśli
naruszono regulamin