Сдам Сам

ПОЛЕЗНОЕ


КАТЕГОРИИ







Нижегородский государственный университет им. Н.И. Лобачевского (ННГУ)





Нижегородский государственный университет им. Н.И. Лобачевского (ННГУ)

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

 

 

И.А. Фомина

 

УЧЕБНО-МЕТОДИЧЕСКОЕ ПОСОБИЕ

ПО КУРСУ «ПРОГРАММИРОВАНИЕ (ЯЗЫК СИ)»

Рекомендовано методической комиссией факультета ВМК
для студентов ННГУ, обучающихся по направлению подготовки
09.03.03«Прикладная информатика»

 

Нижний Новгород

2015 год

 

УДК 004.4

Ф-76

Ф-76 Фомина И.А. Учебно-методическое пособие по курсу «Программирование (язык Си)». – Нижний Новгород: Нижегородский госуниверситет, 2015. – 33 с.

 

Рецензент: к. т.-н., доцент Карпенко С. Н.

 

 

В учебно-методическом пособии представлены основные цели и задачи курса, требования к результатам его освоения. Приводятся структура и содержание основных разделов дисциплины, темы лабораторных работ и методические рекомендации по выполнению основных лабораторных работ. В результате выполнения данных работ, студенты приобретают навыки программирования в среде Microsoft Visual Studio. Учатся применять типовые алгоритмы при решении прикладных задач.

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

 

© Нижегородский государственный

Университет им. Н.И. Лобачевского, 2015

© Фомина И. А

 


Содержательное описание курса

1.1. Цели освоения дисциплины

Целью курса является изучение методов программирования для овладения знаниями в области технологии программирования; подготовка к осознанному использованию, как языков программирования, так и методов программирования

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

1.2. Место дисциплины в структуре основных образовательных программ

Данная дисциплина является базовой для последующих курсов, связанных с вопросами алгоритмизации и программирования.

В курс включены синтаксис, семантика и техника программирования на языке СИ, типовые алгоритмы обработки массивов и строк.

Освоение данной дисциплины необходимо для дальнейшего изучения дисциплин по выбору студента, к числу которых относятся курсы «Объектно-ориентированное программирование (С++)», «Высокоуровневые методы программирования (С#)», «Шаблоны проектирования», специальные курсы, а также современные технологии по разработке, распространению и поддержке программного обеспечения.



 

Формирование компетенций

В результате освоения программы курса у студента должны быть сформированы общекультурные, профессиональные и профессионально-прикладные компетенции.

Данная дисциплина способствует формированию следующих компетенций, предусмотренных ФГОС ВПО по направлению подготовки 09.03.03 «Прикладная информатика»

А)Студент должен обладать следующими общекультурными компетенциями (ОК):

· владением культурой мышления, способностью к обобщению, анализу, восприятию информации, постановке цели и выбору путей ее достижения (ОК-1);

· способностью проявлять инициативу, брать на себя ответственность в условиях риска и принимать нестандартные решения в проблемных ситуациях (ОК-4);

· способностью находить, обрабатывать и анализировать информацию из разных источников (в том числе из глобальных компьютерных сетей) (ОК ¾ 6);

· способностью к самоорганизации и самообразованию (ОК-7);

· способностью использовать навыки работы с информацией из различных источников для решения профессиональных и социальных задач (ОК-12).

 

Б) Профессиональные компетенции (ПК) – способность применять теоретические знания на практике

· способность применять основные законы, принципы и правила фундаментальных математических и естественных наук для моделирования объектов и процессов исследуемых предметных областей (ОПК-1);

· способность понимать значение информации в развитии современного общества, сознавать опасности и угрозы, возникающие в этом процессе, анализировать, выбирать и применять методы и средства для обеспечения информационной безопасности, в том числе защиты государственной тайны (ОПК-2)

· способность решать стандартные задачи профессиональной деятельности на основе информационной и библиографической культуры с применением информационно-коммуникационных технологий и с учетом основных требований информационной безопасности (ОПК-4).

· способностью проводить тестирование компонентов программного обеспечения ИС (ПК-8);

· способностью применять системный подход и математические методы в формализации решения прикладных задач (ПК-15).

 

1.4 Требования к результатам освоения дисциплины «Программирование (С)»

В результате изучения дисциплины студент должен:

иметь представление:

· о конструировании алгоритмов,

· о методах структурного и модульного программирования,

· об основных приемах программирования задач на языке С;

· об абстракциях основных структур данных (стек, очереди, списки, деревья и т.п.) и методах их обработки и способах реализации,

уметь:

· самостоятельно выбирать метод решения задачи

· разрабатывать алгоритмы,

· реализовывать алгоритмы на языке программирования Си,

· описывать основные структуры данных,

· реализовывать методы обработки данных,

· работать в средах программирования;

приобрести навыки:

· структурного программирования,

· алгоритмизации,

иметь опыт:

разработки алгоритмов,

реализации их в виде программы на языке СИ,

описания структур данных,

описания основных базовых конструкций,

программирования на языке высокого уровня,

работы в различных средах программирования.

 

Структура курса «Программирование (С)»

Плановая нагрузка

Общая трудоемкость дисциплины составляет 3 зачетных единицы 108 часов.

№ п/п Раздел Дисциплины Семестр Неделя семестра Виды учебной работы, включая самостоятельную работу студентов и трудоемкость (в часах) Формы текущего контроля успеваемости (по неделям семестра) Форма промежуточной аттестации (по семестрам)
        лекции практика с/р  
Основные понятия. Структура программы на языке С 1-2    
Препроцессор языка СИ    
Типы данных, выражения и операции   Отчёт по л/р
Операторы управления программой 5-6   Отчёт по л/р
Указатели, массивы и адресная арифметика 7-8   Отчёт по л/р
Функции и структура программы 9-10   Отчёт по л/р
Обработка символьных строк 11-12   Отчёт по л/р
Динамическое распределение памяти 13-14   Отчёт по л/р
Ввод, вывод и стандартная библиотека ввода-вывода 15-16   Отчёт по л/р
Типы, определяемые пользователем 17-18   Зачет

Рекомендуемые образовательные технологии: лекции, самостоятельная работа, использование интерактивных форм обучения для самостоятельной работы студентов.

2.2. Содержание разделов дисциплины

 

1. ВВЕДЕНИЕ В ЯЗЫК С.

История создания языка С. Сравнение с другими языками программирования. Структура программы на языке С. Основные понятия: алфавит, константы, идентификаторы, ключевые слова, комментарии к программе, директивы препроцессора.

 

2. ПРЕПРОЦЕССОР ЯЗЫКА С.

Директива #define, создание и использование макросов. Предопределенные макроимена. Директива #include. Директивы условной компиляции.

 

3. ТИПЫ ДАННЫХ, ВЫРАЖЕНИЯ И ОПЕРАЦИИ.

Базовые типы данных. Модификаторы типов. Арифметические, логические, битовые операции, операции сравнения. Дополнительные операции (инкрементация, декрементация, условное присваивание, скобки, операция запятая, операция sizeof). Конструирование выражений. Явное и неявное преобразование типов в арифметических выражениях.

 

4. ОПЕРАТОРЫ УПРАВЛЕНИЯ ПРОГРАММОЙ.

Пустой оператор. Операторы - выражения. Блок операторов. Операторы цикла while, do-while, for. Операторы break и continue. Операторы return, exit(). Операторы условия if, switch.

 

5. УКАЗАТЕЛИ, МАССИВЫ И АДРЕСНАЯ АРИФМЕТИКА.

Работа с адресами и массивами в языке С. Описание адресных переменных и массивов. Операции нахождения адреса и косвенной адресации. Адресная арифметика и работа с указателями. Многомерные массивы, указатели, указатель на указатель, индексированный указатель, массивы указателей.

 

6. ОБРАБОТКА СИМВОЛЬНЫХ СТРОК.

Определение строк и строковых констант. Инициализация строк. Указатели и строки. Библиотечные функции работы со строками. Реализация библиотечных функций. Массивы строк.

 

7. ФУНКЦИИ И СТРУКТУРА ПРОГРАММЫ.

Создание и использование простой функции. Формальные и фактические параметры функции. Передача аргументов в функции. Массивы как аргументы функций. Возвращаемое значение. Прототип функции. Рекурсивные функции. Аргументы функции main. Многофайловая программа. Область видимости переменных. Классы памяти и работа с переменными. Автоматические, статические и внешние переменные.

 

8. ДИНАМИЧЕСКОЕ РАСПРЕДЕЛЕНИЕ ПАМЯТИ.

Статические и динамические массивы. Функции выделения, перераспределения и освобождения памяти: malloc(), calloc(), realloc(), free(). Выделение памяти для одномерных и многомерных массивов.

 

9. ВВОД, ВЫВОД И СТАНДАРТНАЯ БИБЛИОТЕКА ВВОДА-ВЫВОДА.

Основные понятия: потоки и файлы; текстовые и бинарные потоки; идентификация файлов и потоков. Последовательный ввод-вывод: открытие и закрытие файлов; ввод-вывод символов, строк, целых чисел; форматированный символьный ввод-вывод; ввод-вывод блоков данных. Прямой файловый ввод-вывод: основные понятия; позиционирование локатора файловой позиции, функции получения адреса. Обновление информации в файле. Функции консольного ввода-вывода.

 

10. ТИПЫ, ОПРЕДЕЛЯЕМЫЕ ПОЛЬЗОВАТЕЛЕМ.

Структуры. Массивы структур. Указатели на структуры. Структуры в качестве аргументов функций. Структуры данных: стек, очередь, списки, бинарные деревья. Объединения. Битовые поля. Перечислимый тип. Переименование типов - typedef.

 

Лабораторный практикум

Общие положения о выполнении лабораторных работ

Лабораторные работы в компьютерных классах служат для самостоятельной работы студентов над учебными задачами с целью выработки и закрепления практических навыков программирования, полученных в рамках теоретического курса «Программирование (язык С)». Лабораторные занятия предполагают изучение студентами интегрированной среды программирования Microsoft Visual Studio, а также подготовку и отладку программ по каждому из разделов курса.

1. Форматированный ввод-вывод. Типы данных.

2. Явное и неявное преобразование типов

3. Разветвляющиеся и циклические алгоритмы

4. Битовые операции

5. Массивы

6. Указатели и массивы

7. Работа со строками

8. Оформление программ с использованием функций

9. Определяемые пользователем типы: структуры, объединения, битовые поля.

10. Библиотеки ввода-вывода. Работа с файлами

Задания на лабораторные работы определяются преподавателем из списка задач, приведенных ниже.

 

3.2. Тематические задания по курсу «Программирование (язык СИ).

Тема: операции

Программы на языке Си строятся из операторов, операторы - из выражений, выражения - из операндов и операций.

В языке Си имеется три основных класса операторов:

· арифметические;

· логические;

· операторы сравнения и побитовые операторы.

Операции присваивания

Операция Результат Ограничения Примеры выражений
х=у у приводится к типу х; х получает значение у х, у могут быть любого типа, но не массивом int a, b=2; char c='A' (код 65) float d=2.2; a=b (результат=2) a=c/2 (результат=32) а=d (результат=2)
х <оп>=у оп - знак операции (+, -, *, /, %, <<, >>, &, |, ^) х оп у приводится к типу х, х получает значение х оп у. х, у могут быть любого типа, но не массивом или структурой k+=2 (k=k+2) k*=2 (k=k*2) k>>=2 (k=k>>+2) k&=2 (k=k&2)

Логические операции

Операция Результат Ограничения Примеры выражений
х && у логическое И: 1, если х и у не равны 0; 0 - иначе результат типа int 3&&2 (результат =1) 3&&0 (результат =0)
х|| у логическое ИЛИ: 0, если х и у равны 0; 1 - иначе результат типа int 3 || 2 (результат =1) 3 || 0 (результат =1) 0 || 0 (результат =0)
логическое отрицание (НЕ) 1- если х =0, иначе 0 результат типа int !0 (результат =1) !3 (результат =0)

Операции сравнения

Отношения

Операция Результат Ограничения Примеры выражений
х < у (x > y) 1, если х меньше (больше) у; 0- иначе результат типа int 3 < 2 (результат 0) 3 > 2 (результат 1)
х <= у (x >=y) 1, если х меньше или равно (больше или равно) у; 0- иначе результат типа int 3 <= 2 (результат 0) 3 >= 2 (результат 1) 3 >= 3 (результат 1)

Сравнение на равенство.

Операция Результат Ограничения Примеры выражений
х == у 1, если х равно у; 0- иначе результат типа int 3 == 2 (результат 0) 3 == 3 (результат 1)
х != у 1, если х не равно у; 0- иначе результат типа int 3 != 3 (результат 0) 3 != 2 (результат 1)

Адресные операции.

Операция Результат Ограничения Примеры выражений
&x вычисление адреса: ре-зультат - адрес операнда х х должно указывать на некоторое значение int *pi, i=5; pi = &i; (pi содержит адрес переменной i)
операция косвенной адресации: значение по адресу, хранящемуся в х, приведенное к базовому типу х х должен быть указателем int *pi, i=5, j; рi = &i; j = *pi; -> j=5
х.у доступ к элементу структуры или объеди-нения; результат - значение элемента у из х х должно быть струк-турой или объединени-ем, у - элемент структу-ры или объединения struct stud {char fio[20]; long nzk; }current; strcpy (current.fio, "Иванов И. И."); current.nzk=999887;
х->у доступ к элементу структуры или объеди-нения по указателю; результат - значение элемента у из х х должно быть структурой или объединением, у - элемент структуры или объединения struct stud current; struct stud *ptr; ptr=&current; strcpy (ptr->fio, "Иванов И. И."); ptr->nzk=999887;

В языке Си операции выполняются в очередности, определяемой их приоритетом.

Таблица приоритетов.

Прио- ритет Знак операции Тип операции Порядок выполнения
( ) [ ] . - > первичные (вызов функции, выбор элемента массива, доступ к полю структуры) слева направо
- ~ ! * ++ -- & (тип) sizeof унарные справа налево
* / % мультипликативные слева направо
+ - аддитивные слева направо
<< >> сдвиг слева направо
< <= > >= отношение (неравенство) слева направо
= != сравнения на равенство слева направо
& побитовое И слева направо
^ побитовое исключающее ИЛИ слева направо
| побитовое ИЛИ слева направо
&& логическое И слева направо
|| логическое ИЛИ слева направо
? : условие справа налево
= *= /= %= += -= <<= >>= присваивание справа налево
, запятая слева направо

 

Задание 3. Что напечатает следующая программа?

main()

{

//основные арифметические операции

int x, y, z ;

x = - 3 + 4 * 5 - 6 ; printf ("%d\n",x);

x = 3 + 4 % 5 - 6 ; printf ("%d\n",x);

x = - 3 + 4 % 5 - 6 /5 ; printf ("%d\n",x);

x = (6 + 7) % 5 / 6 ; printf ("%d\n",x);

//операции присваивания

x=2;

x *= 3 + 2 ; printf ("%d\n",x);

x *= y = z = 4 ; printf ("%d\n",x);

x = y = = z ; printf ("%d\n",x);

x = = (y = z) ; printf ("%d\n",x);

//логические операции и операции увеличения

x = 2; y = 1; z = 0;

x = x && y || z ; printf ("%d\n",x);

x = x || ! y && z ; printf ("%d\n",x);

x = y = 1;

z = x ++ - 1 ; printf ("%d %d\n",x, z);

z += - x ++ + ++ y ; printf ("%d %d\n",x, z);

z = x / ++ x ; printf ("%d %d\n",x, z);

//побитовые операции

x = 03; y = 02; z = 01;

printf ("%d\n", x | y & z);

printf ("%d\n", x | y & ~ z);

printf ("%d\n", x ^ y & ~ z);

printf ("%d\n", x & y && z);

x = 1; y = - 1;

printf ("%d\n", ! x | x);

printf ("%d\n", ~ x | x);

printf ("%d\n", x ^ x);

x <<=3 ; printf ("%d\n", x);

y <<=3 ; printf ("%d\n", y);

y >>=3 ; printf ("%d\n", y);

//отношения и условия

x = y = z = 1;

x += y += z ; printf ("%d\n", x < y ? y : x);

printf ("%d\n", x < y ? x ++ : y ++);

printf ("%d %d\n", x, y);

printf ("%d\n", z += x < y ? x ++ : y ++);

printf ("%d %d\n", z, y);

x = 3 ; y = z = 4;

printf ("%d\n", (z >= y >= x) ? 1: 0);

printf ("%d\n", z && y >= x );

//выполнение операций и их приоритеты

int res;

x = y = z = 1;

res = ++x || ++y && ++z;

printf ("x=%d\t y=%d\t z=%d\t res=%d\n", x, y, z, res);

x = y = z = 1;

res = ++x && ++y || ++z;

printf ("x=%d\t y=%d\t z=%d\t res=%d\n", x, y, z, res);

x = y = z = -1;

res = ++x || ++y && ++z;

printf ("x=%d\t y=%d\t z=%d\t res=%d\n", x, y, z, res);

x = y = z = -1;

res = ++x && ++y || ++z;

printf ("x=%d\t y=%d\t z=%d\t res=%d\n", x, y, z, res);

x = y = z = -1;

res = ++x && ++y && ++z;

printf ("x=%d\t y=%d\t z=%d\t res=%d\n", x, y, z, res);

Тема: преобразование типов

· неявное преобразование(выполняет компилятор)

Результат любого вычисления будет преобразовываться к наиболее точному типу данных, из тех типов данных, которые участвуют ввычислении.

· явное преобразование(выполняет программист)

Для явного приведения типов имя типа указывается в круглых скобках перед переменной или выражением.

Задание 4. "Вечный календарь". Даны натуральные числа d, m, g, которые обозначают число, месяц и год. Определить день недели на который падает введенная дата.

Замечание. Дата должна находиться в диапазоне от 1582 до 4902 гг. Номер дня недели (воскресенье - 0, понедельник - 1, ..., суббота - 6) равен остатку от деления на 7 значения выражения

[ 2.6 * m - 0.2] + d + y + [y / 4] + [x / 4] - 2 * x.

Если полученное значение будет отрицательным, для получения истинного значения необходимо прибавить 7.

d - номер дня в месяце (1, 2, ...);

m - номер месяца, нумерация начинается с марта (март - 1, апрель - 2,..., декабрь - 10, январь и февраль считаются месяцами с номерами 11 и 12 предыдущего года;

y - две младшие цифры года;

x - две старшие цифры года;

[a] - целая часть а.

Группа операторов

break;

case константа 2:

Группа операторов

break;

¼

default:

Группа операторов

}

Компьютер тестирует переменную на соответствие какой-либо константе (целой или символьной) из списка констант. При обнаружении такого соответствия компьютер выполняет оператор или блок операторов, стоящий за определенной константой. Часть default является необязательной; если она отсутствует, то в случае неудовлетворения всех проверок никакого действия не предпринимается.

· операторы циклов for, while, do while.

Цикл со счётчиком:

for (выражение1; выражение2; выражение3) оператор;

Выражение – любое, допустимое в Си выражение. Как правило, выражение1 – инициализация, выражение2 – условие продолжения цикла, выражение3 – изменение счётчика. Цикл выполняется, если условное выражение истинно. Как только условие примет значение "ложь" реализуется выход из цикла и начинает выполняться оператор, следующий за оператором цикла.

Цикл с предусловием:

while (условие) оператор;

Оператор может быть простым, составным или пустым. Цикл будет выполняться до тех пор, пока условие цикла принимает значение "истинно".

Цикл с постусловием:

do {

Тема: побитовые операции.

Побитовые логические операции оперируют с битами, каждый из которых может принимать только два значения: 0 или 1. Применяются к данным типа int или char, включая модификаторы (long, short, unsigned, signed).

· & конъюнкция (логическое И)

· | дизъюнкция (логическое ИЛИ)

· ~ инверсия (логическое НЕ)

· ^ исключающее ИЛИ

Результат выполнения операции не влияет на соседние биты. Для каждого бита результат выполнения операции будет получен в соответствии с таблицей.

a b a & b a | b ~a a ^ b

>> - сдвиг вправо. Логический сдвиг сдвигает биты числа вправо, дописывая слева нули, если переменная unsigned. Арифметический сдвиг аналогичен логическому, но значение слова считается знаковым числом, представленным в дополнительном коде. При правом сдвиге старший бит сохраняет свое значение.

<< - сдвиг влево – сдвигает биты влево, дописывая справа нули. Вышедшие за пределы числа биты отбрасываются. Арифметический сдвиг влево идентичен логическому.

Арифметические сдвиги влево и вправо используются для быстрого умножения и деления на 2

Задание 7. "Задача о ранце". Задано количество предметов, вес и стоимость каждого предмета. Известна грузоподъёмность ранца. Определить номера предметов, которые следует поместить в ранец, чтобы суммарная стоимость была максимальной.

Замечание. Использовать переменные типа int. Если бит = 1, предмет кладётся в ранец, 0 - в противном случае.

Задание 8. Программа формирования строки, состоящей из символов '0' и'1', дающая двоичное преставление величины х целого типа.

Задание 9. В 'k' присвоить значение 'j'- го бита из 'i'. Установить '1' в 'j'-ый бит. Погасить 'j'- ый бит. Инвертировать значение 'j'- го бита.

Задание 10. Осуществить циклический сдвиг влево на заданное число позиций.

Массивы символов.

Задание 11. Шифр замены. Каждый символ исходного сообщения заменяется символом, сдвинутым на N позиций в исходном алфавите, где N - ключ шифра. Например, при N= 3 ("шифр Цезаря") буква "а" заменяется на "г", "б" -на "д" и т.д. Расшифровать сообщение.

Замечание. Можно воспользоваться кодировкой АSCII.

Задание 12. Программа преобразования строки символов в число. Обратное преобразование - число в строку символов.

Задание 13. С использованием указателей написать функции:

копирования строк;

слияния двух строк;

поиска строки в подстроке;

печати строки в обратном порядке.

сравнения двух строк.

Числовые массивы.

Задание 14. Программа сортировки массивов целых или действительных чисел. (Алгоритм - по выбору.)

Задание 15. "Задача мастера". Задано количество станков, подлежащих ремонту ( m), время на ремонт каждого станка ( t), потери от простоя станка в единицу времени ( с). Определить порядок ремонта станков с целью минимизации суммарных потерь от простоя станков:

F = c1 * t1 + c2 * (t1 + t2) + c3 * (t1 + t2 +t3) + ...+ cm * (t1 + t2 + ... + tm)

Рекомендация. Оптимальной является перестановка, в которой станки упорядочены по убыванию отношения ci / ti.

Тема: функции.

(101.05.08. met_ci.doc. http://www.unn.ru/books/resources.html)

Указатели на структуры

struct addr a_info;

struct addr *ptr; /* объявление указателя структуры */

ptr =& person; помещает адрес person в уазатель ptr.

Адрес элемента структуры можно определить с помощью операции &:

& ptr ->zip

Имеются два способа, которые можно использовать для ссылки к элементу в структурной переменной при заданном указателе на эту переменную.

1. использует явные указательные ссылки: (*ptr).zip– доступ к элементу zip. Скобки вокруг указателя необходимы, т.к. оператор «.» (точка) имеет более высокий приоритет, чем оператор «*» (звездочка). Данный способ считается устаревшим в свете сегодняшних стандартов.

2. использует оператор -> (стрелка), что явно короче по сравнению с первым способом. Вместо оператора точки для доступа к элементу структуры, когда задан указатель на переменную структуры, используется оператор стрелки.

рtr ->zip = 603600;

рtr ->street = ‘Г’;

strcpy (ptr ->name, «Иванов»);

Вопросы для контроля

1. Структура и конструкция программы на языке СИ: используемые символы, константы, идентификаторы, ключевые слова, комментарии

2. Типы данных и их об явление. Использование sizeof. Константы и переменные. Правила области видимости.

3. Явное и неявное преобразование типов.

4. Выражения и операции присваивания. Простое присваивание. Составное присваивание.

5. Операции увеличения и уменьшения

6. Инициализация данных: переменных, массивов, структур.

7. Операции языка СИ. Мультипликативные операции. Аддитивные операции Приоритеты операций и порядок вычислений

8. Операции языка СИ: арифметические, логические, присваивания, сравнения, тернарная, sizeof.

9. Операторы управления программой: IF, SWITCH.

10. Операнды и операции. Преобразования при вычислении выражений. Простые и составные операнды.

11. Циклы с предусловием и постусловием.

12. Вложенные циклы. Операторы прерывания цикла - continue, break.

13. Одномерные и многомерные массивы. Методы доступа к элементам массивов. Использование sizeof.

14. Строки. Функции работы со строками.

15. Указатели и массивы. Массивы указателей. Указатели на многомерные массивы

16. Указатели и адресная арифметика. Операции с указателями. Модели памяти.

17. Динамическое распределение памяти. Динамическое размещение массивов.

18. Определяемые пользователем типы данных. Структуры.

19. Массивы структур Указатели на структуры.

20. Определяемые пользователем типы данных. Битовые поля.

21. Общий формат функций. Прототипы функций. Вызов функций.

22. Оператор return. Значения, возвращаемые функцией.

23. Функции. Передача массивов и структур в функции.

24. Форматированный ввод и вывод.

25. Консольный ввод и вывод.

26. Потоки и файлы. Связь потоков и файлов.

27. Ввод/вывод с произвольным доступом.

28. Функции работы с файлами для ввода символов, строк, чисел.

Критерии оценок

Зачтено Выполнены все лабораторные работы. Обоснование программы чётко структурировано, изложено в терминах дисциплины. Могут быть допущены незначительные ошибки или недочеты, исправленные студентом с помощью «наводящих» вопросов преподавателя.
Не зачтено Выполнены не все лабораторные работы. Студент не может пояснить алгоритм или объяснить основные алгоритмические конструкции. Дополнительные и уточняющие вопросы преподавателя не приводят к коррекции ответа студента не только на поставленный вопрос, но и на другие вопросы дисциплины.

 

4.3. Учебно-методическое и информационное обеспечение дисциплины «Программирование (С)»

а) основная литература

1. Березин Б.И., Березин С.Б. Начальный курс С и С++. М: Диалог-Мифи, 2000. – 288 c.

2. Громов Ю.Ю., Татаренко С.И. Программирование на языке Си http://citforum.ru/programming/c.shtml.

3. Керниган Б., Ритчи Д., Фьюзер А. Язык программирования Си. Задачи по языку Си: Пер. с англ. М.: Финансы и статистика, 1992. – 272 с.

4. Павловская. Т. А. C/C++. Программирование на языке высокого уровня / СПб.: Питер, 2003. —461 с.: ил.

5. Подбельский В.В., Фомин С.С. Программирование на языке Си. М.: Финансы и статистика, 2000. – 600 с.

6. Страуструп Б. Язык программирования Си++: Пер. с англ. М.: Радио и связь, 1991.- 352 с.

7. Тарасов В.Л. Упражнения по языку программирования Си. Учебное пособие. Н.Н.: Нижегородский университет, 1996.

8. Трой. Д. Программирование на языке Си для персонального компьютера IBM PC: Пер. с англ. М.: Радио и связь, 1991.

9. Хенкок Л., Кригер М. Введение в программирование на языке Си: Пер. с англ. М.: Радио и связь, 1986.

10. Чернышова Н.Н., Фомина И.А. Методические указания для выполнения лабораторных работ по курсам “Основы алгоритмизации” и "Язык СИ" для студентов специальности «Информационные системы". ННГУ, факультет вычислительной математики и кибернетики, кафедра “Информатики и автоматизации научных исследований”, Н.Новгород, 2000г.

11. Франка П. С++: учебный курс. - СПб.: Питер, 2001. - 528 с.: ил.

12. Фомина И.А. Методические указания по курсу «Язык программирования СИ» (темы: «Указатели», «Массивы», «Функции»). Фонд образовательных электронных ресурсов Нижегородского государственного университета. Регистрационный номер 101.05.08. met_ci.doc. http://www.unn.ru/books/resources.html, 2005

13. Шилдт, Герберт. Полный справочник по С, 4-е издание. : Пер. с англ. - М,: Издательский дом "Вильямс", 2002. - 704 с. : ил. - Парал.т ит. англ.

 

б) дополнительная литература

1. Бондарев В.М., Рублинецкий В.И., Качко Е.Г. Основы программирования. — Харьков: Фолио, Ростов н/Д: Феникс, 1997. — 368 с.

2. Вирт Н. Алгоритмы и структуры данных. — М.: Мир, 1989.

3. Вирт Н. Алгоритмы + структура данных = программы. — М.: Мир, 1985.

4. Керниган Б., Пайк Р. Практика программирования/ Пер. с англ. – СПб.: Невский диалект, 2001. – 381 с.

5. Окулов С.М. Основы программирования. — М.: ЮНИМЕДИАСТАЙЛ, 2002. — 424 с.

Материально-техническое обеспечение дисциплины (модуля) «Программирование (С)». Использование терминал - класса для выполнения лабораторных и самостоятельных работ (в стандартной комплектации). Программное обеспечение: интегрированная среда программирования Microsoft Visual Studio.


Оглавление

1. Содержательное описание курса. 3

1.1. Цели освоения дисциплины.. 3

1.2. Место дисциплины в структуре основных образовательных программ. 3

1.3 Формирование компетенций. 3

1.4 Требования к результатам освоения дисциплины «Программирование (С)» 4

2. Структура курса «Программирование (С)». 5

2.1 Плановая нагрузка. 5

2.2. Содержание разделов дисциплины.. 6

3. Лабораторный практикум. 7

3.1. Общие положения о выполнении лабораторных работ. 7

3.2. Тематические задания по курсу «Программирование (язык СИ). 8

3.3. Рекомендации по выполнению лабораторных работ. 22

4. Учебно-методическое обеспечение самостоятельной работы студентов. 28

4.1. Вопросы для контроля. 28

4.2. Критерии оценок. 29

4.3. Учебно-методическое и информационное обеспечение дисциплины «Программирование (С)». 29

 


 

Ирина АлександровнаФомина

 

УЧЕБНО-МЕТОДИЧЕСКОЕ ПОСОБИЕ

Нижегородский государственный университет им. Н.И. Лобачевского (ННГУ)

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

 

 

И.А. Фомина

 

УЧЕБНО-МЕТОДИЧЕСКОЕ ПОСОБИЕ









Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:


©2015- 2018 zdamsam.ru Размещенные материалы защищены законодательством РФ.