wrl3075.tmp.doc

(879 KB) Pobierz
Robert Chwastek - Język C

Żeliwostop odlewniczy żelaza z węglem, krzemem, manganem, fosforem, siarką i innymi składnikami zawierającymi od 2 do 3,6% węgla w postaci cementytu lub grafitu. Występowanie konkretnej fazy węgla zależy od szybkości chłodzenia. Chłodzenie powolne sprzyja wydzielaniu się grafitu. Także i dodatki stopowe odgrywają tu pewną rolę. Krzem powoduje skłonność do wydzielania się grafitu, a mangan przeciwnie, stabilizuje cementyt. Żeliwo otrzymuje się przez przetapianie surówki z dodatkami złomu stalowego lub żeliwnego w piecach zwanych żeliwiakami. Tak powstały materiał stosuje się do wykonywania odlewów. Żeliwo charakteryzuje się niewielkim - 1,0 do 2,0% skurczem odlewniczym, łatwością wypełniania form, a po zastygnięciu obrabialnością. Wyroby odlewnicze po zastygnięciu, by usunąć ewentualne ostre krawędzie i pozostałości formy odlewniczej, poddaje się szlifowaniu. Odlew poddaje się także procesowi sezonowania, którego celem jest zmniejszenie wewnętrznych naprężeń, które mogą doprowadzić do odkształceń lub uszkodzeń wyrobu. Żeliwo dzięki wysokiej zawartości węgla posiada wysoką odporność na korozję.

Wykres równowagi stabilnego układu żelazo-węgiel i metastabilnego żelazo-cementyt

Żeliwa dzieli się na następujące kategorie:

·         żeliwo szare:

o        szare zwykłe (zawiera grafit płatkowy różnej wielkości)

o        żeliwo sferoidalne (zawiera grafit sferoidalny)

o        żeliwo modyfikowane (zawiera drobny grafit płatkowy)

o        żeliwo wermikularne

·         żeliwo białe

·         żeliwo połowiczne

·         żeliwo ciągliwe (zawiera grafit postrzepiony(kłaczkowy))

·         żeliwo stopowe

Przykłady zastosowania żeliwa:

·         przemysł motoryzacyjny,

·         obudowa skrzyni biegów,

·         piece żeliwne, kaloryfery

·         inżynieria sanitarna (włazy kanałowe, rury, wpusty uliczne)

                                                                                           - Język C

Staliwo, to stop żelaza z węglem w postaci lanej (czyli odlana w formy odlewnicze), nie poddany obróbce plastycznej. W odmianach użytkowych zawartość węgla nie przekracza 1,5%, suma typowych domieszek również nie przekracza 1%. Właściwości mechaniczne staliwa są nieco niższe niż własności stali o takim samym składzie po obróbce plastycznej. Wynika to z charakterystycznych dla odlewów: gruboziarnistości i pustek międzykrystalicznych. Staliwo ma natomiast znacznie lepsze właściwości mechaniczne od żeliwa, w szczególności - jest plastycznie obrabialne, a odmiany o zawartości węgla poniżej 0,25% są również dobrze spawalne. Ze względu na skład chemiczny rozróżnia się staliwa:

·         węglowe - zawierające tylko składniki zwykłe i zanieczyszczenia z przerobu hutniczego

·         stopowe - zawierające dodatkowo wprowadzone celowo domieszki stopowe

Ze względu na własności fizyczne i związane z nimi możliwości praktycznego zastosowania, wyróżnia się staliwa:

·         węglowe

o        zwykłej jakości

o        wyższej jakości

o        najwyższej jakości

Jakość wyznaczona jest określonymi w normach parametrami

·         stopowe

o        manganowe

o        manganowo-krzemowe

o        chromowe

o        chromowo-molibdenowe

o        chromowo-manganowo-krzemowe

o        żaroodporne

o        odporne na korozję (nierdzewne i kwasoodporne)

o        konstrukcyjne do pracy w po

Definiowanie typów

Do definiowania typów służy słowo kluczowe typedef.


 

Przykłady:

typedef x[10]; - definicja typu x, którego elementy będą 10-cio elementowymi tablicami zmiennych typu int.

typedef char (*funkcja)(int a); - definicja typu o nazwie funkcja, którego zmienne będą wskaźnikami na funkcje, o parametrach typu int i zwracających wartości typu char.

Typów zdefiniowanych używa się tak samo jak innych typów wbudowanych języka C:

funkcja f1, f2; - deklaracja dwóch zmiennych typu funkcja.

Deklarowanie tablic wskaźników i wskaźników do tablic.

Podczas deklaracji obowiązują priorytety: najwyższy priorytet mają nawiasy kwadratowe i okrągłe: (), []. Niższy priorytet mają pozostałe modyfikatory, czyli * i nazwa typu. W celu zapisania, że coś jest funkcją nawiasy okrągłe umieszcza się zawsze z prawej strony. Podobnie tablicę oznaczają nawiasy kwadratowe umieszczone z prawej strony. Informację, że zmienna jest wskaźnikiem i jaki ma typ umieszcza się natomiast z lewej strony. Do zmiany kolejności działania modyfikatorów służą nawiasy okrągłe (w tym wypadku zapis o wyższym priorytecie umieszcza się wewnątrz).

Przykłady:

int *d[10]; - deklaracja 10-cio elementowej tablicy wskaźników na int.

int (* d)[10]; - deklaracja wskaźnika na 10-cio elementową tablicę zmiennych typu int.

int * f(); - deklaracja funkcji zwracającej wskaźnik na int

int (* f) (); - deklaracja wskaźnika do funkcji zwracającej wartość typu int

int * (* f) (); - deklaracja wskaźnika do funkcji zwracającej wskaźnik na int


int (* f()) [10]; - deklaracja funkcji zwracającej wskaźnik na 10-cio elementową tablicę zmiennych typu int.

int (*fs[5])(); - deklaracja 5-cio elementowej tablicy wskaźników na funkcje zwracające int.

int * (*fs[5])(); - deklaracja 5-cio elementowej tablicy wskaźników na funkcje zwracające wskaźnik na int.

Funkcje

Funkcja jest pewną wyróżnioną częścią programu, realizującą pewne ściśle określone zadanie. Program w języku C składa się ze zbioru funkcji. Ponadto, może on korzystać z funkcji napisanych przez twórców systemu operacyjnego, kompilatora, a także inne osoby. Funkcje te umieszczone są w specjalnych plikach nazywanych bibliotekami.

Pojęcie funkcji w języku C jest podobne do funkcji w matematyce: funkcja matematyczna otrzymuje pewne parametry (np. liczby, zbiory, itp), wykonuje na nich pewną operację i zwraca wynik swojego działania (np. liczbę). Jako przykład może służyć matematyczna funkcja sinus: sin(30) = 0.5

Do funkcji sinus przekazana zostaje liczba 30 (określająca kąt w stopniach, dla którego sinus ma być policzony) i w wyniku otrzymuje się liczbę 0.5. Z punktu widzenia użytkownika funkcji sin nie jest ważne jak sinus będzie liczony - interesuje nas tylko efekt działania funkcji (w tym wypadku wynik, będący sinusem podanego kąta). Podobnie w języku C - jeśli mamy już funkcję realizującą pewne zadanie, to w innym miejscu w programie nie musimy się zastanawiać jak będzie ono zrealizowane, interesujący jest tylko efekt tej realizacji. Pozwala to znacznie zmniejszyć ilość pamiętanych szczegółów podczas pisania programu. Ponadto w przypadku wystąpienia błędu (funkcja nie realizuje zadania, którego żądamy), łatwiej jest znaleźć miejsce, w którym on wystąpił - nie trzeba przeszukiwać całego programu, ale tylko tę jedną funkcję.

Funkcja składa się z nagłówka i ciała. Nagłówek ma postać:

Przykład:

int line(x1, y1, x2, y2);

<typ_wartości> określa jakiego typu wartość funkcja będzie zwracać.

[parametry_formalne] określają wartości przekazywane do funkcji w momencie wywołania. Wszystkie parametry są przekazywane przez wartość tzn. w momencie wywołania tworzona jest zmienna lokalna o podanej nazwie i do niej jest kopiowana wartość przekazana do funkcji. Zmiana parametrów przekazanych do funkcji, nigdy nie spowoduje zmiany odpowiednich wartości w funkcji wywołującej. W momencie zakończenia funkcji wszystkie zmienne powiązane z parametrami przestają istnieć.

W języku C Kernighan'a i Ritchie'go typy parametrów przekazywanych do funkcji deklarowało się tak jak zmienne, bezpośrednio pod nagłówkiem funkcji:

int line(x1, y1, x2, y2)
int x1, y1, x2, y2;

W języku C++ typy argumentów można deklarować tylko wewnątrz nagłówka:

int line(int x1, int y1, int x2, int y2)

Każdy parametr musi mieć oddzielną specyfikację typu; nie można podać raz nazwy typu dla kilku parametrów. W ANSI C można stosować obydwa wymienione wyżej sposoby deklaracji parametrów. Ciało funkcji składa się z dowolnej ilości deklaracji i instrukcji zamkniętych w nawiasach klamrowych:

void ala()
{
printf(Ala\n");
}

Funkcje mogą być zdefiniowane w innych modułach (plikach) wchodzących w skład programu lub w bibliotekach. Aby kompilator mógł sprawdzić czy do funkcji przekazywane są poprawne argumenty i czy zwracana wartość jest dobrze wykorzystywana musi posiadać informację zawartą w nagłówku funkcji. Dlatego w ANSI C można było (w C++ jest to konieczne) poinformować kompilator o typie i parametrach funkcji przed jej użyciem. Taka informacja składa się z nagłówka funkcji zakończonego średnikiem i nazywana jest prototypem funkcji:

int line (int x1, int y1, int x2, int y2);

W C Kernighan'a i Ritchie'go można było informować kompilator tylko o typie zwracanej wartości, bez możliwości podania liczby i typów parametrów:

int line();

Taka konstrukcja nazywa się predefinicją funkcji.

Jeśli jakaś funkcja nie ma prototypu to kompilator C przyjmuje domyślnie, że zwracana przez nią wartość jest typu int i do funkcji przekazuje się jeden parametr typu int. Jeśli funkcja zwraca wartość innego typu lub wymaga podania innych parametrów, to będzie działać poprawnie pod warunkiem, że w momencie wywołania zostaną przekazane właśnie te wymagane argumenty (kompilator nie dokona sprawdzenia i nie poinformuje o błędzie jeśli argumenty będą inne). W języku C++ wszystkie funkcje przed wywołaniem muszą być zdefiniowane lub posiadać prototyp.

Prototypy funkcji często umieszcza się w specjalnych plikach, nazywanych plikami nagłówkowymi.

Wywołanie funkcji może wystąpić w dowolnym miejscu w programie, w którym może wystąpić wyrażenie języka C. Wywołanie funkcji składa się z nazwy funkcji oraz nawiasów okrągłych, wewnątrz których podaje się wyrażenia oddzielone przecinkami. Na podstawie podanych wyrażeń przed wywołaniem funkcji zostaną obliczone jej parametry aktualne (przekazane do funkcji). Jak z tego wynika, przed wywołaniem pewnej funkcji, może nastąpić wiele wywołań innych funkcji, których wartość będzie potrzebna do obliczenia parametrów aktualnych. Kolejność obliczania parametrów aktualnych jest nieokreślona.

Parametry są przekazywane do funkcji przez wartość tzn. funkcja nie operuje bezpośrednio na przekazanej zmiennej, ale na swojej prywatnej kopii. W ten sposób funkcja nie może zmienić wartości przekazanych parametrów. Informację funkcja przekazuje na zewnątrz za pomocą zwracanej wartości.

Przekazywanie parametru w przypadku wywołania funkcji, której prototyp ma postać następującą:

void f(int k);


Przykłady:

ala(); double x = sin(30);
line(sin(y) * 5, 10, 20, 30);
f(i++, i++); /* Poprawne składniowo, lecz przekazane wartości mogą być różne */
Język C - opis

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).

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.

Instrukcja break Instrukcja break może wystąpić tylko wewnątrz pętli lub instrukcji switch i powoduje wyjście z najbardziej zagnieżdżonej pętli lub instrukcji switch.

Składnia:


 

int i;
...
switch (i)
{

case 1:
case 2:
printf("1 lub 2\n");
break;
default :
break;

}
...

Przykład:

...

Zgłoś jeśli naruszono regulamin