w13 2


Programowanie w języku C
Literatura
B.Kernighan, D.Ritchie
Język ANSI C
Historia języka C
1969-1973 w Bell Laboratories powstawał system
operacyjny UNIX
koniec lat 60-tych, Martin Richards, język BCPL
1970, Ken Thompson, język B dla minikomputera DEC PDP-7
1970, DEC wprowadza minikomputer PDP-11
1971, Denis Ritchie, język NB (New B)
1972, Denis Ritchie, język C
System UNIX został w 90% napisany w języku C.
Na przestrzeni kolejnych lat powstało wiele
implementacji języka C.
1983 - ANSI stworzyło komitet standaryzacji języka
1988 - powstaje standard ANSI C.
Cechy języka C
mały
połączenie cech języka wysokiego i niskiego
poziomu (łatwość projektowania algorytmów
 optymalność algorytmów)
uniezależnienie języka od maszyny (duża
przenośność oprogramowania)
brak operacji na obiektach złożonych tj. ciągi
znaków, tablice, zbiory, listy
nie ma instrukcji we/wy; jawne wywołanie
funkcji
Przetwarzanie programu
tworzenie kodu zródłowego
edytor tekstowy, rozszerzenie *.c
kompilacja
kod zródÅ‚owy ®ð kod poÅ›redni *.o
linkowanie
kod poÅ›redni + biblioteki ®ð kod
wykonywalny, standardowo a.out
Przetwarzanie programu
Kompilacja i linkowanie
gcc plik.c (powstaje a.out)
Kompilacja, linkowanie i tworzenie pliku
wynikowego o podanej nazwie
gcc plik.c  o plik
Kompilacja i linkowanie programu z kilku
plików
gcc plik1.c plik2.c plik3.c  o plik
Przetwarzanie programu
Tylko kompilacja
gcc  c plik.c
Linkowanie kilku plików z kodem pośrednim
gcc plik1.o plik2.o plik3.o  o plik
#include
main()
/* program zamienia temperaturÄ™ podanÄ… w stopniach Fahrenheita
na
temperaturÄ™ w */
// stopniach Celsjusza
{
float cels, fahr;
printf( Podaj temperature w stopniach Fahrenheita :\n );
scanf( %f , &fahr);
cels= 5.0/9.0 * (fahr  32);
printf( Temperatura w stopniach Celsjusza wynosi : );
printf( %6.2f\n ,cels);
}
Komentarz
/* ciąg znaków */
może zajmować kilka linii
nie jest uwzględniany przez kompilator
służy poprawie czytelności programu
komentarze nie mogą być zagnieżdżane
można zapisać komentarz po znakach \\
do końca linii
deklaracja zmiennych
wszystkie zmienne muszą być zadeklarowane przed
użyciem
deklaracja określa typ i wymienia jedną lub kilka
zmiennych tego typu
int alfa, beta;
char c, tab[1000];
lub
int alfa;
int beta;
char c;
char tab[1000];
deklaracja zmiennych
w deklaracjach można nadawać zmiennym wartości
poczÄ…tkowe:
int i=0;
float eps=1.0e-5;
zmiennym zewnętrznym i statycznym przez
domniemanie nadaje się wartość początkową zero
zmienne bez jawnie określonej wartości początkowej
mają wartości przypadkowe
do deklaracji każdej zmiennej można zastosować
kwalifikator const; wartość tej zmiennej nie będzie
zmieniana
const double e=2.71;
nazwy zmiennych
zbudowane z liter, cyfr, znaku podkreślenia
muszą rozpoczynać się od litery
(nazwy zaczynające się od podkreślenia  zarezerwowane dla
zmiennych w podprogramach bibliotecznych)
rozróżnia się duże i małe litery
długość do 6 znaków
(potem nie rozróżnia się wielkich i małych liter)
nazwy muszą być różne od słów kluczowych
(np. if, else, int, static)
typy zmiennych
char jeden bajt, przechowuje jeden znak
int typ całkowity
float typ zmiennopozycyjny pojedynczej
precyzji
double typ zmiennopozycyjny podwójnej
precyzji
dodatkowo różne rozmiary
short int
long int
różny zakres liczb całkowitych
ograniczenia:
short i int co najmniej 16-bitowe
long co najmniej 32-bitowe
short nie dłuższy niż int
int nie dłuższy niż long
long double
rozmiar zmiennych
kwalifikatory:
signed (ze znakiem liczby)
unsigned (bez znaku liczby)
można stosować razem z typem char
lub dowolnym typem całkowitym
np. dla 8-bitowego obiektu typu char
unsigned char przyjmuje wartości 0..255
signed char  128..127
stałe
całkowite
l, L-long, u, U-unsigned
1234 - 198 12lu 123u - 1956l
Stała ósemkowa zaczyna się od znaku '0 : 012 0777
Stała szesnastkowa zaczyna się od znaku '0x lub  0X :
0x1f, 0XFUL - unsigned long o wartości dziesiętnej
równej 15
zmiennopozycyjne
12.4, 1e-2, 2.3f (float), 67.4L (long double)
stałe znakowe
są w rzeczywistości stałymi
całkowitymi. Ich wartość jest równa
kodowi znaku na maszynie, na której
kompilowany jest program.
Jeśli program jest kompilowany na maszynie
pracującej w kodzie ASCII, to wartość stałej
'0' jest równa 48; wartość stałej 'A' - 65.
stałe symboliczne
Definicja stałej symbolicznej ma postać:
#define MAXLINE 100
umownie zapisuje się dużymi literami
brak średnika
stała tekstowa (napis)
 Uczymy siÄ™ jezyka C
   napis pusty
Każda stała tekstowa kończy się znakiem o
kodzie 0 (zawiera zawsze o jeden znak
więcej). Stała tekstowa jest tablicą znaków
zawierającą odpowiednią liczbę elementów.
Np. "asdf" jest typu char[5].
stała wyliczeniowa
wygodny sposób kojarzenia stałych
wartości z nazwami
enum odp {NO,YES}
pierwsza nazwa na liście ma wartość 0 następna 1,
chyba że wystąpi jawnie podana wartość:
enum miesiac {ST=1, LUTY, MARZ, KW}
funkcja printf
int printf(char *format, arg1, arg2 ...)
przekształca, formatuje i wypisuje swoje
argumenty do standardowego wyjścia
jej wartością jest liczba wypisanych znaków
specyfikacje konwersji  zaczynajÄ… siÄ™ od % a
kończą jednym ze znaków:
funkcja printf
modyfikacje (pomiędzy % a znakiem typu)
minus: dosunięcie wyprowadzanego ciągu do lewego krańca jego pola
plus: wypisanie liczby zawsze ze znakiem
spacja: poprzedzenie wyniku odstępem (o ile nie zaczyna się od + lub 
0  uzupełnianie argumentu zerami
liczba  minimalny rozmiar pola. Jeżeli przekształcony argument jest
krótszy, zostanie uzupełniony z lewej spacjami (z prawej  gdy minus)
(lub zerami)
liczba po kropce  określa precyzję: maksymalną liczbę znaków tekstu,
liczbę cyfr po kropce dziesiętnej w specyfikacjach e, E, f; liczbę cyfr
znaczÄ…cych w specyfikacji g, G
modyfikator długości h, l, L
h  short
l  long lub double
L  long double
printf("120 %% 10\n"); /* 120 % 10 */
printf("%d+%d = %d\n", 2, 3, 2+3); /* 2+3 = 5 */
printf("%-6.3f\n", alfa); konwersja liczby zmiennoprzecinkowej
do postaci [-]mmm.ddd  szerokość pola co najmniej 6,
3 miejsca po przecinku, wynik dosunięty do lewej krawędzi pola.
funkcja scanf
int scanf(char *format, ...)
zwraca ilość poprawnie wczytanych i
przypisanych wartości
pierwszy argument  ciąg znaków
określających sposób konwersji
pozostałe argumenty  adresy
zmiennych, gdzie wpisane będą
przekształcone dane wejściowe
adres zmiennej x : &x


Wyszukiwarka

Podobne podstrony:
W13
W13 MPiS
W13
W13
Elektronika W13
W13 Reak org
W13 Układy transmisji ruchu
W13 IL RRZ cz4
w13 b
W13 SCR QNX
W13 pomaganieXII2011 www
W13 Przestrzeń metryczna
io w13 testowanie
bal w13

więcej podobnych podstron