Wstęp do programowania

Slides:



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

Programowanie obiektowe
Dzisiejszy wykład Wyjątki.
Programowanie obiektowe
Programowanie obiektowe PO PO - LAB 4 Wojciech Pieprzyca.
Programowanie obiektowe
Programowanie obiektowe
Programowanie obiektowe PO PO - LAB 3 Wojciech Pieprzyca.
Klasy i obiekty.
Wprowadzenie.
Programowanie I Rekurencja.
argumenty wiersza poleceń: getopt
formatowanie kodu źródłowego
Standard Template Library
Wskaźniki. Definiowanie wskaźników Wskaźnik może wskazywać na obiekt dowolnego typu. int * w; char * Wsk_Znak; float * Wskaz_Real; Przykłady: Wskaźnik.
Tablice.
1 Dygresja: cztery płyty główne…. 2 Dygresja: osobliwości C /* cos o nieistniejacym typie Boolean */ /* oraz o operatorze przecinkowym */ #include int.
Wykład 1: Wskaźniki Podstawy programowania Programowanie w C
Podstawy programowania PP – WYK3 Wojciech Pieprzyca.
Podstawy programowania PP – WYK2 Wojciech Pieprzyca.
Podstawy programowania
Podstawy programowania PP – LAB4 Wojciech Pieprzyca.
Zachodniopomorskie Centrum Edukacyjne Zadanie domowe.
#include #include main () { cout
Programowanie obiektowe W2
Pracę wykonali: Rafał Chmielorz Michał Sporek Jan Nowik
Podstawy programowania II Wykład 2: Biblioteka stdio.h Zachodniopomorska Szkoła Biznesu.
Programowanie obiektowe III rok EiT
Podstawy programowania w języku C i C++
Podstawy programowania
Wskaźnik może wskazywać na obiekt dowolnego typu. int * w; char * Wsk_Znak; float * Wskaz_Float; Przykład: Wskaźnik przechowuje adres obiektu wskazanego.
Podstawy informatyki 2012/2013
Podstawy programowania
Wczytywanie danych z klawiatury, komentarze, zmienne.
Podstawy programowania. Język C i C++– podstawy Temat: 1
Podstawy programowania w języku C i C++
Podstawy programowania II
Procedury i funkcje.
Przekazywanie argumentów
Programowanie strukturalne i obiektowe
Programowanie obiektowe III rok EiT dr inż. Jerzy Kotowski Wykład IX.
Programowanie obiektowe III rok EiT
Programowanie obiektowe
Instrukcja for. Instrukcja warunkowa mgr inż. Agata Pacek.
Programowanie obiektowe 2013/2014 Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
Programowanie obiektowe 2013/2014
Składnia pętli do … while do instrukcja while (wyrażenie); gdzie: instrukcja – instrukcja pojedyncza lub blok instrukcji wyrażenie – wyrażenie przyjmujące.
Programowanie w języku C++
Programowanie strukturalne i obiektowe C++
Programowanie strukturalne i obiektowe C++
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
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.
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski 1 informatyka +
Programowanie strukturalne i obiektowe C++
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.
1 dynamiczny przydział pamięci malloc() free() realloc() calloc() memset() memcpy( ) mempcpy( ) memmove() (wskaźniki!! )
Wstęp do programowania Wykład 2 Dane, instrukcje, program.
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.
Programowanie I Rekurencja.
C++ mgr inż. Tomasz Turba Politechnika Opolska 2016.
Programowanie Obiektowe – Wykład 6
Patryk Jasik pok. 415 GB Języki programowania Patryk Jasik pok. 415 GB
Wstęp do programowania
Przycisk uruchamiający napisany przez nas program
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.h" main() { wprowadz(); wariancja(); cout <<"wariancja= "<<war; getchar(); }

Biblioteki - własna biblioteka Treść pliku moje-f.h 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);

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;

Operacje wejścia/wyjścia Biblioteka stdio Ta biblioteka zawiera operacje na plikach, w tym również na konsoli. Typem danej, na którym się tutaj operuje jest FILE. Jest to struktura, która w każdym systemie może być zdefiniowana inaczej Dostęp do struktury (wskaźnik) otrzymujemy od funkcji fopen przy otwieraniu pliku i przekazać go musimy do fclose chcąc go zamknąć (oczywiście przez wskaźnik).

Operacje wejścia/wyjścia Biblioteka stdio Korzystamy z trzech podstawowych strumieni plikowych, które są predefiniowane (jako stałe typu FILE*): stdin - "standardowe wejście" stdout - "standardowe wyjście" stderr - "standardowe wyjście diagnostyczne„ Przy uruchamianiu programów na konsoli, stdin to wejście z klawiatury, a stdout i stderr są kierowane na ekran. Przy uruchamianiu programu można dokonać przekierowania, jeśli wywołujemy program przez polecenie w linii komend np. w systemie Unix (< dla stdin i > dla stdout; unixowe powłoki pozwalają też na przekierowanie stderr).

Funkcje podstawowe Najprostszą funkcją wypisującą dane danym strumieniu jest fputs o następujących argumentach: fputs( napis, strumien ); Dla stdout jest krótsza forma, puts, która wymaga tylko pierwszego argumentu. Można też wysłać tylko jeden znak przy pomocy funkcji fputc (napis, strumien);

Funkcje podstawowe Pojedyncze znaki wczytuje się funkcją fgetc (argumentem jest tylko strunień, a znak jest zwracany jako wynik). Odpowiednikiem fgetc z argumentem stdin jest getchar() (bez argumentów). Należy jednak pamiętać, że konsola ma zazwyczaj liniowy (czyli buforowany liniowo), a nie znakowy sposób wczytywania znaków (na unixie można to zmienić); toteż nawet jeśli oczekuje się wprowadzenia jednego znaku, to należy po jego wprowadzeniu nacisnąć Enter. Wczytywany jest oczywiście znak (a więc dana typu char), natomiast funkcje te zwracają int. Jest to użyteczne, gdyż część typu int nie używana przez char pozostaje w ten sposób zawsze zerem. Umożliwia to stwierdzenie końca pliku, co jest sygnalizowane przez zwrócenie jako wyniku specjalnej stałej EOF; nie odpowiadającej żadnemu znakowi. Oczywiście koniec pliku można też sprawdzić wywołując funkcję feof() dla danego strumienia. Znak po wczytaniu może zostać "cofnięty"; używa się w tym celu funkcji ungetc( znak, strumien ). Aby nie wprowadzać zamieszania, należy jednak jako argument podawać ten znak, który ostatnio wprowadzono. Można wczytać również całą linię. Służy do tego funkcja `fgets': fgets( tablica, ile, strumien );

Funkcje podstawowe Jednymi z najbardziej przydatnych funkcji obsługujących "porcje" danych są fread i fwrite. Mają dość podobne nagłówki: size_t fread( void* ptr, size_t s, size_t n, FILE* stream ); size_t fwrite( const void* ptr, size_t s, size_t n, FILE* stream ); Funkcja fread wczytuje ze strumienia `n' elementów wielkości `s' do tablicy podanej jako `ptr'. Funkcja fwrite - zapisuje, wedle tych samych reguł. Wartością zwracaną jest ilość poprawnie wczytanych lub zapisanych elementów (nie znaków!), czyli jest <=n. Nie da się oczywiście odróżnić błędu operacji od końca pliku; należy to sprawdzić przy pomocy feof() i ferror().

Biblioteki - wybrane zastosowania W języku C (bez obiektów) wykorzystujemy funkcje printf i scanf do pisania i czytania na konsoli. #include <stdio.h> void main (void) { int i; long l; char c; float f; double d; char t[50]; /*int */ printf("Podaj int”); scanf(“%d”,&i); printf(“%d”, i); /*long*/ printf("Podaj long”); scanf(“%ld”,&l); printf(“%ld”, l); /*char*/ printf("Podaj char”); scanf(“%c”,&c); printf(“%c”, c); /*float*/ printf("Podaj float”); scanf(“%f”,&f); printf(“%f”, f); /*float*/ printf("Podaj float”); scanf(“%g”,&f); printf(“%g”, f); /*double*/ printf("Podaj double”); scanf(“%lf”,&d); printf(“%lf”, d); /*double*/ printf("Podaj double”); scanf(“%lg”,&d); printf(“%lg”, d); /*tekst*/ printf("Podaj tekst”); scanf(“%s”,t); printf(“%s”, t); }