- •Конспект лекций по курсу «Информатика» для студентов очной и заочной форм обучения.
- •Базовые положения
- •§.1. Физическое устройство и разумная деятельность мозга
- •§2. Самодостаточная эвм
- •2.1. Память (оперативная память)
- •2.2. Процессор
- •2.3. Программа
- •2.4. Жизненный цикл «Самодостаточной эвм»
- •§3. Язык процессора – базовый язык эвм
- •§4. Реальная эвм. Периферийные устройства
- •§5. Язык программирования. Программа транслятор
- •§6. Язык программирования Pascal
- •6.1. Базовые типы числовых информационных объектов
- •6.2. Явные константы
- •6.3. Оператор описания var
- •Var и1, и2, и3, . . . . ,Иn: Итипа;
- •6.5. Операторы консольного ввода информации
- •6.5.1. Стандартные форматы вывода числовой информации.
- •6.6. Логические переменные
- •6.7. Операторы управления программой
- •6.7.1. Условный оператор if then
- •If Условие then Оператор ;
- •6.7.2. Условный оператор выбора if then else
- •6.8. Метки операторов. Оператор безусловного перехода
- •6.9. Циклические вычисления. Операторы зацикливания
- •Организация циклических вычислений операторами if then goto
- •Программа вычисления корня по формуле Герона.
- •6.9.3. Оператор цикла for to
- •6.9.4. Оператор цикла for downto
- •6.9.5. Оператор цикла while
- •6.9.6. Программа вычисления длины дуги кривой
- •7. Массивы переменных
- •7.1. Программа нахождения экстремальных значений
- •7.2. Программа решения системы линейных алгебраических уравнений
- •8. Сортировка информации
- •8.1. Элементы формальной логики, теории множеств и операций
- •8.2. Упорядоченные структуры информационных объектов
- •8.3. Алгоритм сортировки «поплавок»
- •8.3.1. Программа сортировки массива «на месте»
- •8.3.2. Программа сортировки «индексов» массива
- •8.4. Алгоритм быстрого поиска информации в линейно упорядоченном массиве
- •8.4.1. Программа поиска в отсортированных массивах.
- •9. Символьные переменные
- •9.1.Строковые переменные
- •9.1.1. Программа написания чисел прописью
- •10. Клавиатурное управление эвм
- •§.11. Информационные объекты класса – изображение
- •11.1. Устройство функционированиемонитора
- •11.2. Процедурный язык управления графическим экраном
- •11.3. Оцифровка и масштабирование реальных изображений (чертежей) для последующего их вывода на экран
- •11.4. Пример построения фрагмента графика функции
- •11.5. Ввод и обработка информации в форме изображений
- •§12. Информационные объекты класса – подпрограммы
- •12.1. Подпрограммы типа procedure
- •12.1.1. Пример оформления подпрограммы-процедуры
- •12.2. Подпрограммы класса function
- •12.2.1.Пример оформления подпрограммы-функции
- •12.3. Процедурные языки программирования
- •12.4. Библиотечные модули Unit
- •§13. Динамическое распределение оперативной памяти эвм
- •13.1. Программа использующая динамические переменные
- •§14. Переменные типа record
- •§15. Внешняя память эвм. Работа с файлами
- •15.1. Процедурный язык обработки файлов
- •15.2.Программа “ Жизненный путь файла “
- •15.3. Текстовые файлы
- •§16. Элементы объектно-ориентированного программирования
- •Основная рекомендуемая литература.
9.1.1. Программа написания чисел прописью
Алгоритм.
В русском языке:
каждая десятичная цифра в позиционной записи числа имеет уникальное имя собственное (числительное), которое однозначно определяется местоположением (номером позиции, разрядом) цифры,
словесное название числа образуется последовательностью слов-числительных в порядке убывания разрядности цифр.
Вывод: для каждой цифры, в числовой записи, существует ровно десять уникальных названий. Эти названия удобно разместить в специальных справочных массивах содержащих ровно по десять символьных (строковых) переменных, причем в качестве индексов использовать числа 0, 1, 2,..,9.
Проводим последовательное, от старших к младшим разрядам, выделение цифр из заданного целого числа, что удобно делать путем операции целочисленного деления (div). Выделенная цифра (вернее целое число из диапазона [0,9]) используется как индекс для соответствующего справочного массива названий этой цифры.
Program propis;
Type T=array[0..9] of string[20]; {Описание структуры переменных для
справочников-названий цифр:
sZ00 – массив с названием сотен, т.е. цифры Z в числе Z00,
sZ0 - массив с названием десятков,
s1Z - массив с названием чисел второго десятка, т.е. 10, 11, 12, ...,19
sZ- массив с названием единиц }
Const sz00: T=('', 'сто', 'двести', 'триста', 'четыреста', 'пятьсот',
'шестьсот', 'семьсот', 'восемьсот', 'девятьсот');
sz0: T=('', '', 'двадцать', 'тридцать', 'сорок', 'пятьдесят',
'шестьдесят', 'семьдесят', 'восемьдесят', 'девяносто');
s1z: T=('', 'одиннадцать', 'двенадцать', 'тринадцать', 'четырнадцать',
'пятнадцать', 'шестнадцать', 'семнадцать', 'восемнадцать',
'девятнадцать');
sz: T=('ноль', 'один', 'два', ' три', 'четыре', 'пять'
,'шесть', 'семь', 'восемь', 'девять');
Var N, i, j: integer;
s: string; {строка, в которой будет размещено словесное название числа N }
Begin
N:=852; {N – исходное число, т.е. исходные данные ! }
if (N<0) or (N>999) then {контроль диапазона допустимости исходных данных}
begin Writeln(‘Заданное число вне допустимого диапазона’); Exit end;
j:=N; {создаем j копию числа N}
i:=j div 100; {выделяем i- количество сотен в числе N}
s:=sz00[i]; { внесение в строку S соответствующее цифре i название
из справочного массива }
j:=j-i*100; i:=j div 10; { удаляем из числа сотни и выделяем i-цифру десятков }
if i=1 then {особая ситуация: десяток - один} s:=s+' '+s1z[j-10]
else {количество десятков 0, 2, 3, ...9 }
begin
s:=s+' '+sz0[i]; { добавляем к строке S название десятков }
i:=j-i*10; {удаляем из числа десятки, т.е. остаются i-единицы }
if i<>0 then {если количество единиц значимое то добавляем их название }
s:=s+' '+sz[i];
end;
{особо выделяем ситуацию «чистого нуля!» } if N=0 then s:=sz[0];
writeln(N,'=',s); {печать на экран результата}
End.
Результат на экране: 852=восемьсот пятьдесят два