Język C 1. Brian W. Kernighan, Dennis M. Ritchie - prz

Transkrypt

Język C 1. Brian W. Kernighan, Dennis M. Ritchie - prz
Literatura – Język C
1. Brian W. Kernighan, Dennis M. Ritchie, Język ANSI C,
WNT, Warszawa 1998.
2. Andrzej Zalewski, Programowanie w językach C i C++ z
wykorzystaniem pakietu Borland C++, Nakom, Poznań
1998.
3. Stephen Prata, Język C szkoła programowania,
Wydawnictwo Robomatic, Wrocław 1999.
4. A. Drozdek, D. Simon, Struktury danych w języku C,
WNT Warszawa 1996.
5. Alfred V. Aho, Jeffrey D. Ullman, Wykłady
z informatyki z przykładami w języku C, Helion Gliwice
2003
Język C został stworzony w 1972 roku przez Denisa
Ritchie’go.
Zalety języka C:
1. elastyczne struktury sterowania
2. strukturalny format
3. zwięzły kod źródłowy – niewielki
programów
4. przenośność na inne komputery.
rozmiar
Wady języka C:
1. elastyczność
języka
C
wymaga
większej
odpowiedzialności od programisty,
2. konieczność korzystania ze wskaźników pociąga za
sobą możliwość trudnych do wytropienia pomyłek,
3. zwięzłość języka C, połączona z bogactwem
operatorów, pozwala tworzyć kod źródłowy
charakteryzujący
się
niezwykłym
wprost
zawikłaniem.
Cechy użytkowe języka C:
1. wydajność:
• C jest językiem potrafiącym wykorzystać
możliwości
tkwiące
we
współczesnych
komputerach,
• programy w języku C odznaczają się niewielką
objętością i dużą szybkością działania,
• język C charakteryzuje wysoki stopień precyzji,
utożsamianej zwykle z asemblerem,
• programy w języku C można tak konstruować, aby
osiągnąć albo największą prędkość, albo
największą oszczędność pamięci.
2. przenośność:
• programy w języku C napisane na jednej platformie
systemowej mogą być uruchamiane na innych
natychmiast lub po minimalnych modyfikacjach
(oprócz fragmentów realizujących bezpośredni
dostęp do urządzeń sprzętowych).
3. moc i elastyczność:
• większa część systemu operacyjnego UNIX jak
również wiele kompilatorów i interpretatorów
zostało napisane w języku C.
4.ukierunkowanie na programistę:
• język C oferuje dostęp do sprzętu i pozwala na
operowanie na poszczególnych bitach pamięci,
• udostępnia bogaty wybór operatorów pozwalających
wyrażać się w zwięzły sposób, jest mniej
rygorystyczny niż PASCAL,
• przetwarzanie różnych form zadań wykonuje się
w języku C o wiele prościej,
• większość implementacji języka C zawiera duży
zbiór przydatnych funkcji.
Siedem etapów programowania:
1. określenie celów programu:
• myślenie w kategoriach ogólnych (nie określonego
języka programowania),
• jakie dane są potrzebne,
• jakie zadanie obliczeniowe,
• inne operacje, jakie program musi wykonać,
• informacje, jakie musi przedstawić użytkownikowi
2. projektowanie programu:
• określenie
sposobu
reprezentacji
danych
w programie,
• wybranie metod, które zostaną użyte do ich
przetwarzania.
3. pisanie kodu:
• implementacja projektu programu na kod
źródłowy.
4. kompilacja kodu źródłowego na maszynowy:
• kompilacja – kompilator przetwarza kod
źródłowy na przejściowy (obiektowy),
• linkowanie – linker łączy kod przejściowy
z kodem startowym, który służy jako interfejs
między programem a systemem operacyjnym oraz
kodem funkcji bibliotecznych.
5. uruchomienie programu
plik wykonywalny jest programem, który można
uruchomić pod DOS-em, UNIX-em.
6. testowanie i usuwanie błędów
Okazje do popełniania błędów:
• niewłaściwie opracowany projekt,
• błędnie zaimplementowane dobre pomysły,
• przeoczenie nieoczekiwanych danych wejściowych,
• nieprawidłowe użycie języka C,
• popełnienie błędu w pisowni,
• umieszczenie nawiasu w niewłaściwym miejscu.
Błędy kompilacji (pisowni) – sygnalizuje
kompilator.
Błędy wykonania – poszukiwanie przy pomocy
debuggera.
7. modyfikacja programu
• wykrycie niewielkiego błędu przy intensywnym
wykorzystywaniu programu,
• lepsza metoda jakiejś czynności,
• rozszerzenie o jakąś przydatną funkcję lub
przystosowanie do użytku na innym komputerze.
/*Program p1.c
/*Obliczanie objetosci walca
/*Kompilator:
Turbo C 2.0
*/
*/
*/
#include <stdio.h>
void main()
{
float promien, wysokosc, objetosc;
promien = 3.3;
wysokosc =44.4;
objetosc = 3.1415926* promien * promien * wysokosc;
printf(”Objetosc walca = %f”,objetosc);
}
Objetosc walca = 1519.010254
/*p2.c*/#include<stdio.h>
void main(){float r,h,v;r=3.3;h=44.4;v=3.1415926*r*r*h;printf(”V=%f”,v);}
V=1519.010254
Zestaw znaków języka C:
•
•
•
•
•
duże litery alfabetu łacińskiego (od A do Z)
małe litery alfabetu łacińskiego (od a do z)
cyfry (od 0 do 9)
znaki specjalne ! * + \ ” < # ( = | { > % ) ~; } / ^ - [ : , ? & _ ] ‘ .
znaki dodatkowe jak @ ,$
uwzględniane w łańcuchach znaków lub
w komentarzach
• kombinacje znaków, jak np. \b, \n, \t tzw. Escape-sekwencje reprezentuje jeden
znak
Słowa zastrzeżone (słowa kluczowe, zarezerwowane) – wybrane słowa o szczególnym
dla danego języka znaczeniu, nie wolno ich używać jako np. nazw zmiennych.
auto
break
case
char
const
continue
default
do
double
else
enum
extern
float
for
goto
if
int
long
register
return
short
signed
sizeof
static
struct
switch
typedef
union
unsigned
void
volatile
while
Niektóre kompilatory rozpoznają część, albo i wszystkie, z następujących
”niestandardowych” słów zastrzeżonych:
ada
far
near
asm
fortran
pascal
entry
huge
Podstawowe typy danych:
Typy podstawowe:
int
reprezentuje liczbę całkowitą
char
reprezentuje pojedynczy znak (np. literę alfabetu)
float
reprezentuje liczbę rzeczywistą (pojedynczej precyzji)
double
reprezentuje liczbę rzeczywistą (podwójnej precyzji)
Modyfikatory:
short
long
signed
unsigned
oznacza liczbę krótką
oznacza liczbę długą
oznacza liczbę ze znakiem
oznacza liczbę bez znaku
Możliwy do zadeklarowania zestaw typów danych:
char, unsigned char
int, unsigned , signed , short, unsigned short, long, unsigned long
float, double, long double
Typy danych elementarnych, zakresy wartości oraz reprezentacja maszynowa
(kompilator Turbo 2.0)
Typ
1. znak(bajt)
char
unsigned char
2. liczba całkowita
short
unsigned short
int
unsigned int
long
unsigned long
Zakres wartości
-128 .. 127
0 .. 255
-32768 .. 32767
0 .. 65535
-32768 .. 32767
0 .. 65535
-2147483648 .. 2147483648
0 .. 4294967295
3. liczba rzeczywista
float
-3.4E38 .. –3.4E-38,0,3.4E-38 ..3.4E38
double
-1.7E308 .. –1.7E-308,0,1.7E-308 ..1.7E308
long double -1.1E4932 .. –3.4E-932,0,3.4E-4932 ..1.1E4932
Reprezentacja
1 bajt
1 bajt
2 bajty
2 bajty
2 bajty
2 bajty
4 bajty
4 bajty
4 bajty
8 bajtów
10 bajtów
Stałe w języku C
1. stałe całkowitoliczbowe:
• dziesiętne
zestaw znaków: 0 1 2 3 4 5 6 7 8 9 + • ósemkowe
zestaw znaków: 0 1 2 3 4 5 6 7 + - (pierwszym znakiem
jest zero)
• szesnastkowe
zestaw znaków: 0 1 2 3 4 5 6 7 8 9 a b c d e f A B C D E F
+ - (pierwszymi znakami są zero i małe lub duże x- 0x, 0X)
2. stałe rzeczywiste
zestaw znaków: 0 1 2 3 4 5 6 7 8 9 . + - e E
3. stałe znakowe
Pojedyncze znaki ujęte w apostrofy.
Zestaw znaków:
• cały repertuar „widocznych” znaków ASCII
• escape-sekwencje
NAJWAŻNIEJSZE ESCAPE-SEKWENCJE
Sekwencja
znaków
\a
\b
\t
\v
\n
\f
\r
\”
\’
\?
\\
\0
Wartość ASCII
Znaczenie
7
8
9
11
10
12
13
34
39
63
92
0
Sygnał dźwiękowy (BEL)
Cofnięcie o 1 znak (BS)
Tabulacja pozioma(HT)
Tabulacja pionowa (VT)
Nowa Linia (LF)
Nowa strona (FF)
Powrót karetki(CR)
Cudzysłów
Apostrof
Znak zapytania
Kreska ukośna (backslash)
Znak pusty (null)
4. stałe łańcuchowe
Ciąg dowolnych znaków ujętych w cudzysłowy.
5. stałe symboliczne
Jest to nazwa zastępująca łańcuch znaków
#define NAZWA tekst
/*Program p3.c
/*Obliczanie objetosci walca
/*Kompilator:
Turbo C 2.0
/*Stałe symboliczne
*/
*/
*/
*/
#include <stdio.h>
#define PI
3.1415926
#define PROMIEN
3.3
#define WYSOKOSC
44.4
#define WYNIK
printf(”Objetosc walca = %f”,objetosc)
void main()
{
float promien, wysokosc, objetosc;
promien =PROMIEN;
wysokosc =WYSOKOSC;
objetosc =PI * promien * promien * wysokosc;
WYNIK;
}
Objetosc walca = 1519.010254

Podobne dokumenty