Pierwszy program
#include <stdio.h>
void main(void)
{
printf(“Pierwszy program”);
}
Najważniejsze predefiniowane typy
Typ |
Ilość bajtów |
Zakres ważności |
char, signed char, unsigned char |
1 byte |
od -128 do 127 od 0 do 255 |
short, unsigned short |
2 bytes |
od -32768 do 32767 od 0 do 65535 |
int, unsigned int |
4 bytes |
od -2147483648 do 2147483647 od 0 do 4294967295 |
long, unsigned long |
4 bytes |
od -2147483648 do 2147483647 od 0 do 4294967295 |
float |
4 bytes |
od 1.175494351 E - 38 do 3.402823466 E + 38 |
double |
8 bytes |
od 2.2250738585072014 E - 308 do 1.7976931348623158 E + 308 |
long double |
8 bytes |
od 2.2250738585072014 E - 308 do 1.7976931348623158 E + 308 |
Podstawowe biblioteczne funkcje arytmetyczne (plik math.h)
Wartość bezwzględna
abs(int); // liczby całkowitej
labs(long); //liczby całkowitej typu long
fabs(double); //liczby rzeczywistej
Funkcje trygonometryczne (argument tylko w radianach)
(jeżeli αo jest w stopniach to αrd=
o)
cos(double); sin(double); tan(double);
Odwrotne funkcje trygonometryczne
(wynik w radianach αo =
rd )
acos(double); asin(double); atan(double);
atan2(double, double); ⇒ atan2(y,x) = atan(y/x)
Hiperboliczne funkcje trygonometryczne
cosh(double); sinh(double); tanh(double);
Funkcja wykładnicza, potęgowa, pierwiastek i logarytmy
exp(double); ⇒ exp(x) = ex pow(double, double); ⇒ pow(x,y) = xy
sqrt(double); ⇒ sqrt(x) =
log(double); ⇒ logarytm naturalny
log10(double); ⇒ logarytm o podstawie 10
Funkcja mod
fmod(double, double); ⇒ fmod(x,y) to reszta z dzielenia x przez y
Wczytywanie danych z klawiatury, wydruk wyników na ekran-formatowanie wydruków
#include <conio.h> //zawiera funkcję getchar()
#include <stdio.h> //zawiera funkcję printf() i scanf()
void main()
{
double a;
printf("Podaj wartosc liczby a\n");
scanf("%lf",&a);
printf("%e\n %f\n %10.1f\n", a, a, a);
getchar();
}
liczba wprowadzana:
12345.6789 -0.000234
wydruk
1.234568e+04 -2.340000e-05
12345.678900 -0.000023
12345.7 10 miejsc -0,0
Funkcja scanf() pozwala na wczytanie wprowadzanych danych z klawiatury
Wymaga precyzyjnego podania formatu wczytywanej danej. I tak jeżeli dana jest typu:
char przy wczytywaniu pojedynczych znaków piszemy ”%c”, a przy
wczytywaniu łańcucha znaków ”%s”
float piszemy: ”%f” lub ”%e” (notacja naukowa z wykładnikiem)
double piszemy: ”%lf” literka `l' jakby long float identycznie przy typie
long double
int piszemy: ”%d” lub dla ”długich” ”%ld”
Takich znaków w jednym cudzysłowie piszemy tyle ile chcemy wprowadzić danych.
Przykład wprowadzenie z klawiatury danych: 10 (całk.), 1.234, 'a', „ABC” wymaga w części formatowej funkcji scanf() zapisu: ”%d %f %c %s”.
W drugiej części funkcji należy podać adresy wczytywanych danych, a więc nie np. a ale &a
int a;
float b;
char c, d;
scanf(”%d %f %c %s”,&a, &b, &c, &d);
Funkcja prinf() również wymaga wprowadzenia części formatującej, w którą jednak można wprowadzać dodatkowe znaki (np. tzw. sekwencje specjalne) jak również teksty do wydruku. Przykładowo wyniki rozwiązania równania kwadratowego można przedstawić następująco:
printf(”x1=%f x2=%f\n”,x1 ,x2};
Formatowanie wydruków
Sekwencje specjalne
\n // znak nowego wiersza
\r // znak powrotu karetki
\t // tabulator
\f // znak nowej strony
\b // cofnięcie kursora o jeden znak
\v // pionowy tabulator
\a // sygnał dźwiękowy
\\ // lewy ukośnik
\? // znak zapytania
\' // apostrof
\" // cudzysłów
Podstawowe sekwencje formatujące
%d dziesiętna liczba całkowita
%f liczba zmiennopozycyjna
%g liczba zmiennopozycyjna podwójnej dokładności
%s łańcuch znaków
%c znak
%x liczba całkowita hexagonalna (konwencja "abcdef")
%X liczba całkowita hexagonalna (konwencja "ABCDEF")
Rzut ukośny - napisać program obliczający dla dowolnej chwili położenie pocisku wystrzelonego pod kątem alfa z prędkością początkową v0.
#include <stdio.h>
#include <math.h>
void main()
{
double alfa,v0,t,ws;
double g=9.81;
ws=3.1416/180;
printf("Podaj kat i predkosc poczatkowa oraz czas lotu ");
scanf("%lf %lf %lf",&alfa,&v0,&t);
alfa=alfa*ws;
printf("t=%6.1f sek\n",t);
printf("x=%10.3f m\t",v0*cos(alfa)*t);
printf("y=%10.3f m\n",v0*sin(alfa)*t-0.5*g*t*t);
}
Program rozwiązuje układ dwu równań liniowych metodą Cramera.
#include <stdio.h>
void main()
{
double a1,a2,c1,b1,b2,c2,wx,wy,w;
printf("Podaj wsp. równań a1,a2,c1,b1...");
scanf("%lf %lf %lf %lf %lf %lf",&a1,&a2,&c1,&b1,&b2,&c2);
w=a1*b2-a2*b1;
if (w!=0)
{
wx=c1*b2-c2*a2;
wy=a1*c2-b1*c1;
printf("x=%6.1f \n",wx/w);
printf("y=%6.1f \n",wy/w);
return;
}
printf("Uklad nie posiada rozwiazan\n");
}
INFORMATYKA WYKŁAD 1 Temat: Język C 7
#include - instrukcja dla kompilatora: należy dołączyć do
programu plik biblioteczny (nagłówkowy- stąd h od header)
Plik nagłówkowy zawierający między innymi
instrukcje obsługujące wydruk jego nazwa
umieszczona pomiędzy <...>
Funkcja „main” jedyna, która występuje w każdym
programie języka C. „Ciało” funkcji umieszcza się
w nawiasach klamrowych { }
Funkcja
wydruku na
ekran
Tekst musi być w cudzysłowie i umieszczony w
nawiasach. Każda instrukcja kończona jest
średnikiem - ;
Wydruk całej liczby zajmuje 10 miejsc, w tym jedno miejsce po przecinku
Pomimo dwu instrukcji prinf wydruk
byłby w jednej linii gdyby nie ten
znak (\n)
a1*x+a2*y=c1
b1*x+b2*y=c2