wykłady informatyka 1
DESCRIPTION
ÂTRANSCRIPT
Informatyka I - wykład 1
WstępZmienne i typy
Wprowadzanie i wyprowadzanie danychPodstawowe operacje
Slajd 1/18 Informatyka I – wykład 1 G.P.Korbaś
Kompilatory i źródła nauki:
● Dobry będzie każdy kompilator zgodny z ANSI C++ i ISO C++. Można używać np. Borland C++ Builder 6 lub Dev C++ - są one darmowe i łatwe do pozyskania. W kompilator zaopatrzyć się jak najszybciej!
● Książek na temat C++ jest bardzo dużo i należy dobrać jedną, dwie do swojego sposobu rozumowania – znów zwracać uwagę, czy autor deklaruje zgodność z ANSI C++ i ISO C++.
● Doskonałym źródłem informacji jest internet. Jest sporo darmowych kursów C++, a różne fora dyskusyjne wypełnione są dyskusjami o tej tematyce.
● Studiowanie w tym przypadku nie ma sensu jeśli nie będzie się samodzielnie pisać programów. Uwaga! Nie przepisywać - pisać!
Slajd 2/18 Informatyka I – wykład 1 G.P.Korbaś
Co to znaczy 'programować w C++':
● Ponieważ procesor rozpoznaje jako polecenia jedynie odpowiednio ułożone liczby – trzeba mu podać ciąg liczb.
● Dla nas liczby są niewygodne – łatwiej operować językiem programowania typu C++
● Tworzymy pliki z poleceniami w C++ a odpowiedni program (kompilator) tłumaczy nasz program na liczby właściwe dla odpowiedniego procesora
● Korzyści z takiego postępowania są wyraźne!
Slajd 3/18 Informatyka I – wykład 1 G.P.Korbaś
Program 1a.Program wypisuje na ekranie tekst “Ala ma kota” oraz w następnej linijce “i psa”. Następnie program czeka na podanie dowolnego znaku.
#include <iostream>using namespace std;int main(){cout << "Ala ma kota\ni psa\n";char x;cin >> x;return 0;}
Slajd 4/18 Informatyka I – wykład 1 G.P.Korbaś
Uwagi do programu 1.● #include <plik> – jest dyrektywą preprocesora, która dołącza
zewnętrzne pliki do naszego programu – tu: plik iostream, który zawiera definicje strumieni wejścia i wyjścia
● using namespace std; – określa tzw. przestrzeń nazw – zostanie to omówione później
● int main() - jest specjalną, główną funkcją, którą musi zawierać każdy program C++
● cout << "Napis"; – oznacza wysłanie ciągu znaków do strumienia wyjściowego (zwykle ekran)
● \n – to specjalny znak: przejdź do nowej linii● char x; – oznacza definicję zmiennej x typu char (jeden znak)● cin >> x; – pobranie ze strumienia wejściowego znaku do x● return 0; – oznacza: zakończ działanie funkcji i zwróć 0● {} - początek i koniec bloku poleceń, np. dla funkcji
Slajd 5/18 Informatyka I – wykład 1 G.P.Korbaś
Program 1b.Program wypisuje na ekranie tekst “Ala ma kota” oraz po tabulacji “i psa”. Następnie program czeka na podanie dowolnego znaku. Wypisuje ten znak i ponownie czeka na podanie znaku.
#include <iostream>using namespace std;int main(){cout << "Ala ma kota\ti psa\n";char x;cin >> x;cout << x << endl;cin >> x;return 0;}Jeśli podczas działania programu zamiast znaku wprowadzi się tekst (np. "Kot") - program kończy się. Nie istnieje jednoznaczna zamiana tekstu na znak. Nie jest prawdą, że do zmiennej x zostanie wprowadzony pierwszy znak tekstu.
Slajd 6/18 Informatyka I – wykład 1 G.P.Korbaś
Inne uwagi:
Podstawowe typy:
int - typ całkowitoliczbowyfloat - typ zmiennoprzecinkowy (pojedynczej precyzji)double - typ zmiennoprzecinkowy (podwójnej precyzji)char - typ znakowyUwaga: pisząc znaki w programie umieszcza się je w apostrofach, np.: 'a', 'U'. Teksty umieszcza się w cudzysłowach, np.: „Ala ma kota”, „a”.bool - typ logicznyUwaga: zmienna typu logicznego może przyjmować może przyjmować dwie wartości: true (prawda) albo false (fałsz). Można je jednak również traktować jako liczby (zależnie od implementacji zwykle odpowiednio 1 lub 0).
Slajd 7/18 Informatyka I – wykład 1 G.P.Korbaś
Inne uwagi:
Podstawowe operacje:
a=b -wpisanie do zmiennej a wartości zmiennej ba+b -dodawanie a i ba-b -odejmowanie a i ba*b -mnożenie a przez ba%b -reszta z dzielenia a przez ba/b -dzielenie a przez bUwaga: jeśli zarówno a jak i b są zmiennymi lub stałymi całkowitymi to wykonywane jest dzielenie całkowite; jeśli a lub b jest zmienną lub stałą zmiennoprzecinkową wówczas wykonywane jest dzielenie zmiennoprzecinkowe).
Slajd 8/18 Informatyka I – wykład 1 G.P.Korbaś
Program 2a.Program pobiera dwie liczby rzeczywiste oraz wypisuje ich średnią arytmetyczną.#include <iostream>using namespace std;int main(){double l1,l2;double wynik;cout << "l1=";cin >> l1;cout << endl << "l2=";cin >> l2;wynik = (l1 + l2) / 2;cout << endl;cout << "wynik=" << wynik;cout << endl;char x;cin >> x;return 0;}Slajd 9/18 Informatyka I – wykład 1 G.P.Korbaś
Uwagi do programu 2a.
● double l1, l2 – definiuje dwie zmienne l1 i l2 typu double (liczba zmiennoprzecinkowa)
● endl - to specjalny znak: przejdź do nowej linii● wynik = (l1 + l2) / 2 – oznacza: do zmiennej wynik wpisz
wartość obliczoną jako suma l1 i l2 podzielona przez 2
Slajd 10/18 Informatyka I – wykład 1 G.P.Korbaś
Program 2b.Program pobiera dwie liczby całkowite oraz oblicza ile razy liczba 2 mieści się całkowicie w sumie tych liczb. Wykonywane jest dzielenie całkowitoliczbowe.#include <iostream>using namespace std;int main(){int l1,l2;cout << "l1="; cin >> l1;cout << endl << "l2="; cin >> l2;cout << "wynik=" << (l1+l2)/2;cout << endl;char x;cin >> x;return 0;}
Slajd 11/18 Informatyka I – wykład 1 G.P.Korbaś
Uwagi do programu 2b.
Program jest bardzo podobny do programu 2a, ale jeśli wprowadzimy liczby l1=2 oraz l2=3 to wyniki obu programów będą różne. W programie 2a wykonywane jest dzielenie zmiennoprzecinkowe, a w programie 2b dzielenie całkowite.
Dzielenie zmiennoprzecinkowe jest wykonywane jeśli dzielna lub dzielnik jest typu zmiennoprzecinkowego.
Jak poprawić program 2b, aby typy danych były int, ale wynik był poprawny?
Slajd 12/18 Informatyka I – wykład 1 G.P.Korbaś
Program 2c.Program pobiera dwie liczby całkowite oraz oblicza ich średnią arytmetyczną.
#include <iostream>using namespace std;int main(){int l1,l2;cout << "l1="; cin >> l1;cout << endl << "l2="; cin >> l2;cout << "wynik=" << (l1+l2)/2.0;cout << endl;char x;cin >> x;return 0;}
Slajd 13/18 Informatyka I – wykład 1 G.P.Korbaś
Program 2d.Program pobiera dwie liczby całkowite oraz oblicza ich średnią arytmetyczną.Rzutowanie typów. Polecenie system.
#include <iostream>#include <cstdlib>using namespace std;int main(){int l1,l2;cout << "l1="; cin >> l1;cout << endl << "l2="; cin >> l2;cout << "wynik=" << double(l1+l2)/2;cout << endl;system("pause");return 0;}
Slajd 14/18 Informatyka I – wykład 1 G.P.Korbaś
Program 3.Program pobiera liczbę (druga liczba jest określona w kodzie programu) i wypisuje teksty i liczby w kolumnach.
#include <cstdlib>#include <iostream>using namespace std;int main(){double x,y;cin >> x; //Podaj na przykład 123456y=2e-4;cout.precision(3);cout.width(10); cout<<"Pierwsza:";cout.width(15); cout<<x<<endl;cout.precision(4);cout.width(10); cout<<"Druga:";cout.width(15); cout<<y<<endl;system("PAUSE");return 0;}Slajd 15/18 Informatyka I – wykład 1 G.P.Korbaś
Uwagi do programu 3.
Obiekty cin i cout posiadają również swoje metody (funkcje), np.:cout.precision(n)-dla reprezentacji zmiennoprzecinkowej (domyślnej) określa wyświetlanie liczb do n cyfr znaczącychcout.width(n) -określa szerokość wyświetlanej zmiennej na n znaków
Liczby zmiennoprzecinkowe mogą być zapisywane i wprowadzane przez użytkownika za pomocą notacji naukowej, np.:2e12 -oznacza 2⋅1012
-5e-4 -oznacza −5⋅10−4
W programie pokazano też jak umieszczać komentarz ograniczony do jednej linijki (za znakami //). Komentarz, który ma więcej niż jedną linijkę ujmujemy pomiędzy znaki /* oraz */
Slajd 16/18 Informatyka I – wykład 1 G.P.Korbaś
Program 4.Program przedstawia efekty rzutowania typów
#include <cstdlib>#include <iostream>using namespace std;int main(){double x;int y;/*Przykład rzutowaniaz double na int i odwrotnie*/cin >> x; //Podaj na przykład 12.55cin>> y; //podaj na przykład 12cout << x << ' ' << (int) x << endl;cout << y << ' ' << (double) y << endl;cout << y/x << ' ' << y/int(x) << endl;system("PAUSE");return 0;}Slajd 17/18 Informatyka I – wykład 1 G.P.Korbaś
Uwagi końcowe:
● Należy jak najszybciej rozpocząć próby z własnymi programami!
● Po każdym wykładzie będzie zadana lista zadań – trzeba je umieć rozwiązać z pełnym zrozumieniem!
● Nie chodzi o to aby mieć rozwiązanie, ale aby je rozumieć i umieć rozwiązać samodzielnie.
● Aby to uwypuklić łącznie z listą zadań publikowane są przykładowe rozwiązania. Ponadto podobne zadania i rozwiązania są w skrypcie.
● Na ćwiczeniach należy umieć rozwiązywać problemy zbliżone (można je sobie samemu wymyślać lub zaczerpnąć ze skryptu)
● Osoby, które mimo szczerych chęci i prób czegoś nie zrozumiały lub nie potrafią rozwiązać, zachęcam do konsultacji
Slajd 18/18 Informatyka I – wykład 1 G.P.Korbaś