
- •Представление чисел Целые числа
- •Вычитание
- •Умножение
- •Деление
- •Беззнаковые целые
- •Простые типы данных
- •Тип данных char
- •Int a[10], b[20]; // 2 массива на 10 и 20 целых чисел
- •Int a[n]; // размер массива задан через константу
- •Int Sum ( int a[], int n ) // a[] – параметр-массив
- •Int a[20], b[30], s;// здесь надо ввести массивы a и b
- •Выражения
- •Операция присваивания
- •Арифметические операции
- •Операции сравнения
- •Порядок вычисления выражений
- •Выражения и операторы.
- •Цикл for
- •Цикл while
- •Цикл do-while
- •Оператор return
- •Оператор goto
- •Оператор break
- •Оператор continue
- •Очередь
- •Циклическая очередь в массиве
- •Рекуррентные соотношения
- •Внешняя и внутренняя форма представления числа
- •Классификация сортировок
- •Трудоемкость алгоритмов сортировки и поиска Сортировки выбором и вставками
- •Циклическое слияние группами по s элеметов
- •Исторический анализ
- •Логический анализ: cтандартные программные контексты
- •От общего к частному
- •Одно из трех
- •Особенности функции как модуля
- •Интерфейс передачи параметров в функцию
- •Примеры модульного проектирования
- •Сущность трансляции. Компиляция и интерпретация
- •Трансляция и ее фазы
- •Модульное программирование, компоновка
- •Понятие связывания. Статическое и динамическое связывание
- •Модульное проектирование на «классическом» Си Препроцессор
- •Области видимости и время жизни переменных
- •Все эти библиотеки условно разделены по категориям: Стандартные заголовочные файлы языка Си:
Одно из трех
Обратим внимание на некоторые особенности процесса, которые остались за пределами «заповедей» и которые касаются содержательной стороны проектирования.
Цель (результат) = действие + цель (результат). Каждый шаг проектирования программы заключается в том, что словесная формулировка алгоритма заменяется на одну из трех возможных конструкций языка, элементы которой продолжают оставаться в неформальной, словесной формулировке. Если же с каждым фрагментом программы связать результат ее работы (или цель), то каждый шаг детализации должен сопровождаться преобразованием формулировок:цель (результат) = выбранная конструкция + цель (результат) вложенной конструкции.
Последовательность
действий, связанных
результатом. Многие
почему–то считают, что основа логики
сложной программы – у
словные
и циклические действия. Понятно, что
они определяют лицо программы. Но
на самом деле наиболее часто используемой
программной конструкцией является
простая последовательность действий.
Поэтому первое, что необходимо сделать
на очередном шаге детализации алгоритма
– проверить, нельзя ли его представить
в виде последовательности шагов «делай
раз, делай два…». Во-вторых, между
различными шагами существуют связи
через общие переменные: предыдущий шаг
формирует значение переменной, придавая
ей определенный «смысл», последующие
шаги ее используют. Это является
обязательным элементом проектирования,
без него нельзя продвигаться дальше в
детализации выделенных шагов.
Последовательность действий, связанных результатом является предпочтительной конструкцией еще и потому, что она обеспечивает синтаксическую независимость (отсутствие вложенности) выполняемых действий. Если в алгоритме выполняется проверка условий (в виде нетривиального действия), а также действия, являющиеся следствием этой проверки, то лучше использовать связующую переменную (например, признак). Например, при проверке и сохранении простого числа лучше использовать признак, а сохранение вынести за пределы цикла проверки.
//------------------------------------------------------------------------------
// Запоминание простого числа в виде
// последовательности действий, связанных признаком
int pr=0;
for (int n=2; n<v; n++) // Проверка - Установить признак делимости
if (v%n==0) { pr=1; break; }
if (pr==0) A[i++]=v; // Признак не установлен - запоминание
//-----------------------------------------------------------------------------
// Неструктурированный вариант – запись внутри цикла
n=2;
while (v%n!=0){
n++;
if (n==v) { A[i++]=v; break; }
}
Модульное проектирование – наиболее очевидная вещь в технологии программирования. Тем более, что любая промышленная технология производства рано или поздно приходит к сборке сложных изделий из набора совместимых и взаимозаменяемых деталей. Никому не надо объяснять термин «интерфейс». Тем не менее, наиболее сложно соблюдать эту заповедь: разрабатывать модульные программы. Отчасти это происходит потому, что взаимодействие модулей в программе несколько отличается от взаимодействия между модулями в другой технической системе.