→ Slide 1

Lab. 1 Język C - powtórka

→ Slide 2

Struktura programu

#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;
}
→ Slide 3

Typy zmiennych

Typy zmiennych

→ Slide 4

Operatory

Operatory

→ Slide 5

Funkcja printf() i scanf ()

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; 
}
→ Slide 6

Biblioteka standardowa

pierwiastek.c
#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);
}
→ Slide 7

Instrukcje sterujące

→ Slide 8

Warunek if

→ Slide 9

Pętla while

→ Slide 10

Pętla for

→ Slide 11

Pętla do while

→ Slide 12

Reprezentacja liczb w komputerze

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") ;
}
→ Slide 13

Błędy wynikające z reprezentacji

→ Slide 14

Błąd względny i bezwzględny

Błąd bezwzględny - różnica pomiędzy wartością zmierzoną $x$ a wartością rzeczywistą $x_{0}$

$$\Delta x = x - x_{0} $$

Błąd względny - iloraz błędu bezwzględnego i wartości dokładnej $x_{0}$

$$\delta_x = \frac{\Delta x}{x_{0}}$$

→ Slide 15

Zadanie 1

Treść zadania znajduje się w Moodle pod adresem Zadanie 1

→ Slide 16

Dodatkowe ćwiczenia

Dodatkowe ćwiczenia nie podlegające ocenie.

Ćw. 1

Napisz program znajdujący pierwiastki równania kwadratowego $$y = ax^2 + bx + c$$ dla dowolnych $a, b, c$.

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

Ćw. 2 Napisz program wyznaczający $\sqrt{2}$ 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 $f(x) = a_{n}x^n + \ldots + a_2x^2 +a_1x + a_0$ za pomocą schematu Hornera

Ćw. 4 Napisz program wyznaczający sumę szeregu $$\sum_{n=0}^{\infty} q^{n}=1+q+q^{2}+q^{3}+\ldots \qquad \text{dla}\quad |q| < 1$$

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

Sprawdź wyniki programu dla $q=0.99$ i $k=10^6$. Dlaczego błędy obu przybliżeń się różnią?