Александр Цветков - Язык программирования PASCAL
Скачивание начинается... Если скачивание не началось автоматически, пожалуйста нажмите на эту ссылку.
Жалоба
Напишите нам, и мы в срочном порядке примем меры.
Описание книги "Язык программирования PASCAL"
Описание и краткое содержание "Язык программирования PASCAL" читать бесплатно онлайн.
UpCase(c)
c - char
char
возвращает символ c, преобразованный к верхнему регистру
LowCase(c)
c - char
char
возвращает символ c, преобразованный к нижнему регистру
UpperCase(s)
s - string
string
возвращает строку s, преобразованную к верхнему регистру
LowerCase(s)
s - string
string
возвращает строку s, преобразованную к нижнему регистру
Trim(s)
s - string
string
возвращает копию строки s с удаленными лидирующими и заключительными пробелами
- 43 -
Тема №16 Множества символов
В языке Pascal есть очень интересный тип данных множество. Множество представляет собой набор элементов одного порядкового типа. Элементы множества считаются неупорядоченными; каждый элемент может входить во множество не более одного раза. Тип множества описывается следующим образом: set of базовый тип;
В качестве базового может быть любой порядковый тип с элементами, для которых функция Ord возвращает значения в диапазоне от 0 до 255. К таким типам, из изученных нами, относятся тип char и byte (а также их подмножества).[16] Аналогично массивам можно определить название нового типа в секции type, например:
type ByteSet = set of byte; CharSet = set of char; Digits = set of '0'..'9'; // подмножества типа char
Сами множества задаются в виде перечисления их элементов (возможно с использованием диапазонов), заключенные в квадратные скобки:
var Vowels : CharSet; // можно было написать vowels : set of char; Good : Digits; // можно было написать good : set of '0'..'9';
…
Vowels :=['A ', 'E ', 'O', 'I', 'U']; // Элементы явно перечислены
Good:=['3'.. '5', '10']; // Диапазон и отдельный элемент
Для проверки принадлежности элемента множеству существует операция in:
var c : char;
…
if c in Vowels then inc(n); // Если с – гласная, то увеличить n на 1
На обороте страницы приведена программа, которая вводит текстовую строку с экрана и выводит ее на экран азбукой Морзе, заодно проигрывая ее. В этой программе используется много нового: работа с модулем Sound, массив из строк, индексация массива не целыми числами, а типом char, функция задержки выполнения Sleep, функция перевода буквы в верхний регистр Upcase, работа с множеством.
Задание 16
1. Внимательно изучите текст программы ABCMorse, задайте преподавателю вопросы.
2. Напишите программу, которая вводит текстовую строку, подсчитывает, сколько в ней гласных букв, согласных букв, знаков препинания. (3 балла)
3. Напишите программу, которая вводит из файла 10 текстовых строк и выводит их в другой файл, отсортированными в алфавитном порядке. Используйте алгоритм сортировки занятия №13, и операцию сравнения строк < или >. (5 баллов)
4. Основываясь на программе ABCMorse придумайте интересную задачу на использование текстовых строк и множеств. (доп. баллы)
- 44 -
Файл morse.txt
·-
-···
·--
--·
-··
·
···-
--··
··
·---
-·-
·-··
--
-·
---
·--·
·-·
···
-
··-
··-·
····
-·-·
---·
----
--·-
--·--
-·--
-··-
··-··
··--
·-·-
Program ABCMorze;
Uses Sounds,CRT;
var A : array ['А '..'Я '] of string [5];
c : char;
f : text;
s : string;
i,j : integer;
dash, dot : integer;
morze : string [5];
begin
// Читаем файл и заполняем массив строк A['А'], A['Б'], A['Я'] азбукой Морзе
assign (f,'morze.txt'); reset (f);
for c:='А' to 'Я' do readln(f,A[c]);
close(f);
// Выводим таблицу на экран
for c:='А' to 'Я' do write(c,' ',A[c]:5,' ');
// Загружаем звуки
dash:=LoadSound('dash.wav'); dot:=LoadSound('dot.wav');
// Вводим текстовую строку
writeln; write('Введите сообщение '); readln(s);
for i:=1 to length(s) do // Разбираем ее по символам
if Upcase (s[i]) in ['А '..'Я '] then // Проверка принадлежности
begin // Если это русская буква (перевод в заглавные – Upcase)
morze:=A[Upcase(s[i])]; // Читаем s[i] элемент массива A в строку morze
for j:=1 to Length(morze) do // Разбираем строку Morze и проигрываем её
begin
write (morze [j]); // Вывод на экран буквы кодом Морзе
if morze[j]='-' then
begin
PlaySound(dash); Sleep(SoundLength(dash)); // играем dash
end
else
begin
PlaySound(dot); Sleep(SoundLength(dot)); // играем dot
end;
Sleep(50);
end;
write (' '); Sleep (500); // Пауза между буквами 500 мс
end; // end к внешнему оператору if
end.
- 45 -
Тема №17 Задача о квадратном уравнении
Решение квадратного уравнения выходит за рамки курса математики 7 класса, но мы сочли возможным внести эту классическую задачу программирования в дополнение.
Квадратным уравнением называется уравнение вида
ax2 + bx + c = 0
На первом этапе его решения определяется так называемый дискриминант:
d = b2 - 4ac
Далее рассматривают три случая
1. d < 0 – в этом случае вещественных решений нет[17];
2. d = 0 – один корень, определяемый формулой -b / 2a;
3. d > 0 – два корня, вычисляемых по формуле x1,2 = (-b ± √d)/2a, где знак «+» соответствует первому корню, а знак «–» – второму корню.
Составим программу для решения этой задачи:
Program SquareEquation;
var a, b, c : real; // Коэффициенты уравнения
d : real; // Дискриминант
x1, x2 : real; // Корни уравнения
begin
write ('Введите a, b, c ');
readln (a,b,c); // Ввод исходных данных
d:=b*b-4*a*c; // Вычисление дискриминанта
if d<0 then writeln('Решений нет')
else if d=0 then begin
x1:=-b/(2*a);
write('x=',x1)
end
else begin
x1:=(-b+sqrt(d))/(2*a);
x2:=(-b-sqrt(d))/(2*a);
write('x1=',x1,' x2=',x2)
end
end.
Последнюю ветвь else можно оптимизировать, убрав повторяющиеся вычисления (особенно вычисление квадратного корня)
else begin
d:=sqrt(d); a:=2*a;
x1:=(-b+d)/a;
x2:=(-b-d)/a;
write('x1=',x1,' x2=',x2)
end
- 46 -
01.06.2013
Примечания
1
Бинарные операции – имеющие два операнда, располагающиеся слева и справа от оператора
2
Унарная операция – имеющая только один операнд.
3
Интерфейс – в данном случае способ общения человека с компьютером.
4
В системе ABC Pascal отдельное окно консоли появляется только при использовании модуля CRT.
5
От английского Cathode Ray Tube – Электронно-лучевая трубка (ЭЛЧ)
6
Дополнительную информацию можно получить в справочной системе ABC Pascal, раздел Стандартные модули – Модуль GraphABC.
7
Синтаксис оператора – правила его записи.
8
Интерпретировать – толковать.
9
Назван в честь Дж. Буля – основателя математической логики.
10
Бинарные операции – имеющие два операнда, на которые действует эта операция.
11
Унарная операция – имеющая только один операнд.
12
Для этого в MS Word при создании файла надо выбрать тип «*.txt – обычный текст», а при открытии указать, что мы открываем текстовый файл в кодировке Win-1251.
13
В ABC Pascal существуют функции FileExists(name), проверяющая, существует ли файл с таким именем, и CanCreateFile(name), проверяющая можно ли создать файл с таким именем.
14
В ABC Pascal существуют две аналогичные функции Eoln и SeekEoln, которые вместо конца файла ищут конец строки.
15
Коды с 0 по 31 являются служебными и в таблице ANSI им не соответствуют никакие печатные символы.
16
Другие возможные базовые типы – перечисления (об этом позже).
17
Решение есть только в комплексных числах
Подписывайтесь на наши страницы в социальных сетях.
Будьте в курсе последних книжных новинок, комментируйте, обсуждайте. Мы ждём Вас!
Похожие книги на "Язык программирования PASCAL"
Книги похожие на "Язык программирования PASCAL" читать онлайн или скачать бесплатно полные версии.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
Отзывы о "Александр Цветков - Язык программирования PASCAL"
Отзывы читателей о книге "Язык программирования PASCAL", комментарии и мнения людей о произведении.