Главная » Просмотр файлов » ДСо04-операции-и-данные-С++

ДСо04-операции-и-данные-С++ (1238943)

Файл №1238943 ДСо04-операции-и-данные-С++ (Лекции Северов Часть 3)ДСо04-операции-и-данные-С++ (1238943)2020-10-28СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла

Carnegie MellonОперации и данныеС/С++Алгоритмыи алгоритмические языкиgoo.gl/c8pyqxЛекция 4, 28 сентября, 2018Лектор:Дмитрий Северов, кафедра информатики 608 КПМdseverov@mail.mipt.ruhttp://cs.mipt.ru/wp/?page_id=60771Модель исполнителяЦПОУОсновнаяпамятьУУУBBУBBУBBУBBРегистрыСреда взаимодействия2ПеременнаяИменованная область памяти типизованныхзначений.1.

Имя (адрес начала),2. Тип (размер и правила операций),3. Значение (содержимое памяти)3Эволюция базовых типов данных¢Базовые типы данных§ Целые (char, int)§ Вещественные (float, double)§ Никакой (void)¢Модификаторы типа§ Без/Знаковые (un/signed)§ Короткие/Длинные (short, long)¢Спецификаторы класса памяти:§ Статические/Автоматические (static, auto)§ Регистровые, Внешние (register, extern)¢Квалификаторы изменчивости:§ Неизменяемые (const),§ Изменчивые (volatile), исключаемые из оптимизации4Приоритет операцийПриоритет Обозначениеи порядокНазначение1ð::Разрешения контекста2ï()Вызов или описание функции()Конструкция значения[]Индекс массива->Косвенная принадлежность.Прямая принадлежность++Инкремент (постфиксная)--Декремент (постфиксная)!Логическое отрицание~Битовое отрицание (сумма по модулю 2)+Унарный плюс-Унарный минус3ð++Инкремент (префиксная)5Приоритети порядок3ðОперация--Декремент (префиксная)&Адрес*Разыменование()Преобразование типаsizeofРазмер в байтахnewДинамическое выделение памятиdelete4ð5ð6ð7ðНазначениеДинамическое освобождение памяти.*Разыменование члена->*Косвенное разыменование члена*Умножение/Деление%Остаток от деления+Сложение-Вычитание<<Сдвиг влево>>Сдвиг вправо6Приоритети порядок8ðОперацияНазначение<Меньше<=Меньше или равно>=Больше или равно>Больше==Равно!=Не равно10ð&Побитовая конъюнкция11ð^Побитовое сложение по модулю два12ð|Побитовая дизъюнкция13ð&&Конъюнкция14ð||Дизъюнкция15ð?:Условное выражение9ð7Приоритети порядок16ð17ðОперацияНазначение=Присваивание*=Умножение и присваивание/=Деление и присваивание%=Нахождение остатка и присваивание+=Сложение и присваивание-=Вычитание и присваивание&=Побитовая конъюнкция и присваивание^=Побитовое сложение по модулю два и присваивание|=Побитовая дизъюнкция и присваивание<<=Сдвиг влево и присваивание>>=Сдвиг вправо и присваивание18ðthrow19ð,Генерация исключенияОбъединение двух выражений в одно8Составные типы данныхМассивы – наборынумерованных однородных данных• СтрокиСтруктуры – наборыименованных разнородных данных• Объединения• ПеречисленияУказатели – переменные содержащиеадрес• Ссылки9Массивы¢¢¢Описаниеint a[3],b[2][3];Описание синициализациейchar c[] = {¢0¢,¢2¢,¢4¢};int d[][3] ={{1,2,3},{4,5},{6}};Доступ к элементуa[0] = d[0][1] + 1;10Строки¢¢¢Одномерные массивы однобайтных целых элементов(символов), содержащие последним элемент созначением ноль.char Str1[] = {¢H¢,¢e¢,¢l¢,¢l¢,¢o¢,¢\0¢};char Str2[5] = {¢,¢,¢ ¢};char Str3[] = ²world²;Использованиеcout << Str1 << Str2 << Str3 << endl;11Структуры¢¢¢Определение конструкции набора данных:struct My_type {type_a Member_1,Member_2;type_b Member_3;… } My_object;Частные случаи:struct Complex { double Re,Im; };struct Complex A;struct { double Re,Im; } B;Доступ к полям: B.Re или A.Im12Объединениесовмещение полей – точек зренияunion тег { список_полей } имя_объекта;ПеречислениеНабор именованных целых константenum тег { список_имен } имя_объекта;Битовые поляНабор целых полей определённой длиныstruct тег { поле:число_бит; } имя;union тег { поле:число_бит; } имя;13#include <iostream>using namespace std;ABB[0]=YB[1]=ZB[2]=XB[3]=ZXacegbdfenum {Z=0,X,Y=4};WL_wordH_wordunion {int A;char B[4];struct { int a:4,b:4,c:4,d:4,e:4,f:4,g:4,h:4;} X;struct { short int L_word, H_word;} W;} N;hint main() {N.B[0]=Y; N.B[1]=Z; N.B[2]=X; N.B[3]=Z;cout << N.W.H_word << " " << N.W.L_word << endl;cout << N.A << endl;cout << N.X.h << N.X.g << N.X.f << N.X.e<< N.X.d << N.X.c << N.X.b << N.X.a << endl;return 0;1 4}655400001000414УКАЗАТЕЛИ¢¢¢Переменные, содержащие адресОписание и инициализацияint *Pc, **Pd;int a=5, b[]={1,2,3}, *Pa=&a, *Pb=b;char *s=²String²;Присваивание значенияconst int *b ={1,2,3};Pd=&Pb; Pc=&b[1];15Операции с указателямиint n, b, a[10], *pb=&a[0], *pe=&a[9], *pc;¢¢Арифметическиеn = pe - pb; // кол-во элементов (не байт!)pb++;// &a[1] (адрес следующего// элемента но не байта!)pc = pe – 1; // &a[8]pb + pe;// ОШИБКА !!!Разыменованияb = *pc;// b = a[8];NB: операции с указателями являютсяразмерными!!!16Операции с указателямиstruct complex { double Re; double Im; } a, *p;p = &a;¢Разыменованияa.Re = 1.;p->Im = 0.;NB: операции с указателями являютсяразмерными!!!17Универсальные указателиvoid *P, *Q;¢ Запрещены операции¢§ Арифметические§ Разыменования¢Типичное применениеP= malloc(sizeof(double));// P = new double;Q= calloc(N,sizeof(int)); // Q = new(int[N]);free(Q);// delete(Q);Q= realloc(Q,M);¢Универсальный указатель можно§ Инициализировать значением указателя любого типа§ Преобразовать в указатель любого типа18#include <iostream>using namespace std;int main() {const int n= 64;char str[]= "Hello, World!\n";void *p, *ps= str;char **pps= (char**)&ps;int *a, *pb, *pe;Hello, World!0x7fff5fbff559 0x7fff5fbff4e0 H0x100519920=pb pb+1=0x1005199240x100519928: a[2]= 20x00x100519920 2063a=0x100519920 a[0]=0a[n-1]=630 a[n]=64cout << str << ps << " " << pps << ' ' << (**pps) << endl;p= malloc(4*n); pb= a= (int*)p; for (int i=0; i<n; i++) a[i] = i;cout<< pb << "=pb\t pb+1=" << pb+1 << "\n";cout<< pb+2 << ": a[2]= » << *(pb+2) << endl;free(a); pb=a=NULL;cout << pb << endl;}pb=a=new int[n]; for(int i=0;i<n;i++) *(a+i)=10*i;cout << a << "\t" << *(pb+2) <<endl;pe=&a[n-1];cout <<pe-pb<< endl;a=(int*)realloc(a,2*n);cout<<"a="<< a <<"\ta[0]="<<*a<<"\na[n-1]="<<a[n-1]<<" a[n]="<<a[n]<<endl;19Ссылки*)Другое имя переменной (псевдоним)¢ Описание и инициализацияint a=5, &b=a;// a и b – разные имена одной// и той же области памяти¢*)только в С++20Тип FILE*struct _iobuf {typedef struct _iobuf FILE;char *_ptr;Илиint _cnt;#define FILE struct _iobufchar *_base;int _flag;FILE *a;int _file;FILE* fopen(int _charbuf;const char* name,int _bufsiz;const char* accesschar);*_tmpfname; };int fclose(FILE* a);21.

Характеристики

Тип файла
PDF-файл
Размер
1001,17 Kb
Тип материала
Высшее учебное заведение

Тип файла PDF

PDF-формат наиболее широко используется для просмотра любого типа файлов на любом устройстве. В него можно сохранить документ, таблицы, презентацию, текст, чертежи, вычисления, графики и всё остальное, что можно показать на экране любого устройства. Именно его лучше всего использовать для печати.

Например, если Вам нужно распечатать чертёж из автокада, Вы сохраните чертёж на флешку, но будет ли автокад в пункте печати? А если будет, то нужная версия с нужными библиотеками? Именно для этого и нужен формат PDF - в нём точно будет показано верно вне зависимости от того, в какой программе создали PDF-файл и есть ли нужная программа для его просмотра.

Список файлов лекций

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6353
Авторов
на СтудИзбе
311
Средний доход
с одного платного файла
Обучение Подробнее