Входно/изходните операции са разширяеми. Лесно се реализират входно/изходни операции за типове, дефинирани от потребителя. Потоци (Rev: 1.1) Любомир Ч

Размер: px
Започни от страница:

Download "Входно/изходните операции са разширяеми. Лесно се реализират входно/изходни операции за типове, дефинирани от потребителя. Потоци (Rev: 1.1) Любомир Ч"

Препис

1 Входно/изходните операции са разширяеми. Лесно се реализират входно/изходни операции за типове, дефинирани от потребителя. Потоци (Rev: 1.1) Любомир Чорбаджиев 1 lchorbadjiev@elsys-bg.org 8 май 2007 г. Йерархия на потоците за вход/изход ios_base basic_ios<> Съдържание basic_ostream<> basic_istream<> Съдържание basic_ofstream<> basic_iostream<> basic_ifstream<> 1 Йерархия на потоците за вход/изход 1 2 Писане в поток 3 basic_fstream<> 3 Четене от поток Четене на символни низове 8 6 Изключения генерирани от входно/изходните операции 9 7 при изходни операции 10 8 Манипулатори 16 9 Файлови потоци Йерархия на потоците за вход/изход Въведение Входно/изходните потоци в C++ са обектно ориентирани. Входно/изходните операции в C++ са строго типизирани. Това позволява при обработването на данни с различен тип да се използва C++ механизмът за предефиниране на оператори и функции. 1 Йерархия на потоците за вход/изход Потоците за вход/изход са организирани като йерархия от шаблонни класове. Потоците, които се използват обичайно са: ostream, istream, ofstream, ifstream. Тези потоци са 8 битови т.е. последователността от символи, които се четат/пишат са от типа char. Дефинициите на тези потоци са следните: typedef basic_ostream<char> ostream; typedef basic_istream<char> istream; typedef basic_ofstream<char> ofstream; typedef basic_ifstream<char> ifstream; typedef basic_fstream<char> fstream; Йерархия на потоците за вход/изход В езика C++ освен типа char (8 битов символ) е дефиниран и типа wchar_t (16 битов символ); Потоците, които работят с типа wchar_t са: 2

2 typedef basic_ostream<wchar_t> wostream; typedef basic_istream<wchar_t> wistream; typedef basic_ofstream<wchar_t> wofstream; typedef basic_ifstream<wchar_t> wifstream; typedef basic_fstream<wchar_t> wfstream; Работа с потоците за вход/изход Всички потоци за вход/изход са дефинирани в пространството от имена std. Основните потоци са дефинирани в заглавния файл <iostream>. В него са дефинирани обектите: cin обект от класа istream, който е свързан със стандартния вход. cout обект от класа ostream, който е свързан със стандартния изход. cerr обект от класа ostream, който е свързан със стандартната грешка. Този поток е небуфериран. 2. Писане в поток Писане в поток За писане в изходен поток се използва операторът operator<<. В класа basic_ostream този оператор е дефиниран за всички примитивни типове: 2 class basic_ostream: 3 v i r t u a l public basic_ios<ch, Tr> { 4 public: 5 //... 6 basic_ostream& operator <<( short n); 7 basic_ostream& operator <<( int n); 8 basic_ostream& operator <<( long n); 9 basic_ostream& operator <<( unsigned short n); 10 // }; Писане в поток Операторът operator<< връща псевдоним, насочен към използвания изходен поток ostream. Това дава възможност операторът за изход да се прилага каскадно. Изразът: cout << "x=" << x; е еквивалентен на: (cout.operator <<("x=")). operator <<(x); Операции за изход, дефинирани от потребителя Да разгледаме клас point, определен от потребителя: 1 class point { 2 double x_, y_; 3 public: 4 point(double x, double y) 5 : x_(x), y_(y) 6 {} 7 double get_x( void) { return x_;} 8 double get_y( void) { return y_;} 9 void set_x(double x) {x_=x;} 10 void set_y(double y) {y_=y;} 11 // }; Операции за изход, дефинирани от потребителя Операторът operator<< за този тип може да бъде дефиниран по следния начин: 1 ostream& operator <<(ostream& out, 2 const point& p) { 3 out << ( 4 << p.get_x() <<, 5 << p.get_y() << ) ; 6 return out; 7 } 3. Четене от поток Четене от поток 3 4

3 За четене от входен поток се използва операторът operator>>. В класа basic_istream този оператор е дефиниран за всички примитивни типове: 2 class basic_istream: 3 v i r t u a l public basic_ios<ch, Tr> { 4 public: 5 //... 6 basic_istream& operator >>( short& n); 7 basic_istream& operator >>( int& n); 8 basic_istream& operator >>( long& n); 9 // }; Операторът operator>> пропуска символите разделители (, \n, \r, \t, \f, \v ). 4. Най-разпространената грешка при използване на потоци за вход istream: това, което е в потока се различава от това, което очакваме да бъде в потока. Например: искаме да прочетем променлива от типа int, а в потока има букви. За да се предпазим от този тип грешки е необходимо преди да се използват прочетените от потока данни да се провери състоянието на потока. Всеки поток istream и ostream има свързано с него състояние. Състоянието на потока е дефинирано в базовия клас basic_ios<>. 2 class basic_ios: public ios_base { 3 public: 4 //... 5 bool good( void) const; 6 bool eof( void) const; 7 bool fail( void) const; 8 bool bad( void) const; 9 // }; good() предходните операции са изпълнени успешно; eof() вижда се краят на файла; fail() следващата операция няма да се изпълни успешно; bad() потокът е повреден. Състоянието на потока представлява набор от флагове, които са дефинирани в базовия клас ios_base: 1 class ios_base { 2 public: 3 //... 4 typedef... iostate; 5 static const iostate 6 badbit, // потокът е развален 7 eofbit, // вижда се краят на файла 8 failbit,// следващата операция няма да се изпълни 9 goodbit;// потокът е наред 10 // }; В класа basic_ios<> са дефинирани следните методи за манипулиране на състоянието на потока: 2 class basic_ios: public ios_base { 3 public: // връща флаговете на състоянието на потока 6 iostate rdstate( void) const; 7 // установява флаговете на състоянието 8 void clear(iostate f=goodbit); 9 // добавя f към флаговете на състоянието 10 void setstate(iostate f) { 11 clear(rdstate() f); 12 } 13 }; 5 6

4 2 class basic_ios: public ios_base { 3 public: operator void* () const; 6 }; Операторът, дефиниран в ред 5, е оператор за преобразуване към void*. Този оператор връща стойност, различна от NULL, ако потокът е наред. Този оператор за преобразуване позволява потоците да участват в условни оператори и оператори за цикъл. Например: while(cin){ cin >> i; } Операции за вход, дефинирани от потребителя Нека формата за въвеждане на променливи от типа point е (x,y), където x и y са числа с плаваща точка. Тогава дефиницията на оператор за четене на обекти от класа point може да бъде направена по следния начин: 1 istream& operator >>(istream& in, point& p) { 2 double x,y; 3 char c; 4 in >> c; 5 i f (c!= ( ) { 6 in.clear(ios_base::badbit); 7 return in; 8 } 9 in >> x >> c; Операции за вход, дефинирани от потребителя 10 i f (c!=, ) { 11 in.clear(ios_base::badbit); 12 return in; 13 } 14 in >> y >> c; 15 i f (c!= ) ) { 16 in.clear(ios_base::badbit); 17 return in; 18 } 7 19 i f (in.good()){ 20 p.set_x(x); 21 p.set_y(y); 22 } 23 return in; 24 }; 5. Четене на символни низове Четене на символи Операторът operator>> е предназначен за форматиран вход т.е. за четене на обекти от някакъв очакван тип, в някакъв очакван формат. Когато предварително не се знае какви типове ще има във входния поток, то от входния поток обикновено се четат символни низове. За тази цел се използва семейството от методи get(), дефинирани в basic_istream<>. Четене на символи char c; cin.get(c); char buf[100]; cin.get(buf,100); cin.get(buf,100, \n ); cin. getline( buf,100); cin.getline(buf,100, \n ); Четене на символи Функциите in.get(buf,n) и in.get(buf,n,term) прочитат не повече от n 1 символа. Тези методи винаги поставят 0 след прочетените в буфера символи. Ако при четене с get е срещнат завършващият символ, то той остава в потока. Следващият фрагмент е пример за хитър безкраен цикъл: 1 char buf[256]; 2 while(cin) { 8

5 3 cin.get(buf,256); 4 cout << buf; 5 } Функцията getline() се държи аналогично на get(), но прочита от istream срещнатия завършващ символ. Четене на символи in.ignore(max,term) пропуска следващите символи докато не срещне символа term или не прочете max символа. in.putback(ch) превръща ch в следващия непрочетен символ от потока in. in.peek() връща следващия символ от потока in, но не го изтрива от потока. 6. Изключения генерирани от входно/изходните операции Изключения Да се проверява за грешки след всяка входно/изходна операция е неудобно. Поради това е предвидена възможност да помолите потока да генерира изключения, когато се променя състоянието му. В базовия клас basic_ios<> са дефинирани две функции: void exceptions(iostate st) установява състоянията, при които трябва да се генерира изключение. iostate exceptions() const връща набора от флагове на състоянието, при които се генерира изключение. Основната роля на генерирането на изключения при вход/изход е да се обработват малко вероятни изключителни ситуации. Изключенията могат да се използват и за контролиране на входноизходните операции. Пример: изключения 2#include <list> 3 4 using namespace std; 5 6 int 7 main( int argc,char* argv[]) { 8 list< int > result; 9 ios_ base:: iostate oldstate= cin. exceptions(); 10 cin. exceptions( ios_ base:: eofbit 11 ios_base::badbit 12 ios_ base:: failbit); Пример: изключения 14 try { 15 for(;;){ 16 int i; 17 cin >> i; 18 result.push_back(i); 19 } 20 } catch(const ios_base::failure& e) { 21 cout<<"ios_base::failure catched..."<<endl; 22 } return 0; 25 } 7. при изходни операции то на входно/изходните операции се контролира чрез класовете basic_ios и ios_base. За управление на форматирането на входно/изходните операции се използва набор от флагове, определени в ios_base. Част от флаговете, определящи състоянието на формата са представени в следния фрагмент: 1 class ios_base { 2 public: 3 t y p e d e f implementation_ dependent fmtflags; 4 static const fmtflags 5 skipws, // пропуска разделителите при четене 9 10

6 6 boolalpha, // типа boolean се представят 7 // като true и false 8 // целочислени типове 9 dec, // десетична система 10 hex, // шестнадесетична система 11 oct, // осмично система 12 showbase, // поставя префикс, 13 // обозначаващ системата 1 // числа с плаваща запетая 2 scientific,// представяне във вида: d.dddddeddd 3 fixed, // представяне във вида: ddddd.dd 4 showpoint, // незначеща нула пред десетичната точка 5 showpos, // явен знак + пред положителните числа 6...; 7 }; Състояние на формата skipws пропускане на разделителните символи boolalpha представяне на типа boolean dec целочислени типове в каква бройна hex система да се извеждат oct showbase представяне на бройната система scientific как се извеждат типовете с плаваща fixed точка showpoint showpos За манипулиране на състоянието на формата, в класа ios_base са дефинирани следните методи: 1 class ios_base { 2 public: fmtflags flags() const; 5 fmtflags flags( fmtflags f); 6 fmtflags setf(fmtflags f){ 7 return flags(flags() f); 8 } 1 fmtflags setf(fmtflags f, fmtflags mask) { 2 return flags((flags()&~mask) (f&mask)); 3 } 4 void unset(fmtflags mask) { 5 flags(flags()&~mask); 6 } 7 }; Стандартната схема за работа с флаговете за форматиране е следната: запомняме състоянието на формата; променяме състоянието на формата и използваме потока; възстановяваме предишното състояние на потока. 1 void foo( void) { 2 ios_ base:: fmtflags old_ flags= cout. flags(); 3 cout.setf(ios_base::oct); cout.flags(old_flags); 6 }; Извеждане на цели числа Добавянето на флагове чрез метода setf() или чрез побитово ИЛИ ( ) е удобно, само когато дадена характеристика на потока се управлява от един бит. Тази схема е неудобна в случаи като определяне на бройната система. В такива случаи състоянието на формата не се определя от един бит. Решението на този проблем, което се използва в <iostream>, е да се предостави версия на setf() с втори псевдо-аргумент : cout.setf(ios_base::oct, ios_base::basefield); cout.setf(ios_base::dec, ios_base::basefield); cout.setf(ios_base::hex, ios_base::basefield); 11 12

7 Извеждане на цели числа: пример 2 using namespace std; 3 4 int main( int argc,char* argv[]) { 5 cout.setf(ios_base::showbase); 6 cout.setf(ios_base::oct, ios_base::basefield); 7 cout<< 1234 << << 1234 << endl; 8 cout.setf(ios_base::dec, ios_base::basefield); 9 cout<< 1234 << << 1234 << endl; 10 cout.setf(ios_base::hex, ios_base::basefield); 11 cout<< 1234 << << 1234 << endl; return 0; 14 }; Извеждане на цели числа: пример x4d2 0x4d2 Извеждане на числа с плаваща точка Извеждането на числа с плаваща запетая се определя от формата и точността. Форматите, които се използват за извеждане на числа с плаваща запетая са: Универсален позволява на потока сам да реши в какъв вид да се представи извежданото число. По подразбиране потоците използват този формат. Научен представя числото като десетична дроб с една цифра преди десетичната точка и показател на степента. Фиксиран точността определя максималният брой цифри след десетичната точка. По подразбиране точността е 6 цифри. Извеждане на числа с плаваща точка: пример 2 using namespace std; 3 int main( int argc, char* argv[]) { 4 cout<< << << << endl; 5 cout.setf(ios_base::scientific, 6 ios_ base:: floatfield); 7 cout<< << << <<endl; 8 cout.setf(ios_base::fixed, 9 ios_ base:: floatfield); 10 cout<< << << <<endl; 11 cout.setf( static_cast <ios_base::fmtflags>(0), 12 ios_ base:: floatfield); 13 cout<< << << <<endl; 14 return 0; 15 } Извеждане на числа с плаваща точка: пример e e Извеждане на числа с плаваща точка За промяна на точността на работа с числа с плаваща запетая се използват следните методи: class ios_base { public:... unsigned precision() const; unsigned precision(unsigned n);... }; Използването на precision() влияе на всички входно/изходни операции с потока и действа до следващото използване на метода. Извеждане на числа с плаваща точка: пример 2 using namespace std; 3 int main( int argc,char* argv[]) { 13 14

8 4 cout. precision(12); 5 cout<< << << << 6 < < < <endl; 7 cout. precision(9); 8 cout<< << << << 9 < < < <endl; 10 cout. precision(4); 11 cout<< << << << 12 < < < <endl; 13 return 0; 14 } Извеждане на числа с плаваща точка: пример Полета за изход 2 using namespace std; 3 int main( int argc,char* argv[]) { 4 cout << ( ; 5 cout.width(5); 6 cout << 12 << ) << endl;; 7 cout << ( ; 8 cout.width(5); cout.fill( # ); 9 cout << 12 << ) << endl;; 10 cout << ( ; 11 cout.width(5); cout.fill( # ); 12 cout << "a" << ) << endl;; 13 cout << ( ; Полета за изход 14 cout.width(0); cout.fill( # ); 15 cout << "a" << ) << endl;; 16 return 0; 17 } ( 12) (###12) (####a) (a) 8. Манипулатори Манипулатори Да се променя състоянието на потока посредством флаговете на формата е неудобно. Стандартната библиотека предоставя набор от функции и обекти за манипулиране на състоянието на потока манипулатори. Манипулатори Основният начин за използване на манипулатори може да се види от следния пример: cout<<boolalpha<<true << <<noboolalpha<< true; което извежда: true 1. Използват се и манипулатори с аргументи: cout < < setprecision(10) << << endl; което извежда: Манипулаторите с аргументи са дефинирани в <iomanip>. boolalpha noboolalpha представяне на типа boolean showbase noshowbase представяне на бройната система showpoint noshowpoint showpos noshowpos skipws noskipws пропускане на разделителните символи dec целочислени типове в каква hex бройна система да се извеждат oct fixed как се извеждат типовете scientific с плаваща точка setprecision(n) точност на извеждането setw(int n) ширина на полето за извеждане setfill(int c) символ за запълване на полето 15 16

9 9. Файлови потоци Файлови потоци Потоците за работа с файлове са дефинирани в <fstream>. Потокът за писане във файл е basic_ofstream. template< class Ch, class Tr=char_traits<Ch> > class basic_ofstream: public basic_ostream<ch,tr> { public: e x p l i c i t basic_ofstream(const char* p, openmode m=out trunc); bool is_open() const; void open(const char* p, openmode m=out trunc); void close();... }; 5 std::cerr << p << << p2 << std::endl; 6 std::exit(1); 7 } 8 int main( int argc,char* argv[]) { 9 i f (argc!=3) 10 error("bad number of arguments..."); 11 std::ifstream from(argv[1]); 12 i f (!from) 13 error("bad input file", argv[1]); 14 std::ofstream to(argv[2]); 15 i f (!to) 16 error("bad output file:", argv[2]); 17 char ch; 18 while(from.get(ch)) 19 to.put(ch); 20 i f (!from.eof()!to) 21 error("something strange..."); 22 return 0; 23 } Файлови потоци c lass ios_base { public: t y p e d e f implementation_ dependent1 openmode; static const openmode app, ate, binary, in, out, trunc;... }; in отваряне за четене out отваряне за запис app запис на данните в края на файла; предизвиква отваряне на файла в режим out ate запис на данните в края на файла trunc унищожава предишното съдържание на файла Файлови потоци 2#include <fstream> 3#include <cstdlib> 4 void error(const char* p, const char* p2="") { 17 18

Потоци (Rev: 1.1)

Потоци  (Rev: 1.1) Потоци (Rev: 1.1) Любомир Чорбаджиев 1 lchorbadjiev@elsys-bg.org 1 Технологическо училище Електронни системи Технически университет, София 8 май 2007 г. Л. Чорбаджиев (ELSYS) Потоци (Rev: 1.1) 8 май 2007

Подробно

Предефиниране на оператори. Копиращ конструктор. Оператор за присвояване Любомир Чорбаджиев Технологическо училище Електронни системи Технически униве

Предефиниране на оператори. Копиращ конструктор. Оператор за присвояване Любомир Чорбаджиев Технологическо училище Електронни системи Технически униве Предефиниране на оператори. Копиращ конструктор. Оператор за присвояване Любомир Чорбаджиев Технологическо училище Електронни системи Технически университет, София lchorbadjiev@elsys-bg.org Revision :

Подробно

Обработка на грешки Изключения Любомир Чорбаджиев Технологическо училище Електронни системи Технически университет, София Re

Обработка на грешки Изключения Любомир Чорбаджиев Технологическо училище Електронни системи Технически университет, София Re Обработка на грешки Изключения Любомир Чорбаджиев Технологическо училище Електронни системи Технически университет, София lchorbadjiev@elsys-bg.org Revision : 1.1 27 февруари 2005 г. 1 #include < cstdio

Подробно

Динамична памет. Конструктори и деструктори Любомир Чорбаджиев Технологическо училище Електронни системи Технически университет, София

Динамична памет. Конструктори и деструктори Любомир Чорбаджиев Технологическо училище Електронни системи Технически университет, София Динамична памет. Конструктори и деструктори Любомир Чорбаджиев Технологическо училище Електронни системи Технически университет, София lchorbadjiev@elsys-bg.org Revision : 1.3 16 ноември 2004 г. Пример:

Подробно

Дефиниране на шаблон Шаблони (Templates) Любомир Чорбаджиев Технологическо училище Електронни системи Технически университет, София

Дефиниране на шаблон Шаблони (Templates) Любомир Чорбаджиев Технологическо училище Електронни системи Технически университет, София Дефиниране на шаблон Шаблони (Templates) Любомир Чорбаджиев Технологическо училище Електронни системи Технически университет, София lchorbadjiev@elsys-bg.org Revision : 1.1 9 март 2005 г. template< class

Подробно

При изпълнението на програма се извършват определени действия над данните, дефинирани в програмата.тези данни могат да бъдат постоянни ( константи ) и

При изпълнението на програма се извършват определени действия над данните, дефинирани в програмата.тези данни могат да бъдат постоянни ( константи ) и При изпълнението на програма се извършват определени действия над данните, дефинирани в програмата.тези данни могат да бъдат постоянни ( константи ) или изменящи се (променливи). Тези данни най-често бива

Подробно

Сериализация Калин Георгиев 13 май 2016 г. Калин Георгиев Обектно ориентирано програмиране 13 май 2016 г. 1 / 23

Сериализация Калин Георгиев 13 май 2016 г. Калин Георгиев Обектно ориентирано програмиране 13 май 2016 г. 1 / 23 Калин Георгиев 13 май 2016 г. Калин Георгиев Обектно ориентирано програмиране 13 май 2016 г. 1 / 23 f «data; f» data; Калин Георгиев Обектно ориентирано програмиране 13 май 2016 г. 2 / 23 Първо изискване:

Подробно

C++

C++ Управляващи оператори в C++ Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, 2018/19 г. 18 30 октомври 2018 г. Трифон Трифонов (УП 18/19) Управляващи оператори в C++ 18 30 октомври

Подробно

В тази част, ще разгледаме аритметичните и логически операции, както, и включването им в изрази. В следващата таблица са дадени всички възможни операц

В тази част, ще разгледаме аритметичните и логически операции, както, и включването им в изрази. В следващата таблица са дадени всички възможни операц В тази част, ще разгледаме аритметичните и логически операции, както, и включването им в изрази. В следващата таблица са дадени всички възможни операции в езикът C и С++. Символ Предназначение Аритметични

Подробно

Както бе споменато в предходните части съществуват три основни вида алгоритми: линейни, разклонени и циклични. В тази част ще разгледаме линейните алг

Както бе споменато в предходните части съществуват три основни вида алгоритми: линейни, разклонени и циклични. В тази част ще разгледаме линейните алг Както бе споменато в предходните части съществуват три основни вида алгоритми: линейни, разклонени и циклични. В тази част ще разгледаме линейните алгоритми. При линейни алгоритми действията се изпълняват

Подробно

Класове в C++ (Rev: 742) Любомир Чорбаджиев 1 20 октомври 2006 г. Съдържание Съдържание 1 Обектно-ориентирано програмиране 1

Класове в C++ (Rev: 742) Любомир Чорбаджиев 1 20 октомври 2006 г. Съдържание Съдържание 1 Обектно-ориентирано програмиране 1 Класове в C++ (Rev: 742) Любомир Чорбаджиев 1 lchorbadjiev@elsys-bg.org 20 октомври 2006 г. Съдържание Съдържание 1 Обектно-ориентирано програмиране 1 1.1 Модулност............................ 1 1.2 Обектно-ориентирана

Подробно

Програмен език C Пламен Танов Ненко Табаков Мартин Вачовски Технологично училище Електронни системи Технически университет София версия 0.5

Програмен език C Пламен Танов Ненко Табаков Мартин Вачовски Технологично училище Електронни системи Технически университет София версия 0.5 Програмен език C Пламен Танов Ненко Табаков Мартин Вачовски Технологично училище Електронни системи Технически университет София версия 0.5 Литература Необходими програми Kernighan & Ritchie - The C Programming

Подробно

2. Лексически анализ. Основни понятия и алгоритъм на лексическия анализ. Програмна структура на лексическия анализатор Цел на упражнението Упражнениет

2. Лексически анализ. Основни понятия и алгоритъм на лексическия анализ. Програмна структура на лексическия анализатор Цел на упражнението Упражнениет 2. Лексически анализ. Основни понятия и алгоритъм на лексическия анализ. Програмна структура на лексическия анализатор Цел на упражнението Упражнението представя кратко въведение в теорията на лексическия

Подробно

Масиви и низове Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, 2018/19 г ноември 2018 г. Трифон Трифонов (УП 18/19) Ма

Масиви и низове Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, 2018/19 г ноември 2018 г. Трифон Трифонов (УП 18/19) Ма Масиви и низове Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, 2018/19 г. 15 29 ноември 2018 г. Трифон Трифонов (УП 18/19) Масиви и низове 15 29 ноември 2018 г. 1 / 16 Масиви Логическо

Подробно

Указатели. Маисиви, указатели, параметри на функции Калин Георгиев 21 декември 2016 г. Калин Георгиев Увод в програмирането 21 декември 2016 г. 1 / 23

Указатели. Маисиви, указатели, параметри на функции Калин Георгиев 21 декември 2016 г. Калин Георгиев Увод в програмирането 21 декември 2016 г. 1 / 23 Указатели. Маисиви, указатели, параметри на функции Калин Георгиев 21 декември 2016 г. Калин Георгиев Увод в програмирането 21 декември 2016 г. 1 / 23 Указатели! Калин Георгиев Увод в програмирането 21

Подробно

Програмиране на Паскал

Програмиране на Паскал Поради връзката на С++ с езика С в голяма част от литературата е прието записването С/С++. Това е найизползваният език за програмиране в света, поради което синтаксисът на някои от по-новите езици като

Подробно

Масиви и низове Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, 2018/19 г. 15 ноември 6 декември 2018 г. Трифон Трифонов (УП 1

Масиви и низове Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, 2018/19 г. 15 ноември 6 декември 2018 г. Трифон Трифонов (УП 1 Масиви и низове Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, 2018/19 г. 15 ноември 6 декември 2018 г. Трифон Трифонов (УП 18/19) Масиви и низове 15.11-6.12.2018 г. 1 / 17 Масиви

Подробно

2. Наследяване в C++ Съдържание Съдържание Наследяване (Rev: 1.2) Любомир Чорбаджиев 1 1 февруари 2007 г. 1 Наследяване 1 2

2. Наследяване в C++ Съдържание Съдържание Наследяване (Rev: 1.2) Любомир Чорбаджиев 1 1 февруари 2007 г. 1 Наследяване 1 2 2. Съдържание Съдържание Наследяване (Rev: 1.2) Любомир Чорбаджиев 1 lchorbadjiev@elsys-bg.org 1 февруари 2007 г. 1 Наследяване 1 2 2 3 Полиморфизъм 9 1. Наследяване Наследяване UML UML unified modeling

Подробно

Lush Green

Lush Green Класове Какво са класовете? Основен инструмент на ООП Средство за дефиниране на абстрактни типове данни Синтактична конструкция, която позволява логическо групиране на данни и операциите над тях Дефиниция

Подробно

Масиви и низове Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, спец. Софтуерно инженерство, 2016/17 г. 9 ноември 2016 г. Триф

Масиви и низове Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, спец. Софтуерно инженерство, 2016/17 г. 9 ноември 2016 г. Триф и низове Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, спец. Софтуерно инженерство, 2016/17 г. 9 ноември 2016 г. Трифон Трифонов (УП 16/17) и низове 9 ноември 2016 г. 1 / 5 Логическо

Подробно

Проф

Проф Утвърдил:.. / доц. д-р Е. Великова / Утвърден от Факултетен съвет с протокол... /... СОФИЙСКИ УНИВЕРСИТЕТ СВ. КЛИМЕНТ ОХРИДСКИ Факултет по Математика и Информатика Специалност: Компютърни науки М И К 0

Подробно

Маисви

Маисви МАСИВИ 1. Структурни типове данни Структура от данни - организирана информация, която може да бъде описана, създадена и обработена с помощта на програма. Скаларни типове данни: Целочислен int Реален double

Подробно

Структура на програма в C - Част 2 - типове, функции

Структура на програма в C - Част 2 - типове, функции Структура на програма в C Част 2 - типове, функции Иван Георгиев, Христо Иванов, Христо Стефанов Технологично училище "Електронни системи", Технически университет, София 10 март 2019 г. И. Георгиев, Х.

Подробно

Black and White

Black and White Advanced C++ Memory Management Йордан Димитър Зайков Трендафилов Memory Management Effective C++ 2 nd ed: 3, 5, 7, 8, 9, 10 More Effective C++: 1, 3, 8 Exceptional C++: 35, 36 Какво всъщност прави new?

Подробно

МИНИСТЕРСТВО НА ОБРАЗОВАНИЕТО И НАУКАТА

МИНИСТЕРСТВО НА ОБРАЗОВАНИЕТО И НАУКАТА МИНИСТЕРСТВО НА ОБРАЗОВАНИЕТО И НАУКАТА У Ч Е Б Н А П Р О Г Р А М А ЗА ЗАДЪЛЖИТЕЛНА ПРОФЕСИОНАЛНА ПОДГОТОВКА ПО ПРОГРАМИРАНЕ И АЛГОРИТМИЧНИ ЕЗИЦИ ЗА ПРОФЕСИЯ: КОД 482010 ИКОНОМИСТ - ИНФОРМАТИК СПЕЦИАЛНОСТ:

Подробно

Структура на програма в C - Част 7 - масиви, оператор за индексиране, sizeof оператор

Структура на програма в C - Част 7 - масиви, оператор за индексиране, sizeof оператор Структура на програма в C Част 7 - масиви, оператор за индексиране, sizeof оператор Иван Георгиев, Христо Иванов, Христо Стефанов Технологично училище "Електронни системи", Технически университет, София

Подробно

Виртуални функции

Виртуални функции Виртуални функции Статично свързване Как компилаторът избира кой метод или коя функция да бъде извикана? Прави се сравнение между формални и фактически параметри и се избира най-точното съвпадение в случай,

Подробно

Лекции по Програмиране първа част I. Въведение в компютрите и програмирането КОМПЮТЪР = АПАРАТУРА + ПРОГРАМНО ОСИГУРЯВАНЕ Апаратна част Hardware(Харду

Лекции по Програмиране първа част I. Въведение в компютрите и програмирането КОМПЮТЪР = АПАРАТУРА + ПРОГРАМНО ОСИГУРЯВАНЕ Апаратна част Hardware(Харду Лекции по Програмиране първа част I. Въведение в компютрите и програмирането КОМПЮТЪР = АПАРАТУРА + ПРОГРАМНО ОСИГУРЯВАНЕ Апаратна част Hardware(Хардуер)Програмна част Software(Софтуер) Хардуерът включва:

Подробно

Lush Green

Lush Green Конструктори Жизнен цикъл на обект За обекта се заделя памет и се свързва с неговото име Извиква се подходящ конструктор на обекта... (достъп до компоненти на обект, изпълняване на операции) Достига се

Подробно

Лабораторно упражнение 6 Тема: Оператори за цикли в езика C++. Реализиране на циклични алгоритми I. Цел на лабораторното упражнение Да се затвърдят зн

Лабораторно упражнение 6 Тема: Оператори за цикли в езика C++. Реализиране на циклични алгоритми I. Цел на лабораторното упражнение Да се затвърдят зн Лабораторно упражние 6 Тема: Оператори за цикли в езика C++. Реализира на циклични алгоритми I. Цел на лабораторното упражние Да се затвърдят знанията на студентите за организацията и синтаксиса на програми

Подробно

Структура на програма в C - Част 9 - низове от символи, C-string

Структура на програма в C - Част 9 - низове от символи, C-string Структура на програма в C Част 9 - низове от символи, C-string Иван Георгиев, Христо Иванов, Христо Стефанов Технологично училище "Електронни системи", Технически университет, София 15 май 2019 г. И. Георгиев,

Подробно

Microsoft Word - Lection06.doc

Microsoft Word - Lection06.doc Лекция 6 (8. Ноември, 2011) Връзки http://www.cplusplus.com/doc/tutorial/files/ http://www.cplusplus.com/reference/clibrary/cstdio/fprintf/ http://www.cplusplus.com/reference/clibrary/cstdio/fscanf/ http://www.cplusplus.com/reference/clibrary/cstdio/freopen/

Подробно

4

4 Наследяване и 4 Трифон Трифонов Обектно-ориентирано програмиране, спец. Компютърни науки, 1 поток, спец. Софтуерно инженерство, 2016/17 г. 11 май 2017 г. Трифон Трифонов (ООП 16/17) Наследяване и голямата

Подробно

Mathematica CalcCenter

Mathematica CalcCenter Mathematica CalcCenter Основни възможности Wolfram Mathematica CalcCenter е разработен на базата на Mathematica Professional и първоначално е бил предназначен за технически пресмятания. Информация за този

Подробно

Лабораторно упражнение 4 Тема : Реализиране на линейни програми.. I. Цел на лабораторното упражнение Аритметични и логически операции в програмният ез

Лабораторно упражнение 4 Тема : Реализиране на линейни програми.. I. Цел на лабораторното упражнение Аритметични и логически операции в програмният ез Лабораторно упражнение 4 Тема : Реализиране на линейни програми.. I. Цел на лабораторното упражнение Аритметични и логически операции в програмният език С. Реализиране на линейни програми. Математически

Подробно

В настоящата тема ще разгледаме представянето на числата в изчислителните устройства. Ще покажем представянето на числата в позиционните бройни систем

В настоящата тема ще разгледаме представянето на числата в изчислителните устройства. Ще покажем представянето на числата в позиционните бройни систем В настоящата тема ще разгледаме представянето на числата в изчислителните устройства. Ще покажем представянето на числата в позиционните бройни системи, като се акцентира на десетична, двоична и шестнадесетична

Подробно

Динамична памет Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, спец. Софтуерно инженерство, 2016/17 г. 21 декември 2016 г. Тр

Динамична памет Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, спец. Софтуерно инженерство, 2016/17 г. 21 декември 2016 г. Тр Динамична памет Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, спец. Софтуерно инженерство, 2016/17 г. 21 декември 2016 г. Трифон Трифонов (УП 16/17) Динамична памет 21 декември

Подробно

ИНТЕРНЕТ ПРОГРАМИРАНЕ - JAVA JAVA ОБЕКТИ Ненко Табаков Пламен Танов Технологическо училище Електронни системи Технически университет София 9 октомври

ИНТЕРНЕТ ПРОГРАМИРАНЕ - JAVA JAVA ОБЕКТИ Ненко Табаков Пламен Танов Технологическо училище Електронни системи Технически университет София 9 октомври JAVA ОБЕКТИ Ненко Табаков Пламен Танов Технологическо училище Електронни системи Технически университет София 9 октомври 2008 JAVA ОБЕКТИ Забележка: Тази лекция е адаптация на лекция от курса: 6.092 Java

Подробно

Slide 1

Slide 1 Списъци. Структура и синтаксис. Създаване и показване. Основни операции(добавяне, изваждане на елемент или цял подсписък; подреждане). Трансформации. проф. дмн С. Христова Списъци Списъците / list са основна

Подробно

Допълнения в периода Версия Модул Документи Към Права на достъп до екземпляри документи е добавено право Изтриване на док

Допълнения в периода Версия Модул Документи Към Права на достъп до екземпляри документи е добавено право Изтриване на док Допълнения в периода 25.04.2019 28.05.2019 Версия 4.42.0 Модул Документи Към Права на достъп до екземпляри документи е добавено право Изтриване на документ. Новото право е с по-нисък приоритет от правото

Подробно

3. Синтактичен анализ. Граматика на учебен програмен език STUDENT. Извеждане на изречения от правилата на граматиката Цел на упражнението Упражнението

3. Синтактичен анализ. Граматика на учебен програмен език STUDENT. Извеждане на изречения от правилата на граматиката Цел на упражнението Упражнението 3. Синтактичен анализ. Граматика на учебен програмен език STUDENT. Извеждане на изречения от правилата на граматиката Цел на упражнението Упражнението представя кратко въведение в синтактичния анализ.

Подробно

Пощенска Банка Формат на входни файлове за масови плащания Съдържание: 1. Общи характеристики Плащания с кредитен превод Плащания на з

Пощенска Банка Формат на входни файлове за масови плащания Съдържание: 1. Общи характеристики Плащания с кредитен превод Плащания на з Пощенска Банка Формат на входни файлове за масови плащания Съдържание: 1. Общи характеристики.... Плащания с кредитен превод... 3 3. Плащания на заплати с кредитен превод.... Плащания с директен дебит

Подробно

5

5 4. ОПЕРАТОР ЗА ИЗБОР НА ДАННИ ОТ ТАБЛИЦА За различните видове справки най-често се използва оператор SELECT. Обикновено резултатът от изпълнението му е таблица. Общ вид на оператора 1 : [ DISTINCT ]

Подробно

MSDOS1

MSDOS1 ПРИЛОЖЕНИЕ C ANSI ESCAPE последователности Забележка Информацията в това приложение зависи от инсталацията и може да не се прилага в машините на всички производители. ANSI ESCAPE последователността представлява

Подробно