
- •Введение
- •1. Общая схема решения задачи на персональном компьютере
- •2. Свойства алгоритмов. Основные алгоритмические структуры
- •Линейные алгоритмы
- •Развилка
- •3. Консольные приложения в Delphi. Введение в язык Object Pascal. Общая структура программы. Идентификаторы, комментарии, пробелы. Раздел описаний и раздел операторов
- •4. Арифметические типы данных. Числовые константы и переменные. Оператор присваивания. Выражения
- •5. Ввод-вывод данных в Паскале
- •6. Арифметические операции. Стандартные математические функции
- •7. Пример выполнения задания
- •8. Символьный тип данных
- •9. Логический тип данных. Операции сравнения. Логические операции. Битовые операции
- •10. Условный оператор. Блок. Оператор выбора
- •11. Операторы цикла
- •12. Метки. Оператор goto. Процедура Halt
- •13. Интервальные типы данных. Оператор type. Массивы
- •14. Защита от ошибок и отладка программ. Стандартная техника отладки
- •15. Процедуры и функции. Сфера действия описаний
- •16. Множества
- •Include ( множество , выражение );
- •18. Погрешности при вычислениях
- •19. Файлы. Работа с текстовыми файлами
- •Задания для лабораторных работ Лабораторная работа №1. Вычисление простейших арифметических выражений
- •Лабораторная работа №2. Разветвления
- •Лабораторная работа №3. Простейшие циклы
- •Лабораторная работа №4. Итерационные циклы. Вычисление суммы ряда
- •Лабораторная работа №5. Целые числа
- •Лабораторная работа №6. Вычисления с хранением последовательностей
- •Лабораторная работа №7. Двумерные массивы.
- •Лабораторная работа №8. Обработка последовательностей символов
- •Лабораторная работа №9. Использование подпрограмм
7. Пример выполнения задания
Задача. Вычислить при х = 2.1; у = 0.59; z = -4.8 значения a и b, используя формулы:
;
.
Вывести результаты, сопровождая их вывод именами выводимых переменных. Задание выполнить в виде консольного приложения. Повторить задание 1, используя функции из модуля math
Блок-схема алгоритма имеет вид:
Создадим
простое консольное приложение. Для
этого запустим Delphi и выполним ряд
действий. Выберем команду
File
New
Other
(Файл
Новый
Другое),
выделим пиктограмму Console
Application (Консольное приложение)
и щелкнем на кнопке ОК. При этом на экране
появляется окно редактора кода, в котором
введем следующий текст:
program Project1;
{$APPTYPE CONSOLE}
uses SysUtils;
var a,b,c,x,y,z: single;
proba:integer;
function Rus(mes: string):string;
var i: integer;
begin
for i:=1 to length(mes) do
case mes[i] of
'А'..'п' : mes[i] := Chr(Ord(mes[i]) - 64);
'р'..'я' : mes[i] := Chr(Ord(mes[i]) - 16);
end;
rus := mes;
end; { Rus }
begin { program }
writeln(Rus('Введите x, y, z'));
readln (x,y,z);
c:=sin(x*x)/cos(x*x);
a:=y*c*sqr(c)+sqrt(z*z/(y*y+x*x));
b:=ln(y+x*x)+sqr(sin(z/y));
writeln('a=',a:8:3,' b=',b:8:3);
readln;
end. { program}
Сохраним программу, выбрав последовательно команды File Save Project As… Нажав клавишу <F9>, выполните программу. При этом на экране появляется такое окно работающего приложения.
Перейдем к следующему заданию. В листинг добавляем ссылку на модуль math, что позволяет использовать прямо функцию tan(аргумент) и функцию возведения в степень роwеr(основание, степень).
program Project1;
{$APPTYPE CONSOLE}
uses SysUtils, math;
var a,b,c,x,y,z: single;
proba:integer;
function Rus(mes: string):string;
var i: integer;
begin
for i:=1 to length(mes) do
case mes[i] of
'А'..'п' : mes[i] := Chr(Ord(mes[i]) - 64);
'р'..'я' : mes[i] := Chr(Ord(mes[i]) - 16);
end;
rus := mes;
end; { Rus }
begin { program }
writeln(Rus('Введите x, y, z'));
readln (x,y,z);
c:=tan(x*x);
a:=y*power(c,3)+sqrt(z*z/(y*y+x*x));
b:=ln(y+x*x)+sqr(sin(z/y));
writeln('a=',a:8:3,' b=',b:8:3);
readln;
end. { program}
8. Символьный тип данных
Для хранения символьной информации в Паскале предусмотрен специальный тип данных Char. Допустимы переменные, нетипизированные и типизированные константы такого типа. Данные типа Char занимают 1 байт памяти. Неименованные символьные константы записываются в программе либо в виде 'символ', либо в виде #номер. Все имеющиеся символы пронумерованы от 0 до 255, символы с 0-го по 31-й - невидимые, как правило, они не отображаются на экране, 32-й символ - это пробел.
Некоторые из невидимых символов могут оказаться полезны: символ #8 – клавиша BackSpace; символ #10 - "конец строки", при выводе он перемещает текущую позицию вывода на одну строку вниз; символ #13 -"возврат каретки" - перемещает текущую позицию вывода в начало текущей строки. Клавиша Enter генерирует два символа - #10 и #13.
Символьные данные можно вводить и выводить процедурами READ и WRITE при вводе и выводе символьные значения изображаются без апострофов. Для символьных величин определены функции:
25. Ord(c) - возвращает номер символа.
26. Pred(c) - возвращает символ с номером, меньшим на 1.
27. Succ(c) - возвращает символ с номером, большим на 1.
Эти функции определены не только для символов, но для любого порядкового типа данных. Порядковым типом называется такой тип, все допустимые значения которого можно пронумеровать от 0 до некоторого N (в математике к этому понятию близко понятие счетного множества). Из известных нам типов порядковыми являются все целочисленные типы: Byte, ShortInt, Word, Integer, LongInt. И не являются порядковыми все вещественные типы. Значение функции Ord от числового аргумента равно самому этому аргументу, Pred(x) дает значение x-1, а Succ(x) - значение x+1. Функция
28. Chr(n) - в некотором смысле обратная функции Ord: для заданного числового аргумента n она возвращает символ с соответствующим номером. Для символьных переменных (так же, как и для любых переменных порядкового типа) определены процедуры Inc и Dec. Еще одна специфически символьная функция:
29. UpCase(c) - преобразует значение аргумента, если это маленькая латинская буква, в соответствующую заглавную букву. К сожалению, функция не работает для русских букв.
Напишем простую программу, обрабатывающую символьные величины.
var c : char; n : byte;
const space =' ';
begin write('введите какой-нибудь символ '); read(c);
writeln('вы ввели символ',space,c,space,'его номер=',ord(c)); writeln('соседние с ним символы :',space,pred(c),space,
'и',space,succ(c));
writeln('upcase(',c,')=',upcase(c));
writeln;
write('теперь введите число от 33 до 255 '); read(n); writeln('символ с номером ',n,' - это ',space,chr(n),space); writeln;
readln
end.