Главная » Все файлы » Просмотр файлов из архивов » Документы » Краткий конспект семинарских занятий по языку C - Н.Д. Васюкова_ И.В. Машечкин_ В.В.Тюляева_ Е.М.Шляховая

Краткий конспект семинарских занятий по языку C - Н.Д. Васюкова_ И.В. Машечкин_ В.В.Тюляева_ Е.М.Шляховая

2019-05-08СтудИзба

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

Документ из архива "Краткий конспект семинарских занятий по языку C - Н.Д. Васюкова_ И.В. Машечкин_ В.В.Тюляева_ Е.М.Шляховая", который расположен в категории "". Всё это находится в предмете "операционные системы" из 3 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .

Онлайн просмотр документа "Краткий конспект семинарских занятий по языку C - Н.Д. Васюкова_ И.В. Машечкин_ В.В.Тюляева_ Е.М.Шляховая"

Текст из документа "Краткий конспект семинарских занятий по языку C - Н.Д. Васюкова_ И.В. Машечкин_ В.В.Тюляева_ Е.М.Шляховая"

Московский Государственный Университет им. М.В. Ломоносова

Факультет вычислительной математики и кибернетики

Н.Д.Васюкова , И.В.Машечкин , В.В.Тюляева , Е.М.Шляховая 
Краткий конспект семинарских занятий

по языку Си.

(учебно-методическое пособие для студентов II курса)

Москва

1999

УДК 681.3.06

ББК 32.973-018.1

В20

В пособии представлен конспект семинарских занятий по программированию на языке Си, проводящихся на факультете ВМиК в поддержку основного курса лекций «Системное программное обеспечение». Рассматриваются основные особенности языка, специфика применения. Пособие рекомендуется для студентов, аспирантов и преподавателей.

УДК 681.3.06

ББК 32.973-018.1

Рецензенты:

доцент В.Г.Баула

доцент А.Н.Терехин

Васюкова Н.Д., Машечкин И.В., Тюляева В.В., Шляховая Е.М.

В20 “Краткий конспект семинарских занятий по языку Си

(учебно-методическое пособие)”.

Издательский отдел факультета ВМиК МГУ

(лицензия ЛР №040777 от 23.07.96), 1999, - 50 c.

Печатается по решению Редакционно-издательского Совета факультета вычислительной математики и кибернетики МГУ им. М.В. Ломоносова

ISBN 5-89407-052-X

© Издательский отдел факультета вычислительной математики и кибернетики МГУ им. М.В. Ломоносова, 1999

Введение. 4

ТЕМА 1. Краткая характеристика языка. Базовые типы данных. Квалификаторы. Переменные и константы. Операторы и операции. Таблица приоритетов операций. Выражения. Приведение типов. 4

ТЕМА 2. Операторы управления: if, switch, while, do while, for, break, continue. Простейшие функции ввода/вывода: getchar, putchar, printf. 10

ТЕМА 3. Понятие указателя. Работа с адресами. Указатели и массивы. 14

ТЕМА 4. Понятие функции. Оператор return. Понятие прототипа функции. Механизм передачи параметров. 17

ТЕМА 5. Общая структура программного файла. Области видимости и существования переменных. Препроцессор. 22

ТЕМА 6. Инициализация одномерных массивов. Массивы указателей и их инициализация. Аргументы командной строки. Указатели на функции. 30

ТЕМА 7. Многомерные массивы и их инициализация. Передача многомерных массивов в качестве параметров функций. Указатель на массив. Интерпретация сложных деклараций. Оператор typedef. 34

ТЕМА 8. Структуры, объединения, битовые поля. Программирование динамических структур данных. 38

ТЕМА 9. Файлы. Библиотечные функции для работы с файлами. 43

Приложение 1. Приоритеты и порядок вычисления операторов. 49

ЛИТЕРАТУРА. 50

Введение.

Пособие подготовлено авторами на основании практического опыта использования и преподавания языка Си на факультете ВМиК. В данном пособии авторы сделали попытку рассмотреть наиболее «тонкие», с точки зрения освоения, возможности языка, которые часто опускаются при изучении или используются не совсем верно. К таким особенностям языка отнесены правила работы с типами данных, работа с указателями, структура программы, видимость и существование переменных и т.п. В то же время, в пособии не рассматриваются многие детали языка, хорошо и полно изложенные в доступной литературе, такие как синтаксис языка, редко используемые конструкции (например, volatile), описание библиотечных функций. При написании пособия авторы часто опирались на сведения из популярной книги Б.Кернигана и Д.Ритчи (Язык программирования Си. М., «Финансы и статистика», 1992г.).

ТЕМА 1. Краткая характеристика языка. Базовые типы данных. Квалификаторы. Переменные и константы. Операторы и операции. Таблица приоритетов операций. Выражения. Приведение типов.

Язык Си – язык программирования высокого уровня, тесно связанный с системой UNIX. Разработан Кеном Томпсоном и Денисом Ритчи в 1972 году. В данном пособии рассматривается стандарт ANSI C, принятый в 1989г.

В Си имеются основные управляющие конструкции, используемые в хорошо структурированных программах. Язык Си обеспечивает разнообразие типов данных. Кроме базовых типов: 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, указывающий на то, что ее значение далее изменяться не будет (для массива это означает, что ни один из его элементов не будет меняться)

const char warnmsg[] = "warning: ";

Особенности записи констант: целая константа, например, 123 имеет тип int. Целое значение может также иметь восьмеричное или шестнадцатеричное представление. Восьмеричное начинается с нуля (017), а шестнадцатеричное начинается с 0x или 0X (0x1a). Константа типа long завершается буквой l или L, например, 123L. Беззнаковые константы заканчиваются буквой u или U. Константы типа double имеют десятичную точку или экспоненциальную часть, например, 123.4 или 1.234е2. Константы типа float заканчиваются буквой f или F. Константы типа long double заканчиваются буквой l или L, например, 123.4L.

Константа типа char записывается в виде литеры, обрамленной одиночными кавычками (‘*’, ‘s’). Некоторые литеры записываются с помощью заранее определенных эскейп-последовательностей (‘\n’-новая строка, ‘\t’-табуляция, ‘\a’-сигнал звонок и т.д.). Кроме того, произвольный восьмеричный код можно задать в виде ‘\ooo’, где ooo-одна, две или три восьмеричные цифры или ‘\xhh’, где hh-одна или две шестнадцатеричные цифры.

Строковая константа (строка) это ноль или более литер, заключенных в двойные кавычки (“asdf”). Во внутреннем представлении в конце строки присутствует ‘\0’, поэтому, фактически – это массив типа char из n+1 элементов, где n число значащих символов.

В Си имеются средства описания перечислимого типа, для этого используется ключевое слово enum. При описании перечислимого типа полностью задается набор его значений:

enum palette{whitе, black=10, red, green=-1,

blue};

/* white, black, red, green и blue – константы перечислимого типа palette */

enum palette color;

/*color – переменная типа palette, ей может быть присвоена любая из констант этого типа*/

color = white;

Именование констант перечислимого типа уникально в пределах области видимости. Данные константы ассоциированы с целым типом Си и могут использоваться везде, где используются константы типа int. По умолчанию, константам перечислимого типа присваиваются последовательные значения (0,1,2, ….). Если для константы указано “= значение”, то ей присваивается это значение, а следующая за ней константа получает значения на 1 больше и т.д. Таким образом в примере константы перечислимого типа palette имеют следующие значения:

white - 0

black - 10

red - 11

green - -1

blue - 0

В языке Си определены операции следующих типов:

  1. Арифметические операции (+, -, *, /, %):

  • унарные операции + и - (изменяет знак стоящей справа величины) имеют более высокий приоритет, чем бинарные операции + и - ;

  • бинарные операции +(сложение) и –(вычитание) имеют одинаковый приоритет, ниже приоритета операций *(умножение), /(деление) и %(остаток от деления);

  • операция / с операндами целых типов выполняется с усечением дробной части;

  • операция % определена только для операндов целых типов;

  • арифметические операции с одинаковым приоритетом выполняются слева направо.

  1. Логические операции (!, &&, ||)

  • результатом унарной операции ! (логическое НЕ) будет 0 для ненулевого операнда и 1 для нуля;

  • приоритет бинарной операции &&(логическое И) выше приоритета бинарной операции ||(логическое ИЛИ).

  1. Операции отношения(<, <=, >, >=, ==, !=)

  • операции <, <=, >, >= имеют одинаковый приоритет, ниже приоритета операций сравнения на равенство == и != ;

  • операции отношения имеют более низкий приоритет, чем арифметические операции, но более высокий, чем логические операции && и ||.

  1. Побитовые операции (&, |, ^, <<, >>, ~)

  • все побитовые операции можно применять только к операндам целых типов (знаковым и беззнаковым char, shot, int и long);

  • результат поразрядных операций & и | не совпадает с результатом логических операций && и ||, например, для x=2 и y=5 результатом x&y будет 0, тогда как результатом x&&у будет 1;

  • операции <<(сдвиг влево) и >>(сдвиг вправо) могут использоваться как эффективное умножение и деление на степени 2: x<<n умножает x на 2 в n-ой степени, а x>>n делит x на 2 в n-ой степени, если число неотрицательное.

  1. Операции присваивания (=,+=, -=, *=, /=, %=, <<=, >>=, &=, |=, ^=)

  • типом и значением любой операции присваивания является тип и значение ее левого операнда после завершения присваивания.

  1. Инкрементная (++) и декрементная(--) операции

  • могут быть как префиксными, так и постфиксными, так например, ++x увеличивает x на 1 до того, как его значение будет использовано, а x++ - после;

  • эти операции можно применять только к переменным: запись ++(x+y) не верна.

  1. Условная(тернарная) операция (?:)

  • в выражении x?y:z первым вычисляется значение выражения x, и если он не нуль, то результатом считается значение выражения у, иначе – значение выражения z.

Полная таблица операций с правилами их выполнения приведена в Приложении 1.

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

Примечание. Читать схему следует следующим образом: «если один из операндов имеет тип long double, то другой операнд приводится к long double» и т.д. Особого внимания требует случай, когда один из операндов имеет тип long, а другой – unsigned int: если представление типа long включает все значения типа unsigned int, то unsigned int приводится к long, если же это не так – оба операнда приводятся к unsigned long (эта особенность вызвана тем, что стандарт языка Си не накладывает ограничений на машинное представление переменных, кроме того, что машинное представление переменной long должно быть не короче машинного представления переменной int).

При выполнении операции присваивания тип правой части приводится к типу левой, например:

...int x;

double y=2.9;

x=2+y;

Тип правой части – double, а переменной x будет присвоено значение 4.

Кроме автоматического приведения типов в выражении можно использовать операцию явного приведения типа:

(<тип>)<выражение>

Примечание. В языке Си нет логического типа, а любое значение отличное от нуля считается истинным. Выражение-условие принимает значение 1, если оно истинно и 0, если ложно. Например:

...int c,d;

c=getchar();

d=c>=’0’ && c<=’9’;

Если введенный символ – цифра, то переменной d будет присвоено значение 1, в противном случае 0.

Вычисление логического выражения прекращается как только становится известна истинность или ложность результата.

Задачи.

  1. Какое значение примет переменная z?

int x=1, y=2, z;

    1. z=x & y | x && x==y;

    2. z=x & y | (x && y);

  1. Изменятся ли значения переменных x,y,z и какое значение будет присвоено переменной k?

int x, y, z, k;

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