- •Оглавление
- •Билет 1: Понятия о структурном программировании
- •Билет 2: Моделирование стандартных управляющих структур
- •Билет 3: структура программы
- •Билет 4: организация (структура) модуля
- •Билет 5: Переменные
- •Билет 6: Система типов языка
- •Билет 7: Арифметические типы языка c
- •Билет 8: Константы
- •Билет 9: КонстантныеобъектывязыкеСи.
- •Билет 10: Константные объекты
- •Билет 11. Переменные, понятие об объекте, lvalue и rvalue выражения.
- •Билет 12. Время жизни переменных.
- •Билет 15. Операторы. Приоритет и ассоциативность операторов.
- •Билет 19: Побочные эффекты в языке Си.
- •Билет 20: Организация функций. Определение функций
- •Билет 25: Инструкция If…else. Программирование разветвлений.
- •Билет 26: Инструкция switch и организация разветвленных алгоритмов.
- •Билет 27: Циклические алгоритмы, классификация, функциональная схема
- •Билет 28: Циклические инструкции.
- •Билет 29: инструкция for и арифметические циклы
- •Билет 30: Инструкция while и do...While, интерационные циклы
- •Билет 31: Циклы с выходом. Бесконечные циклы
- •Билет 32. Организация вложенных циклов
- •Билет 33: Массивы. Определение и инициализация одномерных массивов
- •Билет 34. Массивы. Определение и инициализация двумерных массивов
- •Билет 35. Связь указателей и массивов
- •Билет 40. Указатели. Определение типизированных и нетипизированых указателей. Модель, используемая при работе с указателями. Операции с указателями.
- •Билет 41: Операции с указателями
- •Билет 42. Использование указателей для возврата из функции через параметры
- •Билет 43. Указатели на функцию. Определение. Операции. Использование в параметрах функции
- •Билет 44. Типичные ошибки при работе с массивами
- •Билет 45. Массив указателей, динамическая матрица
- •Билет 46. Понятие некорректного указателя.
- •Билет 47. Организация строк. Общие сведения
- •Билет 48. Ввод/вывод строк
- •Void funk(“Kozin”); - при этом ничего не возвращается. Данная запись используется довольно редко.
- •Билет 52. Организация динамического одномерного массива
- •Билет 53. Структуры. Определение типа структур. Определение переменных в структуре и инициализация. Операции со структурой
- •Билет 54. Обращение к полям структуры. Массивы структур
- •Билет 55. Использование структур при работе с функциями. Указатели на структуры
- •Билет 58: Файловый ввод-вывод. Символьный ввод-вывод в языке Си.
- •Синтаксис преобразования вывода
- •Билет 60: Файловый ввод-вывод. Строковый ввод-вывод в языке Си.
- •Билет 61: Файловый ввод-вывод. Блоковый ввод-вывод в языке Си.
- •Int fseek(file *f, long int колич_байт, int начало_отсчета);
Билет 1: Понятия о структурном программировании
С общей точки зрения процесс решения задачи на ЭВМ включает в себя следующие этапы:
Постановка задачи
построение математической модели
разработка алгоритма
составление программы
реализация программы на ЭВМ
анализ результатов.
Для организации процесса проектирования кодирования программ со сложной иерархической структурой служит структурное программирование, которое включает в себя три главные составляющие:
Проектирование сверху вниз
Модульное программирование
Структурное моделировании
Проектирование сверху – разбиение сложной задачи на более простые (я бы даже сказал на элементарные позадачи), решить которых не составляет особого труда.
Разбивание задачи на модули – непременный компонент любого большого программного проекта. С ростом размеров проекта качество выполнения модуляризации играет очень важную роль для успеха.
Заключительный этап структурного программирования – написание программы – в основе которой лежит метод структурного программирования. Это позволяет получать программы более удобные для тестирования, модификации и использования.
Правила структурного программирования:
В каждой структуре используется один вход и одних выход
Алгоритм может быть построен так, что все его структуры образовывают линейную цепочку
Следует максимально использовать модульный принцип
Билет 2: Моделирование стандартных управляющих структур
Использование стандартных управляющих структур – основное положение структурного программирования. Прежде всего, рассмотрим, что относится к стандартным управляющим структурам:
Альтернатива (в си это if… else…)
Действие или обход (в си это if но без else)
Циклы While и Do While. К ним же относятся счётчики (for)
Следование. Сам Козин не знает что это такое, но подозревает что моделью следования является «блок».
Доказано, что любая задача, любой алгоритм может быть реализован с использованием только этих основных управляющих структур.
Теперь рассмотрим особенности управляющих структур. Каждая управляющая структура имеет только один вход и один выход. Хорошим стилем программирования является написание такого кода (таких функций, например), в котором только один вход и один выход. Например, в функциях рекомендуется делать только один единственные return.
На экзамене необходимо показать, как реализовываются стандартные управляющие структуры в языке Си. Это написано в других билетиках, так что не буду это писать сейчас, особенно если учесть, что ко мне уже написало много народу, которые просят быстрее выложить сырые билетики. Я только щас получил некоторые билеты, кстати.
Билет 3: структура программы
Исходная программа представляет собой совокупность следующих элементов:
Директивы препроцессора - специфицируют действия препроцессора по преобразованию текста программы перед компиляцией
Указания компилятору - Указания компилятору — это специальные инструкции, которым компилятор языка Си следует во время компиляции.
Объявления переменной – задаёт имя и атрибуты переменной
Определение переменной – помимо задания её имени и атрибутов, выделяет для неё память. Также определение переменной задаёт её начальное значение (явно или не явно).
Объявление функции задает ее имя, тип возвращаемого значения и может задавать атрибуты ее формальных параметров.
Определение функции специфицирует тело функции, которое представляет собой составной оператор (блок), содержащий объявления и операторы. Определение функции также задает имя функции, тип возвращаемого значения и атрибуты ее формальных параметров.
Объявление типа позволяет программисту создать собственный тип данных. Оно состоит в присвоении имени некоторому базовому или составному типу языка Си. Для типа понятия объявления и определения совпадают.
Исходная программа может содержать произвольное число директив, указаний компилятору, объявлений и определений. Их синтаксис описан в последующих разделах. Порядок появления этих элементов в программе весьма существен; в частности, он влияет на возможность использования переменных, функций и типов в различных частях программы
Для того чтобы программа на языке Си могла быть скомпилирована и выполнена, она должна содержать, по крайней мере одно определение — определение функции. Эта функция определяет действия, выполняемые программой. Если же программа содержит несколько функций, то среди них выделяется одна главная функция, которая должна иметь имя main. С нее начинается выполнение программы; она определяет действия, выполняемые программой, и вызывает другие функции. Порядок следования определений функций в исходной программе несуществен. Здесь не совсем верно – в том случае, если есть определение функции, но нету её объявления, то эту функцию МОЖНО вызвать, например из main, НО только в том случае, если определение функции стоит ВЫШЕ определения функции main. Так что в такой ситуации порядок следования определений функции СУЩЕСТВЕНЕН.
Если программа содержит только одну функцию, то она и является главной (и должна иметь имя main)
Напишу от себя то, чего здесь не хватает:
Структура проекта на языке С представляет из себя совокупность .с и .h файлов. Файл .c содержит определения функций, объявления функций (в случае если функции вызываются только внутри файла и не вызываются из других файлов, их можно объявить прямо в .c файле, не объявляя в заголовочном файле), константы и указания о подключаемых к файлу заголовочных файлов. Файлы .h не содержат определения функций, в них записываются объявления функций (тех, который находятся в одном с-файле, а вызываются из другого с-файла, к которому подключен рассматриваемый h-файл), определение