- •1.Технология программирования. Основные понятия и подходы 8
- •Технология программирования. Основные понятия и подходы
- •1.1. Технология программирования и основные этапы ее развития
- •1.2. Жизненный цикл и этапы разработки программного обеспечения
- •Контрольные вопросы
- •2.Разработкаструктуры программы и модульное программирование
- •2.1. Цель модульного программирования
- •2.2. Основные характеристики программного модуля
- •2.3. Методы разработки структуры программы
- •Контрольные вопросы
- •3.Тестирование и отладка программного средСтВа
- •3.1. Принципы и виды отладки программного средства
- •3.2. Заповеди отладки программного средства
- •3.3. Автономная отладка программного средства
- •3.3. Комплексная отладка программного средства
- •Контрольные вопросы
- •4. Обеспечение качества программного средства
- •4.1. Общая характеристика процесса обеспечения качества программного средства
- •4.2. Обеспечение легкости применения программного средства
- •4.3. Обеспечение эффективности программного средства
- •4.4. Обеспечение сопровождаемости программного средства
- •Контрольные вопросы
- •5. Документирование программных средств составление программной документации
- •5.1. Виды программных документов
- •5.2. Пояснительная записка
- •5.3. Руководство пользователя
- •5.4. Руководство системного программиста
- •5.5. Основные правила оформления программной документации
- •Контрольные вопросы
- •6. Объектный подход к разработке программных средств
- •6.1. Объекты и отношения в программировании. Сущность объектного подхода к разработке программных средств
- •6.2. Особенности объектного подхода к разработке внешнего описания программного средства
- •6.3. Особенности объектного подхода на этапе конструирования программного средства
- •Контрольные вопросы
- •7. Постановка и алгоритмизация задач
- •7.1. Понятие алгоритма
- •7.2. Способы описания алгоритмов
- •Условные обозначения блоков
- •7.3. Структурные схемы алгоритмов
- •Контрольные вопросы
- •8. Основы языка
- •8.1. Алфавит языка
- •8.2. Структура программы
- •Контрольные вопросы
- •9. Типы данных
- •9.1. Целые типы
- •9.2. Вещественные типы
- •9.3. Логический тип
- •9.4. Символьный тип
- •9.5. Выражения
- •Арифметические операции
- •Операция отрицания
- •Операции конъюнкция, дизъюнкция, «исключающее» или
- •Приоритет операций
- •9.6. Константы
- •9.7. Совместимость типов данных
- •Контрольные вопросы
- •10. Линейные алгоритмы
- •10.1. Пустой и составной операторы
- •10.2. Оператор присваивания
- •10.3. Простейший ввод и вывод
- •Контрольные вопросы
- •11. Разветвляющиеся алгоритмы
- •11.1. Оператор перехода
- •11.2. Условный оператор
- •11.3. Оператор выбора
- •Контрольные вопросы
- •12. Циклические алгоритмы
- •12.1. Циклы с параметром
- •12.2. Циклы с условием
- •Контрольные вопросы
- •13. Пользовательские типы данных
- •13.1. Перечисляемый тип
- •13.2. Тип - диапазон
- •13.3. Массивы
- •13.4. Записи
- •13.5. Множества
- •Контрольные вопросы
- •14. Работа со строками
- •Контрольные вопросы
- •15. Процедуры и функции
- •15.1. Параметры-значения
- •15.2. Параметры-переменные
- •15.3. Параметры-константы
- •15.4. Открытые параметры-массивы
- •15.5. Бестиповые параметры
- •15.6. Процедурные типы
- •15.7. Рекурсия
- •Контрольные вопросы
- •16. Типизированные константы
- •Контрольные вопросы
- •17. Модули
- •Interface
- •Implementation
- •Interface
- •18.2. Поиск с барьером
- •83.3. Двоичный (бинарный) поиск
- •Контрольные вопросы
- •19. Алгоритмы сортировки
- •19.1. Сортировка выбором
- •19.2.Сортировка обменом (методом «пузырька»)
- •19.3. Сортировка включением
- •Контрольные вопросы
- •20. Файлы
- •20.1. Текстовые файлы
- •20.2. Компонентные файлы
- •20.3. Бестиповые файлы
- •20.4. Последовательный и прямой доступ
- •Контрольные вопросы
- •21.Программирование с использованием динамической памяти
- •21.1. Указатели и операции над ними
- •21.2. Процедуры и функции, работающие с указателями
- •Контрольные вопросы
- •22. Модуль crt (основные возможности)
- •Контрольные вопросы
- •22. Модуль graph (основные возможности)
- •22.1. Базовые процедуры и функции
- •22.2. Экран и окно в графическом режиме
- •22.3. Вывод точки
- •22.4. Вывод линии
- •22.5. Построение прямоугольников
- •22.6. Построение многоугольников
- •22.7. Построение дуг и окружностей
- •22.8. Работа с текстом
- •Контрольные вопросы
- •Заключение
- •Библиографический список
11.2. Условный оператор
Условный оператор if позволяет изменить порядок выполнения команд в зависимости от значения некоторого логического выражения, т.е. он осуществляет ветвление вычислительного процесса. Условный оператор имеет вид (рис. 11.3.):
Рис. 11.3. Синтаксическая диаграмма условного оператора
В случае истиности логического выражения, стоящего в условии, выполняется <оператор1>, а <оператор2> пропускается. При ложном значении логического выражения пропускается <оператор1> и выполняется <оператор2>.
Оператор if может быть полным (присутствуют обе ветви) или неполным (else–ветви нет, при ложном условии ничего не делается). По правилам каждая из ветвей может содержать либо один выполняемый оператор, либо несколько, объединенных в составной. Точка с запятой перед else считается ошибкой.
Пример 11.1: Ввести целое число. Вывести соответствующий ему символ ASCII–таблицы, либо сообщить, что такого символа нет (0–31 –коды управляющих символов, затем до 256 – коды печатаемых символов).
program ascii_symbol;
var i : word;
begin
write('Введите целое число: ');
readln(i);
if (i>31) and (i<256) then
writeln('Соответствующий символ – ', chr(i))
else writeln('Такого символа нет');
readln
end.
11.3. Оператор выбора
Если у вас не два возможных варианта выполнения программы, а больше, то может использоваться оператор выбора CASE (рис. 6.4.).
of ; :
else
Рис. 11.4. Синтаксическая диаграмма оператора выбора
Выражение после ключевого слова case называется селектором. Селектор должен иметь упорядоченный тип, кроме типа longint. Константы называются метками случаев. они должны относиться к тому же типу, что и переключатель.
Работа оператора case заключается в следующем. Вычисляется значение селектора. Если это значение совпадает с одной из меток случаев, то выполняется оператор, записанный после нее. Если значение селектора не совпало ни с одной из меток случаев, то выполняется оператор, следующий за else. Если ветвь else отсутствует, то управление передается оператору, следующему за переключателем. Диапазоны и метки случаев не должны пересекаться.
Пример 11.2: Вводится целое число, если это цифра, то определить четная она или нет, а если число, то определить попадает ли оно в диапазон от 10 до 100, если нет, то выдать соответствующее сообщение.
program chislo;
var i : integer;
begin
write('Введите целое число: ');
readln(i);
case i of
0, 2, 4, 6, 8 : writeln('Четная цифра');
1, 3, 5, 7, 9 : writeln('Нечетная цифра');
10...100, 200 : writeln('Число от 10 до 100 или 200');
else writeln('Число либо отрицательное, либо > 100, но не 200');
end;
readln
end.
Контрольные вопросы
Сформулируйте определение разветвляющегося алгоритма.
Перечислите виды алгоритмов ветвления.
Дайте определение условного оператора.
Охарактеризуйте работу оператора выбора.
Приведите пример использования операторов ветвления.
12. Циклические алгоритмы
Турбо Паскаль позволяет использовать три различных оператора для организации повторяющихся последовательностей действий, которые называют циклами.
12.1. Циклы с параметром
Оператор циклаfor организует выполнение одного оператора заранее определенное число раз. Его еще называют цикл со счетчиком (рис. 12.1.).
Рис. 12.1. Синтаксическая диаграмма цикла с параметром
Идентификатор после ключевого слова for называется управляющей переменной или параметром цикла. Управляющая переменная должна иметь упорядоченный тип, совместимый по присваиванию с первым (начальным) и вторым (конечным) выражениями в заголовке цикла. Следовательно, начальное и конечное выражения также должны быть упорядоченного типа.
На первом шаге цикла параметр принимает начальное значение (н.з.). В этот же момент происходит вычисление (к.з.) – значения параметра на последнем шаге цикла. После каждого выполнения тела цикла, если параметр цикла не равен к.з., происходит изменение параметра на следующее большее или меньшее значение в зависимости от формы оператора for, т.е. неявно происходит выполнение одного из двух операторов:
<параметр> := succ(<параметр>);
<параметр> := pred(<параметр>);
В случае н.з. > к.з. в первой форме оператора или н.з. < к.з. во второй его форме ошибки не происходит, но цикл не выполняется ни разу. После завершения работы цикла значение параметра остается равным к.з.
Использовать цикл for при заранее известном количестве повторений. Не изменять параметр в теле цикла. При использовании кратных (вложенных) циклов применять разные переменные в качестве параметров. Определять до цикла значения всех используемых в нем переменных. Не ставить точку с запятой после do.
Пример 12.1: Вводятся 10 чисел, найти среди них количество положительных.
program cycle_for1;
var i, kn : byte; x : real;
begin
kn:=0;
for i:=1 to 10 do
begin
writeln('Введите ',i,' число: ');
readln(x);
if x>0 then kn:=kn+1 {увеличиваем количество на 1}
end;
writeln('Вы ввели ', kn, ' положительных чисел.');
readln
end.
Пример 12.2: Напечатать буквы от 'Z' до 'A'.
program cycle_for2;
var c : char;
begin
for c:='Z' downto 'A' do write(c);
end.
Пример 12.3: Вычислить n–е число Фиббоначчи. Числа Фиббоначчи строятся следующим образом: f(0)=f(1)=1; f(i+1)=f(i)+f(i–1); для i>=1. Это пример вычислений по рекуррентным формулам.
program fib;
var a, b, c : word; i, n : byte;
begin
write('введите номер числа Фиббоначчи ');
readln(n);
a:=1; {a=f(0), a соответствует f(i–2)}
b:=1; {b=f(1), b соответствует f(i–1)}
for i:=2 to n do
begin
c:=a + b; {c соответствует f(i)}
a:=b; b:=c; {в качестве a и b берется следующая пара чисел}
end;
writeln(n, '–е число Фиббоначчи =', b); {для n>=2 b=c}
end.