ANSI C 4

ANSI C 4



1 ELEMENTARZ

Większość pracy programu jest realizowana przez pętlę while. Obliczenie temperatury w skali Celsjusza i przypisanie zmiennej celsius tej wartości wykonuje instrukcja

celsius = 5 * (fahr-32) / 9;

Mnożenie przez 5 i dzielenie przez 9 zamiast mnożenia po prostu przez 5/9 jest spowodowane tym, że w języku C (jak w wielu innych językach) dzielenie całkowite zaokrągla wynik, to znaczy odrzuca część ułamkową tego wyniku. Liczby 5 i 9 są całkowite, więc wyrażenie 5/9 dałoby w wyniku zero i wtedy wszystkie temperatury Celsjusza miałyby wartość zero.

Ten przykład także mówi coś więcej o działaniu funkcji printf. W rzeczywistości printf jest funkcją formatowanego wypisywania danych. Jej szczegółowy opis znajduje się w rozdz. 7. Pierwszym argumentem funkcji printf jest ciąg znaków, które należy wypisać. Każdy znak % symbolicznie wskazuje miejsce na wartość kolejnego argumentu (tzn. drugiego, trzeciego itd.) oraz podaje format, w jakim ta wartość będzie wypisana. Na przykład specyfikacja %d wskazuje na argument całkowity, więc instrukcja

printf(”%d\t%d\n”, fahr, celsius);

spowoduje wypisanie wartości dwóch argumentów całkowitych fahr i celsius przedzielonych znakiem tabulacji (\t).

Każda specyfikacja przekształcenia (którą wprowadza znak %) zawarta w pierwszym argumencie funkcji printf stanowi parę z odpowiadającym jej (drugim, trzecim itd.) argumentem wywołania tej funkcji. Argumenty muszą być właściwie uporządkowane ze względu na numer i typ specyfikacji, gdyż inaczej możesz uzyskać błędne wyniki.

Przy okazji zwróć uwagę na to, że funkcja printf nie jest częścią języka C - on sam nie definiuje wejścia ani wyjścia. Po prostu printf jest pożyteczną funkcją ze standardowej biblioteki funkcji powszechnie dostępnych dla programów napisanych w języku C. Zachowanie się funkcji printf jest zdefiniowane w standardzie ANSI C, więc jej właściwości powinny być takie same we wszystkich kompilatorach i bibliotekach dostosowanych do standardu.

Aby skoncentrować się na samym języku C, nie będziemy na razie rozwodzić się na temat wejścia-wyjścia aż do rozdz. 7. W szczególności pominiemy formatowane wejście, które tam opisano. Jeśli będziesz zmuszony wprowadzić liczby, to przeczytaj omówienie funkcji scanf w p. 7.4. Funkcja ta jest bardzo podobna do printf z tym, że czyta dane z wejścia zamiast wypisywać wyniki na wyjście.    j

Z programem przekształcania temperatur wiąże się kilka problemów. Najprostszym z nich jest ten, że wynik nie wygląda ładnie, ponieważ liczby w kolumnach nie wyrównane do prawej strony. To da się łatwo naprawić: gdy każdą specyfikację w instrukcji printf uzupełnimy szerokością pola, wówczas wypisywane liczby będł dosunięte do prawej granicy pola. Możemy na przykład napisać

1.2 ZMIENNE I WYRAŻENIA ARYTMETYCZNE

printf("%3d %6d\n”, fahr, celsius);

i w każdym wierszu pierwsza liczba zostanie wypisana w polu dla trzech cyfr, a druga - w polu dla sześciu cyfr; wynik będzie wówczas wyglądał tak

0

-17

20

-6

40

4

60

15

80

26

100

37

Bardziej poważnym problemem jest dokładność wyniku. Wyliczone temperatury Celsjusza nie są zbyt dokładne, zastosowaliśmy bowiem arytmetykę liczb całkowitych; np. odpowiednikiem temperatury 0° F faktycznie jest temperatura ok. -17,8°C, a nie -17. Aby uzyskać dokładniejsze wyniki, musimy zamiast arytmetyki całkowitej zastosować arytmetykę liczb zmiennopozycyjnych. To zaś wymaga paru zmian w programie. Oto jego nowa wersja

#include <stdio.h>

/* wypisz zestawienie temperatur Fahrenheita-Celsjusza dla fahr = 0, 20..... 300; wersja zmiennopozycyjna */

main()

{

float fahr, celsius; int lower, upper, step;

lower = 0;    /* dolna granica temperatur */

upper = 300; /* górna granica */ step = 20;    /* rozmiar kroku */

fahr = lower;

while (fahr <= upper) {

celsius = (5.0/9.0) * (fahr-32.0); printf(”%3.0f %6.1f\n”, fahr, celsius); fahr = fahr + step;

}

}

31


Wyszukiwarka

Podobne podstrony:
ANSI C 7 1 ELEMENTARZ Model wprowadzania i wyprowadzania danych, realizowany przez funkcje z bibli
niestety tak się nie da. Większość dostępnych programów jest płatnych (co widać przeglądając listę
POZNAJMY SIĘ! Program studiów na WIBC jest realizowany przez trzy, reprezentujące różne obszary tema
ANSI C 6 1 ELEMENTARZ Ta ostatnia zmiana jest ilustracją podstawowej zasady języka C: wszędzie tam
ANSI C 0 1 ELEMENTARZ Ćwiczenie 1.8. Napisz program zliczający znaki odstępu, tabulacji i nowego
ANSI C 4 1 ELEMENTARZ I Właściwie dobrane nazwy stanowią jednak dobry komentarz, tak że będziemy z
ANSI C 4 DODATEK A PRZEWODNIK JĘZYKA C_______ wynikiem jest 1; jeśli odnosi się do tablicy, to wyn
ANSI C 4 DODATEK A PRZEWODNIK JĘZYKA C ____—-- stropy jest funkcją zwracającą wartość całkowitą i
134 RALF LISCH 4.2. Historia rozmówców Istotnym elementem osobistego poradnictwa w programowaniu jes
3.    Temat pracy licencjackiej jest ustalany przez studenta wraz z promotorem w 
Przetwarzanie danych procesowych w systemach mechatronicznych •    Jest realizowane p
pożądanego rozmiaru. Osłona źródła jest realizowana przez osłonięcie źródła i mechanizmu ekspozycji
Języki programowania-podstawowe cechy ■ Każdy język programowania jest określony przez swoją
NAUKA DOBRY START Dwie badaczki z UMK zostały stypendystkami programu START realizowanego przez
SQL widziany z punktu widzenia MySQL__Integralność danych-Integralność encji jest realizowana przez

więcej podobnych podstron