Н.В. Вдовикина, И.В. Машечкин, А.Н. Терехин, В.В. Тюляева - Программирование в ОС UNIX на языке Си (1114934)
Текст из файла
Московский Государственный Университет имени М.В. ЛомоносоваФакультет вычислительной математики и кибернетикиН.В.Вдовикина, И.В.Машечкин, А.Н.Терехин,В.В.ТюляеваПрограммирование в ОС UNIX на языке Си(учебно-методическое пособие)Москва2009УДК 681.3.06ББК 32.973-018.2C40Пособие подготовлено авторами на основании практического опытаиспользования и преподавания языка Си на факультете ВМиК. В данномпособии предложены методические рекомендации по проведениюсеминарских занятий по программированию, поддерживающих курс лекций«Операционные системы», читаемый в третьем семестре на факультетеВМиК МГУ.При подготовке пособия использованы задачи из «Сборника задач иупражнений по языку Си» Руденко Т.В..УДК 681.3.06ББК 32.973-018.2Рецензенты:член-корр.
РАН Л.Н.КоролевдоцентЕ.А.КузьменковаВдовикина Н.В., Машечкин И.В., Терехин А.Н., Тюляева В.В.С40 Программирование в ОС UNIX на языке Си: учебно-методическоепособие.Издательский отдел факультета ВМиК МГУ 2009, - 101 c.Печатается по решению Редакционно-издательского Совета факультетавычислительной математики и кибернетики МГУ им. М.В.
ЛомоносоваISBN 978-5-89407-354-5© Издательский отдел факультета вычислительнойкибернетики МГУ имени М.В. Ломоносова, 2009математикииВведение _________________________________________________ 6ТЕМА 1. Краткая характеристика языка. Базовые типы данных иоперации с ними ___________________________________________ 7Базовые типы данных ____________________________________________ 7Переменные и константы _________________________________________ 7Операции над базовыми типами ___________________________________ 9Приведение типов ______________________________________________ 10Упражнения ____________________________________________________ 12ТЕМА 2. Операторы управления ____________________________ 13Условный оператор if-else________________________________________ 13Переключатель switch ___________________________________________ 14Операторы цикла while и do-while ________________________________ 14Оператор цикла for _____________________________________________ 15Операторы break и continue ______________________________________ 16Упражнения ____________________________________________________ 16ТЕМА 3.
Понятие функции. Общая структура программы. Областивидимости и существования переменных _____________________ 18Понятие функции _______________________________________________ 18Возвращаемое значение _________________________________________ 18Прототипы функций ____________________________________________ 19Список параметров переменной длины____________________________ 20Общая структура программы ____________________________________ 22Область видимости переменных __________________________________ 22Область существования переменных ______________________________ 241.
Статические переменные ____________________________________________ 242. Автоматические переменные ________________________________________ 253. Регистровые переменные ___________________________________________ 26Стековый кадр _________________________________________________ 27Упражнения ____________________________________________________ 28ТЕМА 4. Указатели и массивы ______________________________ 29Указатели и операции с ними ____________________________________ 29Нетипизированные указатели ____________________________________ 30Понятие массива________________________________________________ 30Инициализация массивов ________________________________________ 31Указатели и массивы____________________________________________ 31Передача и возврат массивов из функции _________________________ 343Аргументы командной строки ____________________________________ 35Упражнения ____________________________________________________ 36ТЕМА 5.
Препроцессор ____________________________________ 39Включение файлов ______________________________________________ 39Макроподстановка ______________________________________________ 40Условная компиляция___________________________________________ 41ТЕМА 6.
Указатели на функции. Интерпретация сложныхдеклараций. Оператор typedef ______________________________ 43Указатели на функции __________________________________________ 43Интерпретация сложных деклараций _____________________________ 44Оператор typedef ________________________________________________ 45Упражнения ____________________________________________________ 45ТЕМА 7. Структуры и объединения. Программированиединамических структур данных_____________________________ 47Структуры и операции над ними _________________________________ 47Структуры со ссылками на себя __________________________________ 48Объединения ___________________________________________________ 50Работа с динамической памятью _________________________________ 51Упражнения ____________________________________________________ 52ТЕМА 8.
Файлы. Библиотечные функции для работы с файлами _ 54Открытие и закрытие файла _____________________________________ 54Чтение и запись символьных данных _____________________________ 55Чтение и запись бинарных данных________________________________ 58Позиционирование внутри файла _________________________________ 59Упражнения ____________________________________________________ 60ТЕМА 9. Программирование в среде OC UNIX. Организация работыс процессами _____________________________________________ 62Понятие процесса. PID. Контекст процесса ________________________ 62Порождение процессов __________________________________________ 62Механизм замены тела процесса __________________________________ 63Завершение процесса.
Ожидание завершения потомков _____________ 64Упражнения ____________________________________________________ 66ТЕМА 10. Низкоуровневый ввод/вывод________________________ 67Открытие, создание, закрытие файла. Права доступа к файлам ______ 67Чтение и запись данных _________________________________________ 68Позиционирование файлового указателя __________________________ 69Дублирование дескрипторов _____________________________________ 704Упражнения ____________________________________________________ 70ТЕМА 11.
Простейшие средства взаимодействия процессов _____ 71Программные каналы ___________________________________________ 71Сигналы _______________________________________________________ 73Упражнения ____________________________________________________ 78ТЕМА 12. Средства межпроцессного взаимодействия System V __ 80Именование разделяемых объектов _______________________________ 80Общие принципы работы с разделяемыми ресурсами _______________ 81Очередь сообщений _____________________________________________ 83Разделяемая память _____________________________________________ 88Семафоры _____________________________________________________ 90Упражнения ____________________________________________________ 98ЛИТЕРАТУРА __________________________________________ 1015ВведениеПособие подготовлено авторами на основании практическогоопыта использования и преподавания языка Си на факультетеВМиК. В данном пособии предложены методические рекомендациипо проведению семинарских занятий по программированию, поддерживающих курс лекций «Операционные системы», читаемый втретьем семестре на факультете ВМиК МГУ.При подготовке ряда примеров и упражнений использованызадачи из «Сборника задач и упражнений по языку Си» Руденко Т.В.([5]).6ТЕМА 1.
Краткая характеристика языка. Базовые типы данныхи операции с нимиЯзык Си – язык программирования высокого уровня, разработанный Д.Ритчи и его коллегами в 70х гг прошлого века. Он представляет собой минималистичный процедурный язык программирования, в котором упор сделан на эффективность компиляции. Многие возможности вынесены из базовых средств языка и предоставляются стандартной библиотекой, при этом прототипы и семантикафункций стандартной библиотеки фиксированы и не зависят от конкретного компилятора, вместе с которым она поставляется. Си частоназывают «высокоуровневым ассемблером», поскольку он предоставляет возможность писать эффективные программы с весьма низким уровнем абстракции.
В то же время Си не привязан к конкретной аппаратуре или операционной системе и предназначен для написания машинно-независимых и легко переносимых программ.Базовые типы данныхВ языке Си имеются основные управляющие конструкции, используемые в хорошо структурированных программах. Язык Сиобеспечивает разнообразие типов данных. Кроме базовых типов:char, int, float и double имеется возможность получать целуюиерархию выводимых типов данных из указателей, массивов, структур и объединений.Базовые типы данных могут быть использованы с квалификаторами: short, long, signed и unsigned. Всегда выполняется соотношение – размер short не больше размера int, а int, в свою очередь, не больше размера long. Конкретные размеры типов определяются реализацией компилятора.Переменные и константыИмена переменных могут состоять из букв (знак подчеркивания считается буквой) и цифр.
Первая литера обязательно буква.Большие и маленькие буквы различаются. Для внутренних имензначимыми являются первые 31 литера, а для внешних – 6 литер.Все переменные должны быть описаны до использования, например,int a;long b,c,d;unsigned char s;double m[100]; /* m - массив из 100 элементовтипа double, индексы принимаютзначения от 0 до 99 */К любой переменной в декларации может быть применен квалификатор const, указывающий на то, что ее значение далее изме-7няться не будет (для массива это означает, что ни один из его элементов не будет меняться)const char warnmsg[] = "warning: ";Особенности записи констант: целая константа, например, 123имеет тип int (или long int, если она столь велика, что тип int неможет вместить ее значение).
Характеристики
Тип файла PDF
PDF-формат наиболее широко используется для просмотра любого типа файлов на любом устройстве. В него можно сохранить документ, таблицы, презентацию, текст, чертежи, вычисления, графики и всё остальное, что можно показать на экране любого устройства. Именно его лучше всего использовать для печати.
Например, если Вам нужно распечатать чертёж из автокада, Вы сохраните чертёж на флешку, но будет ли автокад в пункте печати? А если будет, то нужная версия с нужными библиотеками? Именно для этого и нужен формат PDF - в нём точно будет показано верно вне зависимости от того, в какой программе создали PDF-файл и есть ли нужная программа для его просмотра.