wybór środowiska programistycznego IDE

struktura programu

deklaracja zmiennych, podstawowe typy

wczytanie danych i wydruk na ekran (rożne dokładności, liczba miejsc znaczących)

pętle, instrukcje warunkowe

funkcje, ....

tablica, macierze

zapis/odczyt plik

programujemy bez grafiki, ew. wykresy ilustrujące w Excelu, Originie, Matlabie

#include <stdio.h> /* definicja funkcji */ int nwd(int a, int b) { int c; while (b != 0) { c = a % b; a = b; b = c; } return a; } int main() { /* deklaracje zmiennych */ int a, b; /* instrukjce programu */ printf("Podaj dwie liczby calkowite dodatnie: "); scanf("%d %d", &a, &b); if ( a >0 && b > 0) printf("NWD(%d,%d) = %d\n", a, b, nwd(a,b)); else printf("Niepoprawne dane\n"); return 0; }

Typy zmiennych

Operatory

Specyfikatory formatu

#include <stdio.h> /* program wczytuje i wyswietla wartosc podanej liczby rzeczywistej */ int main() { float x; printf("Podaj liczbe: "); scanf("%f", &x); printf("Podales liczbe %.3f \n", x); printf("Notacja naukowa %e \n", x); return 0; }

math.h - funkcje matematyczne
sin(), cos(), sqrt(), pow(), log(),log10(), exp(), ...

stdlib.h - zbiór podstawowych funkcji, np.:

rand() generator liczb losowych

exit() zamknięcie programu

system() uruchomienie polecenia systemowego

time.h - obsługa czasu:

clock() czas wykonywania programu

time() czas od dnia 1 stycznia 1970 roku

stdio.h - obsługa wejścia/wyjścia

Biblioteka standardowa

#include<math.h> #include<stdio.h> int main() { float x, y; scanf("%f", &x); y = sqrt(x); printf("Pierwiastek z %f wynosi %f\n", x, y); }

Warunki:

if

switch - lista wyboru

Pętle:

while

for

do while

Skok

goto - NAJLEPIEJ NIE UŻYWAĆ!!!!

continue - kontynuacja pętli

break - przerwanie pętli lub instrukcji switch

typy całkowite
char, short, int, long
Kod uzupełnień do dwóch

typy zmiennoprzecinkowe (floating point)
float, double
Liczba zmiennoprzecinkowa

Co wyświetli poniższy kod?

#include <stdio.h> int main ( ) { float x = 0.1; if ( x == 0.1 ) printf ( "OK" ) ; else printf ( "Nie OK") ; }

nadmiar (overflow ) - przekroczenie zakresu

niedomiar (underflow ) - zaokrąglenie bardzo małej liczby do 0

błędy zaokrągleń

redukcja cyfr przy odejmowaniu bardzo bliskich sobie liczb zmiennoprzecinkowych

dodawanie (lub odejmowanie) dużej i małej liczby zmiennoprzecinkowej

kolejność operacji arytmetycznych może mieć wpływ na wielkość błędu

Napisz program wyznaczający precyzję obliczeniową (epsilon maszynowy) dla typu float. Porównaj uzyskany wynik z wartością stałej FLT_EPSILON zadeklarowanej w pliku nagłówkowym <float.h>.

Dodatkowe ćwiczenia nie podlegające ocenie.

Ćw. 1

Napisz program znajdujący pierwiastki równania kwadratowego dla dowolnych .

Przy wyznaczaniu pierwiastków tradycyjnym podejściem (z wyznaczeniem delty) może dojść do istotnego błędu zaokrągleń gdy delta jest bliska . Spróbuj zniwelować wpływ tego błędu wykorzystując Wzory Viète’a

Ćw. 2 Napisz program wyznaczający a następnie podnieś wynik do kwadratu. Wypisz wartość bledu względnego uzyskanego wyniku dla typu float oraz osobno dla typu double.

Ćw.3 Napisz program wyznaczający wartość wielomianu za pomocą schematu Hornera

Ćw. 4 Napisz program wyznaczający sumę szeregu

Dla podanych przez użytkownika wartości oraz program wypisuje:

informację, że szereg jest rozbieżny, gdy nie jest spełniony warunek

dokładną wartość sumy szeregu równą

przybliżoną wartość sumy szeregu uzyskaną po dodaniu kolejnych elementów ciągu oraz wartość błędu względnego i bezwzględnego

przybliżoną wartość sumy szeregu uzyskaną po dodaniu kolejnych elementów ciągu w odwrotnej kolejności oraz wartość błędu względnego i bezwzględnego

Sprawdź wyniki programu dla i . Dlaczego błędy obu przybliżeń się różnią?