Wstęp do programowania

Slides:



Advertisements
Podobne prezentacje
Język C/C++ Funkcje.
Advertisements

Wstęp do programowania
C++ Paweł Rzechonek Instytut Informatyki Uniwersytetu Wrocławskiego
Programowanie obiektowe
Programowanie obiektowe
Prowadzący: mgr inż. Elżbieta Majka
Filip Andrzejewski Remigiusz Chiluta
argumenty wiersza poleceń: getopt
formatowanie kodu źródłowego
Tablice.
1 Dygresja: cztery płyty główne…. 2 Dygresja: osobliwości C /* cos o nieistniejacym typie Boolean */ /* oraz o operatorze przecinkowym */ #include int.
Programowanie w C Wykład 3
Podstawy programowania PP – WYK3 Wojciech Pieprzyca.
Podstawy programowania PP – WYK2 Wojciech Pieprzyca.
Podstawy programowania PP – LAB4 Wojciech Pieprzyca.
Podstawy programowania
Język ANSI C Operacje we/wy
#include #include main () { cout
Programowanie obiektowe W2
Klasy w C++. Deklaracja klasy class NazwaTwojejKlasy { //w tym miejscu piszemy definicje typów, //zmienne i funkcje jakie mają należeć do klasy. }; //tutaj.
Podstawy programowania
Podstawy programowania II
Podstawy programowania II Wykład 2: Biblioteka stdio.h Zachodniopomorska Szkoła Biznesu.
Podstawy programowania
Podstawy programowania. Język C i C++– podstawy Temat: 1
Podstawy programowania w języku C i C++
Zadanie Dev C++.
Przekazywanie argumentów
Programowanie strukturalne i obiektowe
Programowanie strukturalne i obiektowe
Jerzy F. Kotowski1 Informatyka I Wykład 14 DEKLARATORY.
Programowanie strukturalne i obiektowe
Instrukcja for. Instrukcja warunkowa mgr inż. Agata Pacek.
Przekazywanie parametrów do funkcji oraz zmienne globalne i lokalne
PWSZ Gniezno // codefly 2009 Łukasz Tomczak
Programowanie w języku C++
Programowanie strukturalne i obiektowe C++
Programowanie strukturalne i obiektowe C++
Programowanie strukturalne i obiektowe C++
Funkcje w C++ Funkcja – wydzielony fragment kodu użyty w programie (raz lub więcej razy) spełniający określone zadanie, np. obliczenie średniej ocen.
Programowanie strukturalne i obiektowe C++
Programowanie strukturalne i obiektowe C++ Przeładowanie operatorów Robert Nowak.
K URS JĘZYKA C++ – WYKŁAD 1 ( ) Łagodne wprowadzenie do języka C++
Programowanie strukturalne i obiektowe C++ Powtórzenie wiadomości z C++ Robert Nowak.
Przeładowanie funkcji. Dotychczas wiedzieliśmy, że: w danym zakresie ważności może być tylko jedna funkcja o danej nazwie. Kompilator języka C++ daje.
Pliki tekstowe – odczyt i zapis Zajęcia 11. Zapis do pliku tekstowego Prosty program pokazujący sposób zapisu do pliku tekstowego: // writing on a text.
Seminarium Dyplomowe: Metodyka i Techniki Programowania Autor: Bartłomiej Fornal.
Podstawy informatyki Tablice Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
Wstęp do programowania wykład 3 Typy wyliczeniowe, tablice.
Wstęp do programowania Wykład 2 Dane, instrukcje, program.
Podstawy informatyki Preprocesor Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
Podstawy informatyki Funkcje Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
Język C/C++ Funkcje. Funkcje - wstęp Funkcję można uważać za operację zdefiniowaną przez programistę i reprezentowaną przez nazwę funkcji. Operandami.
Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego Matuszyka Podstawy.
Podstawy informatyki Operacje we/wy Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty.
Podstawy informatyki Struktury Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
Programowanie I Rekurencja.
K URS JĘZYKA C++ – WYKŁAD 1 ( ) Łagodne wprowadzenie do języka C++
C++ mgr inż. Tomasz Turba Politechnika Opolska 2016.
C++ mgr inż. Tomasz Turba Politechnika Opolska 2016.
C++ mgr inż. Tomasz Turba Politechnika Opolska 2016.
C++ mgr inż. Tomasz Turba Politechnika Opolska 2016.
C++ mgr inż. Tomasz Turba Politechnika Opolska 2016.
Operacje na plikach w C++
Typy strukturalne (złożone)
Programowanie I Rekurencja.
Operacje na plikach w C++
Język C++ Typy Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego.
Język C++ Tablice Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego.
Zapis prezentacji:

Wstęp do programowania Biblioteki

Biblioteki - rola Zawierają rozwiązania często występujących problemów (iostream, string, conio, ...), Zawierają rozwiązania szczegółowych problemów (math), pozwalają lepiej zaplanować tworzenie kodu programu, co ogranicza ryzyko popełnienia błędu (przykład)

Biblioteki - przykład bez biblioteki #include <iostream.h> #include <math.h> void wprowadz(int a[10], int &n) { cout<<"n="; cin>>n; for (int i=1; i<=n; i++) cout <<"a["<<i<<"]="; cin >>a[i]; } //************************************************ void wariancja(int a[10], int &n, float &war) float sr=0; sr+=a[i]; sr/=n; war=0; war=war+(a[i]-sr)*(a[i]-sr); war=sqrt(war/n); main() { int n,a[10]; float war; wprowadz(a,n); wariancja(a,n,war); cout <<"wariancja= "<<war; getchar();

Biblioteki - własna biblioteka #include <iostream.h> #include <math.h> int a[10], n; float war; #include "c:\moje-f.cpp" main() { wprowadz(); wariancja(); cout <<"wariancja= "<<war; getchar(); }

Biblioteki - własna biblioteka Treść pliku moje-f.cpp void wprowadz() { cout<<"n="; cin>>n; for (int i=1; i<=n; i++) cout <<"a["<<i<<"]="; cin >>a[i]; } //************************************************ void wariancja() float sr=0; sr+=a[i]; sr/=n; war=0; war=war+(a[i]-sr)*(a[i]-sr); war=sqrt(war/n);

Pliki nagłówkowe Pliki nagłówkowe zawierają prototypy funkcji, definicje stałych, deklaracje zmiennych, struktur itd. Przykład pliku nagłówkowego: int silnia(int n); float potega(float podstawa,int wykladnik); const int N=20; int dane[N];

Pliki nagłowkowe - co dają Kompilowane są źródła (c, cpp), Kompilator pobiera informacje potrzebne do kompilacji z plików nagłowkowych, Po kompilacji następuje łączenie: rys. obok, źródło Internet

Biblioteki standardowe Znajdują się w katalogu include przy standardowej instalacji, Najpopularniejsze to: iostream.h - operacje wejścia wyjścia, string.h - definicje funkcji operujących na napisach, assert.h - zawiera macro assert (asercja), conio.h - zarządza operacjami we/wy na konsoli MS-DOS, dirent.h - zarządza katalogami i ścieżkami dostępu w MS-DOS, dos.h - zawiera struktury danych i funkcje do wspierania MS-DOS dla rodziny procesorów Intel, float.h - zarządzanie liczbami rzeczywistymi, fstream.h - zarządzanie plikami, time.h - narzędzia do odczytywania, interpretacji i prezentacji czasu math.h - zawiera definicje popularnych funkcji matematycznych, limits.h - ograniczenia dla typów danych, stdio.h - operacje wejścia wyjścia (wersje nieobiektowe).

Biblioteki - wybrane zastosowania WE/WY z konsoli (wersje obiektowe) #include <iostream.h> void main (void) { int i; long l; char c; float f; double d; char t[50]; /*int */ cout<<"Podaj int"; cin>>i; cout <<i; /*long*/ cout<<"Podaj long"; cin>>l; cout <<l; /*char*/ cout<<"Podaj char"; cin>>c; cout <<c; /*float*/ cout<<"Podaj float"; cin>>f;cout<<f; /*double*/cout<<"Podaj double"; cin>>d;cout<<d; /*text*/cout<<"Podaj tekst"; cin>>t;cout<<t; }

Biblioteka assert.h Wiele kompilatorów oferuje makro assert(). To makro zwraca wartość TRUE, jeśli jego parametr ma wartość TRUE i podejmuje pewną akcję w przypadku, gdy jego parametr ma wartość FALSE. Wiele kompilatorów przerywa działanie programu w przypadku, gdy argument tego makra nie jest spełniony; inne zgłaszają wtedy wyjątek. #include <assert.h> #include <conio.h> int main(int argc, char **argv) { int x; cin>>x; assert(x); getch(); return 0; }

Biblioteka string.h – przykładowe funkcje Funcja strcat - łączy teksty, wynik w dest Składnia: char *strcat(char *dest, const char *src); Funcja strcpy - kopiuje tekst (source) do zmiennej (dest), Składnia: char *strcpy(char *dest, char * source); Funkcja strchr - podaje znak odpowiadający danemu kodowi, składnia: char *strchr( char *s, int c); Funkcja strcmp - porównuje teksty Składnia: int strcmp(const char *s1, const char *s2); Funkcja strlen - podaje ilość znaków w napisie Składnia: size_t strlen(const char *s); Uwaga: * oznacza wskaźnik, może to być napis lub tablica, czyli np. char dest[20]; char *src;

Przykład dla string.h Przykład: #include <string.h> #include <stdio.h> #include <iostream.h> #include <conio.h> //--------------------------------------------------------------------------- int main(int argc, char* argv[]) { char destination[20]; char *blank = " ", *c = "C++", *Borland = "Borland"; strcpy(destination, Borland); strcat(destination, blank); strcat(destination, c); cout<<destination; getch(); return 0; }

Przykład dla string.h #include <string.h> #include <stdio.h> #include <iostream.h> #include <conio.h> int main(int argc, char* argv[]) { char *buf1 = "aaa", *buf2 = "bbb", *buf3 = "ccc"; int ptr; ptr = strcmp(buf2, buf1); if (ptr > 0) cout<<"buf2 jest większy niż buf1\n"; else cout<<"buf2 jest mniejszy niż buf1\n"; cout<<"ptr="<<ptr<<endl; ptr = strcmp(buf2, buf3); cout<<"buf2 jest większy niż buf3\n"; cout<<"buf2 jest mniejszy niż buf3\n"; cout<<"ptr="<<ptr; getch(); return 0; } //---------------------------------------------------------------------------

Przykład dla string.h #include <iostream.h> #include <conio.h> int main(int argc, char* argv[]) { char *string = "Borland International"; cout<<"dlugosc="<<strlen(string); getch(); return 0; } //---------------------------------------------------------------------------

Problemy z wczytywaniem napisów #include <string.h> #include <stdio.h> #include <iostream.h> #include <conio.h> int main(int argc, char* argv[]) { char *napis; cout<<"Wczytaj napis"; cin>>napis; cout<<"napis="<<napis; getch(); return 0; } //--------------------------------------------------------------------------- Dzieje się tak, gdyż wprowadzanie danych jest buforowane i część napisu zostanie w buforze.

Wczytywanie napisów By uniknąć takich problemów należy czyścić zawartość strumienia lub użycie innej metody do wczytywania napisów. Taką metoda jest np. getline() #include <iostream.h> #include <conio.h> int main(int argc, char* argv[]) { char *napis; cout<<"Wczytaj napis: "; cin.getline(napis,50); cout<<"napis="<<napis<<endl; getch(); return 0; }

Funkcje z biblioteki math.h Ceil - zaokrągla do góry, Składnia double ceil(double x); cosh - funkcja cosinus hiperboliczny Składnia: double cosh(double x); exp - funkcja exponent Składnia: double exp(double x); Funkcja fabs- wartość bezwzględna dla liczby double, Składnia: double fabs(double x);

Biblioteka math.h Floor - zaokrągla w dół Skladnia: double floor(double x); pow - podnosi x do y Składnia: double pow(double x, double y); sqrt - pierwiastek kwadratowy z x składnia: double sqrt(double x); rand – zwraca liczbę losową z <0, RAND_MAX> int rand( void ); srand - inicjalizuje generator void srand( unsigned int );

Przykład dla math.h #include <string.h> #include <stdio.h> #include <iostream.h> #include <conio.h> #include <math.h> int main(int argc, char* argv[]) { double result; double x = 4.0; result = exp(x); cout<<"e do potęgi "<<x<<"="<<result; getch(); return 0; } //---------------------------------------------------------------------------

Przykład dla math.h #include <string.h> #include <stdio.h> #include <iostream.h> #include <conio.h> #include <math.h> int main(int argc, char* argv[]) { float number = -1234.0; cout<<"wartosc bezwzględna: "<< number<< "wynosi"<< fabs(number); getch(); return 0; } return 0;

Przykład - kolory #include <windows.h> #include <iostream> #include <stdlib.h> using namespace std; int main() { HANDLE hOut; hOut = GetStdHandle( STD_OUTPUT_HANDLE ); cout << "Tekst" << endl << endl; //zmiana tła SetConsoleTextAttribute( hOut, BACKGROUND_RED ); cout << "Czerwone tło" << flush << endl << endl; SetConsoleTextAttribute( hOut, FOREGROUND_RED ); cout << "Ten napis jest czerwony" << endl << endl; //Napis3 ^ SetConsoleTextAttribute( hOut, FOREGROUND_RED | FOREGROUND_INTENSITY ); cout << "Ten napis jest czerwony i INTENSITY" << endl; SetConsoleTextAttribute( hOut, FOREGROUND_GREEN | FOREGROUND_RED ); system( "PAUSE" ); return 0; }

Przykład – przestrzenie nazw #include <iostream> #include <fstream> //using namespace std; int main() { int liczba; // cin>>liczba; // cin nie zadeklarowane std::cin>>liczba; std::cout<<liczba; }

Własne przestrzenie nazw #include <iostream> //tworzenie własnej przestrzeni nazw. // Przestrzenie nazw pozwalają unikać kolizji nazw (podobnie jak funkcje) namespace kalkulator { int a=0; int f(int x) return 2*x; } using namespace std; using namespace kalkulator; int main() int a=5; cout<<a<<endl; cout<<a<<std::endl ; cout<<f(2);

Wczytywanie napisów #include <iostream> using namespace std; int main() { char napis[10]; int liczba; //wczytywanie napisów wieloczłonowych cout <<"podaj napis (1):"; //podajemy Nowak 43 cin>>napis; cout << napis<<endl; cin.sync(); //czyscimy bufor strumienia cout <<"podaj napis (2):"; //podajemy Nowak 43 cin>>liczba; cout << napis<<liczba<<endl; cin.sync(); string napis1; getline(cin,napis1); cout<<napis1; }

Przykład - formatowanie #include <fstream> #include <iostream> using namespace std; int main() { int l =- 3; cout << l << endl; cout.width( 10 ); cout << left << l << endl; cout << right << l << endl; cout << internal << l << endl; system ("Pause"); }

Przyykład – systemy pozycyjne #include <fstream> #include <iostream> using namespace std; int main() { int l = 59; cout.setf( ios::hex, ios::basefield ); cout << l << endl; //3b cout.setf( ios::oct, ios::basefield ); cout << l << endl; //73 cout.setf( ios::dec, ios::basefield ); cout << l << endl; //59 system ("Pause"); }