- •Конспект лекций по информатике
- •Организация данных в эвм и основы программирования
- •1. Основные понятия языка программирования паскаль
- •1.1. Структурное программирование
- •1.2. Основные символы языка
- •1.3. Элементы языка
- •1.4. Интегрированная среда turbo pascal
- •1.5. Структура программы в turbo pascal
- •1.6. Определение типов
- •1.7. Операторы в программе
- •1.7.1. Операторные скобки
- •1.7.2. Операторы ввода
- •1.7.3. Оператор присваивания
- •1.7.4. Условный оператор
- •1.7.5. Пример простой программы
- •1.7.6. Оперетор безусловного перехода
- •1.8. Организация циклов
- •1.8.1. Использование операторов условного и безусловного перехода
- •1.8.2. Цикл с параметром
- •1.8.3. Цикл с предусловием - цикл while
- •1.8.4. Цикл с постусловием - цикл repeat
- •1.9. Оператор выбора варианта
- •1.10. Расположение операторов в программе
- •1.11. Концепция типов данных
- •2. Стандартные простые типы
- •2.1 Целый тип
- •2.1.1. Операции над данными целого типа:
- •2.2. Действительный тип
- •2.2.1. Операции над данными действительного типа:
- •2.3. Логический тип
- •Var p, q, r : Boolean;
- •2.3.1. Алгебра логики в Паскале
- •2.3.2. Законы алгебры логики в Паскале
- •2.4. Символьный тип
- •2.4.1. Символьные строковые константы
- •3. Нестандартные простые типы (определяемые пользователем)
- •3.1. Перечисляемый тип
- •3.2. Ограниченный тип (диапазон, интервал)
- •4. Процедуры и функции
- •4.1. Описание процедур
- •4.2. Стандартные процедуры
- •4.3. Описание функций
- •4.4. Стандартные функции
- •4.5. Итерация и рекурсия
- •4.6. Побочный эффект рекурсии
- •4.7. Предварительное описание (ссылки вперед)
- •5. Регулярные типы
- •5.1. Одномерный массив, или переменные с индексами
- •Алгоритмы сортировки массивов
- •1. Метод пузырька (метод обменной сортировки с выбором)
- •2. Сортировка выбором
- •3. Метод Шелла
- •4. Метод Хoopа
- •5.2. Многомерные массивы
- •5.3. Упакованные массивы
- •5.4. Строки
- •6. Множественные типы
- •6.1. Свойства множеств
- •6.2. Операции над множествами
- •7. Комбинированные типы
- •7.1. Описание записей и действия с ними
- •7.2. Оператор присоединения.
- •7.3. Записи с вариантами
- •8. Типизированная константа
- •8.1. Простая типизированная константа
- •8.2. Структурированная (сложная) типизированная константа
- •8.2.1. Типизированная константа массива
- •8.2.2. Типизированная константа записи
- •8.2.3. Типизированная константа множества.
- •9. Преобразование типов
- •9.1. Неявные преобразования типов
- •9.2. Использование стандартных функций для преобразования
- •9.3. Явные преобразования типов
- •9.5. Совместимость типов
- •10. Файловые типы
- •10.1. Определение файлового типа
- •10.2. Структура файла
- •10.3. Имя файла
- •10.4. Описание файлового типа
- •10.5. Файловая переменная
- •10.6. Операции над файлами
- •10.7. Типизированные файлы
- •10.8. Текстовые файлы
- •10.9. Нетипизированные файлы
- •10.10. Стандартные файлы inpuTиOutput
1.7.5. Пример простой программы
Решить квадратное уравнение АХ*Х + ВХ + С = 0
Возможности:
1) если А=0, В=0, С=0, то уравнение имеет бесконечное множество решений;
2) если А=0, В=0, С<>0, то уравнение не имеет решений;
3) если А=0, В<>0, С<>0, то уравнение имеет единственный корень Х=-С/В
4) если А<>0, В<>0, С<>0, то решение уравнения зависит от дискриминанта D=B*B-4AC;
4a) если D<0, то уравнение имеет комплексные корни;
4б) если D=0, то уравнение имеет два одинаковых корня X=-B/2A;
4в) если D>0, то уравнение имеет два корня X1 = (-B+D) / 2A;
X2=(-B-D)/2A
PROGRAMM QUADRA
VAR A,B,C,D,X1,X2: REAL;
BEGIN
WRITE(‘ВВЕДИТЕ А, В, С’);
READLN(A,B,C);
IF (A=0) AND (B=0) AND (C=0)
THENWRITELN (‘Уравнение имеет беск. множество решений’)
ELSE IF (A=0) AND (B=0) AND (C<>0)
THENWRITELN (‘Уравнение не имеет решений’)
ELSE IF (A=0) AND (B<>0) AND (C<>0)
THEN WRITELN (‘Корень Х = ’ -C/B)
ELSE IF D<0 THEN
WRITELN (‘Комплексные корни’)
ELSE
WRITELN (‘Два равных корня Х=’, -В/2А)
ELSE BEGIN D:=SWRT(B*B-4*A*C);
X1:=(-B+SQRT(D))/(2*A);
X2:=(-B-SQRT(D))/(2*A);
WRITELN(‘Корни уравнения: X1=‘,X1,’ X2=‘,X2)
END;
END.
1.7.6. Оперетор безусловного перехода
Обычно операторы программы на языке Паскаль выполняются в том порядке, в каком они записаны. Это естественный порядок выполнения программы. Однако иногда возникают ситуации, когда необходимо прервать естественный порядок и принудительно передать управление в заданную точку программы. Для этих целей используется оператор перехода, который имеет вид:
Gotoметка;
В качестве меток в языке Паскаль разрешается использовать целые числа из диапазона 0…9999 или идентификаторами. Метка может предшествовать любому оператору и отделяться от него двоеточием
Пример:
………….
Goto99;
……………
99:writeln(‘выполнен оператор’);
…………….
Все метки, прежде чем они используются в программе, должны быть описаны в разделе описания меток. Напомним еще раз одно из основных правил языка программирования Паскаль: все объекты, используемые в программе, должны быть описаны.Метки в этом смысле не представляют собой исключения. Раздел описания меток начинается со словаLABEL, за которым через запятую перечисляются используемые в программе метки,например:LABEL5, 99, 100,start,error;
Вопрос об использовании (точнее говоря, о неиспользовании)оператора перехода многократно обсуждался. Ясно, что бессистемное использование оператора перехода вредно, поскольку программа становится малопонятной и, что еще важнее, статический текст программы не отражает динамики ее выполнения. Общая рекомендация по использованию операторов перехода заключается в следующем: их следует использовать в каких-то необычных ситуациях, когда без них трудно обойтись. Чаще всего это возникает при различных нетипичных завершениях циклов. Во всяком случае, их следует стараться избегать.
Пример.Пусть производится последовательное чтение и суммирование какого-то ряда положительных чисел, причем их количество неизвестно. Концом последовательности служит первое же отрицательное число.
Programsumma;
Label99;
Var number,sigma: real;
Begin
Sigma:=0;
While sigma>=0 do
Begin
Read(number);
If number <0 them goto 99;
Sigma:=sigma+number;
End;
99: write(‘summa chisel=’,sigma);
end.
В данной программе с помощью заголовка цикла Whilesigma>=0doмоделируетсябесконечный цикл(сумма положительных чисел всегда положительна), и выход из цикла осуществляется с помощью оператора перехода.