А.А. Белеванцев, С.С. Гайсарян, Л.С. Корухова, Е.А. Кузьменкова, В.С. Махнычев - Алгоритмы и алгоритмические языки (1113416)
Текст из файла
московский восудл~ л ввнный чниввгситвл имени М.В. ЛОМОНОСОВА Феиун~~ее емниени~еи~ней ме~еме~ики и кибернетики Семинары по курсу АЛГОРИТМЫ И АЛГОРИТМИЧЕСКИЕ ЯЗЫКИ Учебно-методическое пособие для студентов / курса ЩД®ДЯ МОСКВА 2О~ ~ "ДК оеи Н)р)75 и! Ьбк 12 073-0!8.!яоЗ г )во Введение Рене пиен г ы: гу К2 г"о монов.
профессор; Л К ~)нанн. Лопент СЗ)2 11!ВР! 973-5-89407-800-6 13ВМ 973-5-317-04299-8 Цг нагггггеггн.н нг~ ренгенгно 2'евокгггггигг о-тоников кого енв та бнгк)кнгггенги выынныи и ьии овнненоеникн н к«бгг)нгегнггки Гбогмгнг мо, о еоггаоремненноо; унгыеренгоенм имени М 72,, )гогок.кони Ангары; Бе.гвванчен Л.А., г аг)гарн)г Г г'., Аорукова от,г .. Куганвгпгова В Л, Мгггггногггв В Г Сенгииары по курсу «Алгоритмы и нагори).мичеекие н)ыкняс У1)ебно-ысюлическое пособие лля стулеггюв ! курса,' Беаеванцев А.А. и лр.
— Мо Издательский отпел фвкчап )»та ВМиК МГУ имени М.В. Ломоносова !лицензия ИД !Ч 05890 о! 24.09.2001 !.); МАКС Пресс, 2012. -- !40 с 13ВМ 973-5-89407-500-б 13цк! 978 к 117 04)г)9 8 0 учеоном ггг)сггбгги прелепгвяены мепернаяы ое~гг)негой части семянарекик )аиягиа в гггллержку курев яекпня А.пори)ъгы н апорнопн чеекие ягыкю ям е) уогеппгв ! курса Евку;иге,п НМК 511 У В квчееы ве основого нгыка в пропеоее обучении был иенолн)ован я гык Гн-9') Учебное ~гоеггбие оосгав ~епо й учетом опъгтя преполавания пргкрамМираавнгня Лпя ЕГ)ЛЕНТОВ Г1)егя),ГН)ипа ВЫЧНЕяитвтниая МапомаГИКН и кнберне)нкн М!'У и прелнеаоачепо лня пу.ген)ов. ицчакнппн основ!ми куре программирования.
а гакоке лля пропп)гаватенея н аепнрапгон УДК 004 НЛ075 Я! ЬБК)2 Оч)-0)В !и7) О Фяебя ганг ии оеаы гаоноя нагеиагнкн н янбернынин Ы! У инегн М В Лоионосом.?О! ' О Анп)ры. 70!2 В Учсоном по~обии представ))сны вгатсриалы основной части семинарских занятий в поддеряг!гу лекционного курса !Алгоритмы и алгоритмические язь!ки» для студентов 1 курса факультета ВМК МГУг, Курс состоит из трех разделов— злемснты общей теории алгор!Пмов, язык про!.раммирования Си 11. 21, как пример алгоритмического языка; структуры данных и классические алгоритмы.
В поддсрткку курса проводятся семинары 1г!рактикум) — два семинарских занятия в недеяо, одно из которых посвящено разбору и усвоению нового материала, а второе — проверке домашних заданий в компьютерном классе. Предусмотрено проведение трех контрольных работ и коллоквиумов. Проверка домгцпних заданий и некоторых кОнтрольных раоот Осущсс!Вляется с помощью системы автоматической проверки Е)цг)йге !автор— Александр Чернов), В пособии рассматриваюгся основные темы семинарских занятий. Прн рассмотрении тем кратко формулируются ОснОВныс пОнятий и расставля!Отся акценты.
Приводятся решения типовых задач, которые следует рассмотреть на семинарском занятии. В качестве форм проис)куточной отчетности по курсу прсдусв!О)репы коллоквиумы и зачет с оценкой по практикуму, итоговая отчетность — письменный зкзамен по курсу. Типовые задачи коллокВиумОВ и зкзамснов приВсдсны в учебно-методическом пособии 13)1. Наряду с "традиционным" домагцним заданием, вьшолняемым в тетради, студентам даются задачи для самостоятельного решения с проверкой в системе автоматического тестирования. Задачи, прошедшие тестирование в системс, студент сдает преподавателю на занятии в компьютерном классе. Задачи домашних заданий шгубликованы в отдельном пособии «Практические задачи по ОНРЕДСЛЕНИЕ функции "/ препроцессора. Оажгт =- Оацпс — 2 ,ЯОГГ)Г Оопгг = 0; эсагб ("Ы", вводному курсу программированная 14) .
'1'емам 2 и 4 (операторы, выражения, целые типы) посвящены задачи первой домашней работы из пособия (раздел 1.1), теме 5 (функции) — задачи второй домашней работы (раздел 1.2), теме 6.1 (одномерные массивы) — третья домашняя работа (раздел 1.3). Тема 6.2 (строки) выделена в отдельнуГО четвертую домашнюГо работу (раздел 1.4). Темам 6.3 и 7 «многомерные массивы, указатели, динамическая память) посвящена пятая домаГпняя работа (раздел 1.5), а темам 3. 8, 9 — 10 (файлы, ввод-вывод, структурный тип и динамические структуры данных) — шестая домашняя работа (раздел 1.6). Авторы выражают благодарность всем преподавателям практикума на 1 потоке 1 курса, которые на практике провели работу по реализации этого курса в 2010-2012 гг. 1.
Язык программирования Си. Простейшие программы Пример Си-программы. Струкзура программного файла. Функции и переменные. Объявления и определения функций, объявления переменных. Области видимости переменных: глобальные и локальные переменные. Директивы Программа на языке Си состоит из объявления переменных нли функций, а также определения функций (программа может быть записана в нескольких файлах, но для простоты мы будем рассматривать программы из одного файла). В примере программы на рис. 1 определяются функции гона и вцГГГ. Также объявляется глобальная переменная соопв и несколько локальных переменных: в и )» в функции Гаазп и Ооипг в функции бцпо. баааеея "р б .
' ' Лрагрймме на си~ НОкезызйзо1дйя ОГГОЕЛелени ф а, -....е функций абсьявления глабельнььх и лэкальных лереиеяных. ЛГ пример мнигаатрачнага камментврГГЯ В би-99 возможны такие ОЛГГаагграчГГые / / к Омы е и т арии включение вагалавачнага файла Е тпс1О;)е <ВСГ3'.О. и> О Ь ОООПГ; / ~ глс ОВЛЬГЗВЯ ГГЕр~ МЕГГнйя * / с 13 ' ГГГК '1г х, 'ОГ у' ргЫГГ ("сумма ЪО и %б равна М~п", х, у, х + у); ООоге Г+Г 'Оуб ЛГГОО (яауо) сОГГг,в; /* лакальнгя переГяенная */ Г «Гзг а ЬГ // другие локальные переменные ьв); /* а как Обозначение адреса */ г; асане ("Ъ»!", ьЬ) вцл! (а, Ь!; Ь:- Ь ' 3; вцп! (а, Гцп" ( ) рт! ппт ( "Бызвалы фуккцик! в!зж Ъ!) раз'!и", »»Опт); Рис !.
Пример простой Си-лроеранлгы Глобальные переменные объявляются вне Определения функций., а:!Окальньщ - внутри функции нли плоха операторов. Областью еид!О!ости переменной является для локальной переменной — блок (составной оператор, см. раздел 3) илн функция, в которой она Объявлена, для глобальной переменной — программный файл„начиная со строки объявления. Внутри одной области видимости может быть лишь одна переменная с определенным именем. при этом возможно перекрытие инеи — если имена локальной и глобальной переменной совпадают, то в локальной области внлимости используется локю!ы!ая пере~синая (гщ рис.
1 ~ох~льна~ п~р~м~~н~я О»цп г п~ре~рывает глобальную внут)зи функции т!зп»). Выполнение программы начинается с функции тайп, которая имеет целочисленное возвращаемое значение, ~»О значение для функцин л!азп является кодом возврата программы для операционной системы, и есть договоренность, что завершившаяся успешно программа возвращает О, а возврат ненулевого значения делается в случае ошибки. В теле функции выполняктгся вычисления н могут вызываться другие функции (на рнс.
1 из функции клаки ..., вызываются функции а!На н тцпс). В месте вызова фтньции должно быль известно ее объявление. Д,и вызова ,~„,нкций, определения которых содержатся в других нр!тграммных файлах. Нх объявления включаются в текущий фай!л из заголовочных файлов с помощью директивы препроцессора й ! п»1»бе. '!ак, на рис. 1 объявления ф! Нкций ввода-вьщода э Оа !. Е и рта и с х, определения которь!х не содержатся в текущем прш раммном файле, включаются из файла вто !». Ь стандарп!ой библиотеки Сн. 1!ри написании программ на практических занятиях и сдаче домашних занятий рекомендуется придерживаться Одного стиля кодирования, например такого, которым записан пример на рисунке 1.
Используемый стиль кодирования должен устанавливать следующие ограни !ения (в скооках даются некоторые примеры ограничений для пршраммы на рисунке 1): я размер отступов н максимальная длина строки (2 и 8О СИМВОЛОВ); е имена переменных, типов и функций (осмысленные анг!!Оязычные имена, отражающие назначение переменных; для короткоживущих переменных, счетчиков цикла и т.п. допустимы общепринятые короткие имена н сокращения); я »бьяк!ЕНИЕ И ИНициалИЗЛЦИя ПсрЕМЕННЫХ (гтсрЕМЕННЫЕ разных типов — на разных строках, инициализация переменных на строке объявления): я стиль отступов и пробелов (блочные фигурныс скобки на отдельных строках, пробелы между именем фу~~пни и о~крыла~щей скобкой ~писка парамет)зов, пробелы между операндами бинарных операций). 2.
Типы данных. Вычисление Выражаний Типы дапных языка Си. Целые зпаковые и беззнаковые типы. 1)итералы, инициализация переменных. Присваивание ': переменных. Вычисление целочисленных выражений, приведение типов, Побочный эффект. Логические выражения. Точки последовательных вычислений. Побитовые операции. Условная операция. Старшинство операций.
Базовыми типамн языка Си явля1отся: сйа = 1символьный), 1пв 1НСЛЫЙ), 61сав (с плавающей точкой), чо1зЬ1Е (дВОйНОй тОЧНОСтИ), ча1О (без значения). Целочисле~ными типами являются типы (гб и сйаг. К згнм типам применимы модификаторы знаковости В1Чпвбуцпв10пеб. Если ЯВНО моДификатор знаковости нс указан, та целый тип 1пб по умолчанию знаковый - в' апой 1гп .
К типу 1пв применимы также модификаторы размера ВПОТ, 1опй, 1о«ц) 1опо. По пеубыванию размера целочисленные типы можно отсортировать как спа=, впотб, 1пб, 1«эпо, 1оп«7 1«эпо, при этом размер типа спе не может Оыть менее 2 байт, типа 1ОПΠ— не менее 4 байт, типа 1а«~0 (Опо — не менее 8 байт. Для современной 64-битной архитектуры х36-64 размер типа з и в составляет 4 байта, 1опо и 1опд 1опо — 3 байт.
ЦелОчисленньге копстанты записываются В Видс чисел в д~сятичноЙ, ~осьмери~~~Й или шестнадцатеричной си~~~ме; основание сис.темы счисления определяется префиксом, предшествующим цифрам числа: десятичные числа — без префикса (100), в«юьмеричные — с префиксом 0 (077=63), ц„,;«надцатеричные — с префиксом Ох илн Ох ',ОХ1Е--З1). Тцип целочисленной константы определяется буквенным с,««)хриксом„приписываемым к цифрам числа: константы без суффикса имеют знаковый тип 1пс. Суффикс Е соответствует типу Оопс(, суффикс ЕŠ— 1ОПО 1опц, а буква 0 (или и)— типу опв«спсо. например, константы 1ОООО, 34', 946ееп имечко« типь~ цпв)йпеб 1пк, 1опо, цпвйдпеа 1опй 1ОПО соответственно, При этом если константа без суффикса елин~ком велика, чтобы быть представлена типом (пс, она автоматически получит тип 1опо или 1опо 1опй.
Характеристики
Тип файла PDF
PDF-формат наиболее широко используется для просмотра любого типа файлов на любом устройстве. В него можно сохранить документ, таблицы, презентацию, текст, чертежи, вычисления, графики и всё остальное, что можно показать на экране любого устройства. Именно его лучше всего использовать для печати.
Например, если Вам нужно распечатать чертёж из автокада, Вы сохраните чертёж на флешку, но будет ли автокад в пункте печати? А если будет, то нужная версия с нужными библиотеками? Именно для этого и нужен формат PDF - в нём точно будет показано верно вне зависимости от того, в какой программе создали PDF-файл и есть ли нужная программа для его просмотра.