Главная » Все файлы » Просмотр файлов из архивов » PDF-файлы » Лысаков. Основы программирования

Лысаков. Основы программирования (Лекции (2017)), страница 6

PDF-файл Лысаков. Основы программирования (Лекции (2017)), страница 6 Программирование (85821): Лекции - 2 семестрЛысаков. Основы программирования (Лекции (2017)) - PDF, страница 6 (85821) - СтудИзба2021-01-26СтудИзба

Описание файла

Файл "Лысаков. Основы программирования" внутри архива находится в следующих папках: Лекции 2017, Лекции 2017. PDF-файл из архива "Лекции (2017)", который расположен в категории "". Всё это находится в предмете "программирование" из 2 семестр, которые можно найти в файловом архиве НГУ. Не смотря на прямую связь этого архива с НГУ, его также можно найти и в других разделах. .

Просмотр PDF-файла онлайн

Текст 6 страницы из PDF

При этом данные операцииполучить адрес участка памяти, выделенного для переменной a.обеспечивают передвижение по памяти не по байтам и битам, а на размертипа данных, который указан при создании переменной указателя.int a;a = 5;cout << &a;Указатели непосредственно связаны с массивами данных, посколькуприИмея возможность определять адрес переменной или другого объектапрограммы, нужно уметь его сохранять, преобразовывать и передавать.Для этих целей введены переменные типа «указатель».Указатель — это переменная, значение которой является адресомобъекта конкретного типа. Для обозначения значения указателя, которыйникуда не указывает, используется специальная константа NULL.созданиимассивавсеегосоздаютсявпамятипоследовательно, т.

е. массив представляет собой единую и неразрывнуюобласть памяти. При этом если обратиться к массиву через его имя, торезультатом будет адрес первого элемента массива (имеющего индекс 0).int mas[3] = {1, 2, 3};int* pVal;pVal = mas; // тождественно pVal = &mas[0]cout << *pVal;45элементы46www.phys.nsu.ruДля указателей определены арифметические операции. Таким образом,Такая возможность имеется и реализуется с помощью указателейк указателям можно добавлять или отнимать целые значения. Таки средств для динамического выделения памяти, из которых основнымиоперация «++», примененная к указателю, изменяет адрес, хранящийся вявляются функции new и delete.

Эти функции используются дляуказатели на число байт, соответствующее размеру одной переменнойвыделения и освобождения памяти.типа, соответствующую типа указателя. Иначе говоря, если у нас имеетсяПриведемфрагменткода,вкоторомпроисходитвыделениеуказатель на тип int, занимающий 4 байта, то операции ++ сместитнеобходимого количества памяти для хранения данных, количествоуказатель в памяти на 4 байта.которых задает пользователь. А также происходит инициализацияПоэтому для адресации внутри массива бывает удобно использоватьуказатели.Вкачествепримераприведемфрагменткодадляинициализации массива:int mas[10], i;int* pMas;for(i = 0, pMas = mas; i < 10; i++)cin >> *(pMas+i);2.3.1.Динамическая память.

МассивыДо сих пор все массивы данных у нас были строго определенногоразмера. В некоторых задачах это бывает неудобно. Например, требуется,чтобы пользователь задал некий массив данных, при этом неизвестен егоразмер. Можно, конечно, заранее выделить под массив 100 МБайт памятии считать, что этого всегда хватит. Но возможны два варианта:• массив все-таки окажется недостаточным, поскольку данныезанимают 101 Майт.• Для конкретной задачи достаточно 10 элементов по 4 КБайт.значений, поиск максимального элемента и среднего арифметическогозначения.int* pMas;int Count;cout << "Input elements count: ";cin >> Count;pMas = new int [Count];int i;for(i = 0; i < Count; i++)cin >> *(pMas+i);int Sum = 0;for(i = 0; i < Count; i++)Sum += *(pMas+i);double Avg;Avg = (double)Sum/Count;cout << "Summa = " << Sum << endl;cout << "Avg = " << Avg << endl;В обоих этих случаях необходимый объем памяти становится известентолько на момент использования программы.

Поэтому было бы намногоудобнее, если бы программист имел возможность выделять необходимыйобъем памяти по требованию пользователя.В языке программирования C++ оператор delete возвращает память,выделенную оператором new. Вызов delete должен происходить длякаждого вызова new, дабы избежать утечки памяти. После вызова delete4748www.phys.nsu.ruобъект, указывающий на этот участок памяти, становится некорректным ипеременные с такими же именами, но которые не имеют отношения кне должен больше использоваться. При этом важно помнить, что еслипеременным в функции main().память была выделена при помощи new, то она освобождается припомощи delete, а если new[], то должен быть вызван delete[].функцииint* pA;int* pMas;delete pA;delete[] pMas;Передача переменных по ссылкеЕще раз напомним про различие локальных и глобальных переменных.void MyFunc(int a, int b, int c){a = 11;b = 12;c = 13;}void main(){int a, b, c;a = 1; b = 2; c = 3;MyFunc(a, b, c);}манипуляцииспеременнымитакимобразом,чтобыввызываемой функции они также изменили значения.

Например, вpA = new int;pMas = new int[10];3.3.При написании программ часто возникает желание произвести внутриcout << a << b << c;В результате исполнения приведенного кода, на экран будет выведенопрограммах часто применяется метод инициализации всех переменныйвнутри отдельного блока (функции). Одним из способов решения такойзадачи является заведение глобальных переменных следующим образом.int a, b, c;void MyFunc(){a = 11;b = 12;c = 13;}void main(){a = 1; b = 2; c = 3;MyFunc();cout << a << " " << b << " "}В этом случае никаких переменных в функцию передавать не надо, таккак она имеет непосредственный доступ ко всем глобальным переменным.Но помните, если вы все-таки напишите следующим образом:1 2 3.

Другими словами, переменные в функции main() не изменят своегозначения. В функции MyFunc() определены собственные локальные49<< c;50www.phys.nsu.ruint a, b, c;Таким образом, приведем фрагмент кода, в котором переменныепередаются по ссылке в функции, которая изменяет их значения.void MyFunc(int a, int b, int c){a = 11;b = 12;c = 13;}void{*a*b*c}void main(){a = 1; b = 2; c = 3;MyFunc(a, b, c);cout << a << " " << b << " "<< c;MyFunc(int* a, int* b, int* c)= 11;= 12;= 13;void main(){int a, b, c;MyFunc(&a, &b, &c);}то в функции будут использоваться уже не глобальные, а локальныепеременные.

Это вновь приведет к тому, что значение глобальныхпеременных не изменится после выполнения функции.cout << a << " " << b << " "}Второй способ заключается в передаче переменных по ссылке.Оператор&— это унарный оператор, возвращающий адрес своегооперанда. (Напомним, что унарный оператор имеет один операнд).Например, если написать &count, то результатом будет адрес переменнойcount.

Оператор& можно представить себе как оператор, возвращающийадрес объекта.Для хранения адресов используются указатели, а дляприсвоениязначения переменной через указатель на нее, унарный операторразыменования *. Таким образом, корректной является записьint* p;int count;p = &count;*p = 5;cout << count;5152<< c;www.phys.nsu.ru1.4.

СТРУКТУРНОЕ ПРОГРАММИРОВАНИЕчисло вариантов построения программы по одной и той жеМетодология структурного программирования появилась как следствиевозрастаниясложностирешаемыхнакомпьютерахзадач,спецификации, что значительно снижает сложность программы и,исоответственного усложнения программного обеспечения. В 70-е годы XXвека объёмы и сложность программ достигли такого уровня, чточто ещё важнее, облегчает понимание её другими разработчиками.2.Наиболее сильной критике со стороны разработчиков структурногоподхода к программированию подвергся оператор GOTO (операторбезусловного перехода), имевшийся тогда почти во всех языкахпрограммирования.Неправильноеинеобдуманноеиспользованиепроизвольных переходов в тексте программы приводит к получениюзапутанных, плохо структурированных программ (т.н. спагетти-кода), потексту которых практически невозможно понять порядок исполнения ивзаимозависимость фрагментов.Следование принципам структурного программирования сделалотексты программ, даже довольно крупных, нормально читаемыми.Серьёзно облегчилось понимание программ, появилась возможностьдругие программисты.

Это позволило разрабатывать достаточно крупныедлятоговременипрограммныекомплексысилами3.Сильнов условиях неизбежных изменений в составе персонала.Перечислим некоторые достоинства структурного программирования:53связанныеупрощаетсяпроцесстестированияиотладкиструктурированных программ.4.4.1.МетодологияСтруктурноепрограммирование—методологияразработкипрограммного обеспечения, в основе которой лежит представлениепрограммы в виде иерархической структуры блоков, предложенная в 70-хгодах XX века Э.

Дейкстрой, а разработана и дополнена Н. Виртом.В соответствии с данной методологией1.Любая программа представляет собой структуру, построенную изтрёх типов базовых конструкций:a.последовательноеисполнение—однократноевыполнение операций в том порядке, в котором онизаписаны в тексте программы;b.ветвление — однократное выполнение одной из двух илиболее операций, в зависимости от выполнения некоторогоколлективовразработчиков, и сопровождать эти комплексы в течение многих лет, дажелогическипрограмма является собственной блок-схемой).разработки программ в нормальном промышленном режиме, когдапрограмму может без особых затруднений понять не только её автор, но ипрограммахграфических форм изображения алгоритмов (по сути, самаудовлетворять потребностям практики.

Программы становились слишкомпрограмм.структурированныхдальше, что позволяет обходиться без блок-схем и другихпрограмм, которая была нормой в более раннее время, пересталапотребовалась какая-то систематизация процесса разработки и структурыВоператоры находятся визуально ближе, а слабо связанные —«интуитивная» (неструктурированная, или «рефлекторная») разработкасложными, чтобы их можно было нормально сопровождать, поэтомуСтруктурное программирование позволяет значительно сократитьзаданного условия;c.цикл — многократное исполнение одной и той жеоперации до тех пор, пока выполняется некотороезаданное условие (условие продолжения цикла).54www.phys.nsu.ru2.3.Программа «бродилка»Повторяющиеся фрагменты программы, либо представляющие4.2.собой логически целостные вычислительные блоки, оформляютсяСуть программы заключается в том, чтобы пользователю былов виде функций (подпрограмм).представлено игровое поле, на котором были случайным образомРазработка программы ведётся пошагово, методом «сверху вниз».разбросаны препятствия.

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