30
Федеральное агентство по образованию Государственное Образовательное Учреждение Высшего профессионального образования «Ижевский Государственный Технический Университет» Кафедра «Сети связи и телекоммуникационные системы» Курсовая работа по информатике на тему «Перевод чисел из двоичной системы счисления в восьмеричную и шестнадцатеричную системы с помощью генератора случайных чисел» Выполнила: cтудентка гр.4-77- 2

курсовая по инф-ке

  • Upload
    -

  • View
    102

  • Download
    3

Embed Size (px)

Citation preview

Page 1: курсовая по инф-ке

Федеральное агентство по образованию Государственное Образовательное Учреждение Высшего профессионального образования «Ижевский Государственный Технический Университет»

Кафедра «Сети связи и телекоммуникационные системы»

Курсовая работа по информатике

на тему

«Перевод чисел из двоичной системы счисления в восьмеричную и шестнадцатеричную системы с помощью генератора случайных чисел»

Выполнила:

cтудентка гр.4-77-2

Джафаров А.Р.

Проверила:

к.п.н.,доцент

Сидорина В.А.

Ижевск,2010 г.

Page 2: курсовая по инф-ке

Содержание

Введение ……………………………………………………………………………………………………………

1. Постановка задачи…………………………………………………………………………………………2. Математические методы и средства решения задачи……………………………….3. Описание данных……………………………………………………………………………………………4. Блок-схема………………………………………………………………………………………………………5. Программа ………………………………………………………………….………………………………….6. Тестовые примеры…………………………………………………………………………………………..7. Руководство пользователя для работы с программой…………………………………

Заключение………………………………………………………………………………………………………….

Литература…………………………………………………………………………………………………………..

Введение

Page 3: курсовая по инф-ке

Данная курсовая работа необходима для закрепления и демонстрации знаний, полученных при изучении курса информатики, является итоговой работой. Выполнение работы требует творческого подхода и всестороннего исследования поставленной задачи.

Постановка задачи.

Page 4: курсовая по инф-ке

Обучение, с помощью данной программы, переводу чисел из двоичной системы счисления в восьмиричную и шестнадцатеричную системы. Программа должна предлагать двоичное число, выбранное с помощью датчика случайных чисел.

Обучающийся человек должен научиться переводить числа из одной системы счисления в другую. При этом он сам считает результат перевода, а потом сравнивает его с полученным числом данной программы.

Чтобы получить желаемый результат, обучаемый должен знать систему перевода чисел и уметь пользоваться этой программой.

Математические методы и средства решения задачи

Page 5: курсовая по инф-ке

Мы имеем математическую модель разработки задачи обучающего типа. Целью является закрепление у обучающегося некоторых навыков и знаний, а точнее по данной программе будет -обучение и закрепление перевода чисел из одной системы счисления в другую. Будет разработана система подсказок в текстовом виде, пояснение и примеры.

В данной курсовой работе используется язык программирования Паскаль.

Предыстория

Паскаль был создан как язык для обучения процедурному программированию (хотя, по словам Вирта, язык нельзя считать только учебным, поскольку язык, непригодный для написания реальных программ, для обучения использоваться не должен). Название языку дано в честь выдающегося французского математика, физика, литератора и философа Блеза Паскаля.

Паскаль был создан Никлаусом Виртом в 1968-69 годах после его участия в работе комитета разработки стандарта языка Алгол-68. Он был опубликован в 1970 году Виртом как небольшой и эффективный язык, чтобы способствовать хорошему стилю программирования, использовать структурное программирование и структурированные данные.

Компилятор Паскаля был написан на самом Паскале c использованием метода раскрутки.

Реализации

UCSD Pascal.Основная статья: UCSD Pascal

В 1978 году в Университете Сан-Диего (Калифорния, США) была разработана система UCSD p-System, включавшая компилятор с языка Паскаль в переносимый p-код и реализовывавшая значительное число расширений языка Паскаль, такие как модули, строки символов переменной длины, директивы трансляции, обработка ошибок ввода-вывода, обращение к файлам по именам и пр. Впоследствии основные реализации языка Паскаль основывались на этом диалекте.

Object Pascal от Apple

В 1986 году фирма Apple Computer разработала объектное расширение языка Паскаль, получив в результате Object Pascal. Он был разработан группой Ларри Теслера, который консультировался с Никлаусом Виртом.

Turbo Pascal и Object Pascal от Borland, Microsoft Pascal

Page 6: курсовая по инф-ке

В 1989 году объектное расширение языка было добавлено фирмой Borland в Turbo Pascal версии 5.5 (начиная со следующей версии среда была переименована в Borland Pascal). Объектные средства были позаимствованы из Object Pascal от Apple, языковые различия между объектным Turbo Pascal 5.5 и Object Pascal от Apple крайне незначительны.Почти в то же самое время, что и Borland, Microsoft выпустил свою версию объектно-ориентированного языка Паскаль.[5][6] Эта версия Паскаля не получила широкого распространения.

Дальнейшее развитие реализации Паскаля от Borland породило Object Pascal от Borland, впоследствии, в ходе развития среды программирования Delphi, получивший одноимённое название.

Современные версии Object Pascal

Важным шагом в развитии языка является появление свободных реализаций языка Паскаль Free Pascal и GNU Pascal, которые не только вобрали в себя черты множества других диалектов языка, но и обеспечили чрезвычайно широкую переносимость написанных на нём программ (например GNU Pascal поддерживает более 20 различных платформ, под более чем 10 различными операционными системами, Free Pascal обеспечивает специальные режимы совместимости с различными распространёнными диалектами языка (Turbo Pascal (полная совместимость), Delphi и другими).В настоящее время, начиная с Delphi 2003, создана реализация языка для платформы .Net, хотя разработчики продолжают использовать Delphi более ранних версий.

О коммерческих разработках на Free Pascal, GNU Pascal и TMT Pascal на данный момент известно мало.Кроме того, в Южном федеральном университете разрабатывается язык и система программирования PascalABC.NET, ориентированная на обучение современному программированию. Язык системы — это Object Pascal для платформы Microsoft .NET, который содержит все основные элементы современных языков программирования: модули, классы, перегрузку операций, интерфейсы, исключения, обобщённые классы, сборку мусора, а также некоторые средства параллельного программирования.

Особенности языка

Особенностями языка являются строгая типизация и наличие средств структурного (процедурного) программирования. Паскаль был одним из первых таких языков. По мнению Н. Вирта, язык должен способствовать дисциплинированию программирования, поэтому, наряду со строгой типизацией, в Паскале сведены к минимуму возможные синтаксические неоднозначности, а сам синтаксис автор постарался сделать интуитивно понятным даже при первом знакомстве с языком.Тем не менее, первоначально

Page 7: курсовая по инф-ке

язык имел ряд ограничений: невозможность передачи функциям массивов переменной длины, отсутствие нормальных средств работы с динамической памятью, ограниченная библиотека ввода-вывода, отсутствие средств для подключения функций написанных на других языках, отсутствие средств раздельной компиляции и т. п. Подробный разбор недостатков языка Паскаль того времени был выполнен Брайаном Керниганом в статье «Почему Паскаль не является моим любимым языком программирования»(эта статья вышла в начале 1980-х, когда уже существовал язык Модула-2, потомок Паскаля, избавленный от большинства его пороков, а также более развитые диалекты Паскаля). Некоторые недостатки Паскаля были исправлены в ISO-стандарте 1982 года, в частности, в языке появились открытые массивы, давшие возможность использовать одни и те же процедуры для обработки одномерных массивов различных размеров.

Необходимо заметить, что многие недостатки языка не проявляются или даже становятся достоинствами при обучении программированию. Кроме того, по сравнению с основным языком программирования в академической среде 1970-х (которым был Фортран, обладавший гораздо более существенными недостатками), Паскаль представлял собой значительный шаг вперёд. В начале 1980-х годов в СССР для обучения школьников основам информатики и вычислительной техники академик А. П. Ершов разработал алголо-паскалеподобный «алгоритмический язык».

Наиболее известной реализацией Паскаля, обеспечившая широкое распространение и развитие языка, является Turbo Pascal фирмы Borland, выросшая затем в объектный Паскаль для DOS (начиная с версии 5.5) и Windows и далее в Delphi, в которой были внедрены значительные расширения языка.

Диалекты Паскаля, применяемые в Turbo Pascal для DOS и Delphi для Windows, стали популярны из-за отсутствия других успешных коммерческих реализаций.

Стандарты

После начала использования Паскаля в 1970 году и появления реализаций, расходящихся не только в дополнениях, но и в синтакисе, был поднят вопрос о стандартизации языка. Стандарт языка был разработан Никлаусом Виртом в 1974 году совместно с Кетлин Йенсен (Kathleen Jensen).[8] В дальнейшем, были приняты международный стандарт от ISO и американский от ANSI. На данный момент, выделяют три принципиально разных стандарта: Unextended Pascal (исходный), Extended Pascal (расширенный), Object-Oriented Extensions to Pascal (объектно-ориентированное расширение Паскаля).

Page 8: курсовая по инф-ке

Одним из главных дополнительных свойств объектно-ориентированного расширения Extended Pascal стала модульность и средства, облегчающие раздельную компиляцию.Стандартизация языка была запаздывающий по отношению к реальному появлению в языке тех или иных возможностей. Коммерческие реализации расширяли стандартный Паскаль; так было сделано в UCSD Pascal, модификации Object Pascal фирмой Apple, Turbo Pascal от Borland (незначительно модифицированная версия Apple) и его ответвлений. Ни одна из распространённых коммерческих реализаций Паскаля не соответствует в точности ни одному из официальных стандартов языка Синтаксис и языковые конструкции Паскаль, в его первоначальном виде, представляет собою чисто процедурный язык и включает в себя множество алголоподобных структур и конструкций с зарезервированными словами наподобие if, then, else, while, for, и т. д. Тем не менее, Паскаль также содержит большое количество возможностей для структурирования информации и абстракций, которые отсутствуют в изначальном Алголе-60, такие как определение типов, записи, указатели, перечисления, и множества. Эти конструкции были частично унаследованы или инспирированы от языков Симула-67, Алгол-68, созданного Никлаусом Виртом AlgolW и предложены Хоаром.

В современных диалектах (Free Pascal) доступны такие операции как перегрузка операторов и функций.

Hello world

Программы на Паскале начинаются с ключевого слова program и следующего за ним имени программы с точкой с запятой (в большинстве диалектов является необязательным), за именем может в скобках следовать список внешних файловых дескрипторов в качестве параметров; за ним следует тело программы, состоящее из секций описания переменных, типов и констант, объявлений процедур и функций и следующего за ними блока операторов, являющегося точкой входа в программу. В языке Паскаль блок ограничивается ключевыми словами begin и end. Операторы разделяются точками с запятой, после тела помещается точка, служащая признаком конца программы. Регистр символов в Паскале не имеет значения.

Таким образом, простейшая программа на Паскале будет выглядеть следующим образом:

begin

end.

Page 9: курсовая по инф-ке

Программа не выполняет никаких действий и содержит пустой блок операторов.

Пример программы, выводящей строку «Hello, World!»:

Program HelloWorld(output);

begin

writeLn('Hello, World!'); { оператор вывода строки }

end.

Типы данных

Примитивные типы данных Паскаля: числа с плавающей запятой (real), целые (integer), символьный (char), логический (boolean) и перечисления (конструктор нового типа, введённый в Паскале):

var { секция объявления переменных }

r: Real; { переменная вещественного типа }

i: Integer; { переменная целого типа }

c: Char; { переменная-символ }

b: Boolean; { логическая переменная }

e: (apple, pear, banana, orange, lemon); { переменная типа-перечисления }

Выделяется понятие порядковых типов данных (ordinal), к ним относятся целые типы (знаковые и беззнаковые), логический (boolean), символьный (char), перечислимые типы и типы-диапазоны.Порядковые типы задаются целым числом (кодом), которое можно получить с помощью функции ord. Все операции, выполняемые над порядковыми типами, выполняются с их кодами.

Диапазоны содержат подмножество значений других порядковых типов:

var

x: 1..10;

y: 'a'..'z';

z: pear..orange;

Для порядковых типов определены операции inc, dec, succ, pred, ord, операции сравнения (= > < => <= <>), их можно использовать в операторах case, for (как

Page 10: курсовая по инф-ке

счётчик цикла), как границы массивов, для задания элементов множеств и типов-диапазонов.

В Паскале, в отличие от Си-подобных языков, с типами boolean и char арифметические целочисленные операции не определены.

В отличие от многих распространённых языков, Паскаль поддерживает специальный тип данных множество:

var

set1: set of 1..10;

set2: set of 'a'..'z';

set3: set of pear..orange;

Множество — фундаментальное понятие в современной математике, которое может быть использовано во многих алгоритмах.

В паскале тип множество может содержать только однотипные элементы порядкового типа. Эта особенность широко используется и обычно быстрее эквивалентной конструкции в языке, не поддерживающем множества. К примеру, для большинства компиляторов Паскаля:

if i in [5..10] then { проверка на принадлежность элемента множеству }

обработается быстрее, чем

if (i>4) and (i<11) then { проверка логическими условиями }

Для задания значения множества используется список элементов множества, отделенных запятыми и заключённый в квадратные скобки (как уже было показано выше):

var { секция объявления переменных }

d:set of char;

begin { начало блока }

d:=['a','b']; В Паскале Йенсен и Вирта строки представлялись как упакованные массивы символов; следовательно, они имели фиксированную длину и обычно дополнялись до этой длины пробелами.

В современном Паскале[9] для работы со строками используется встроенный тип string, поддерживающий операции конкатенации (+) и сравнения (> < = <> >= <=). Строки сравниваются в лексикографическом порядке. Например, строки

Page 11: курсовая по инф-ке

считаются равными если они имеют одинаковую длину и коды всех символов с одинаковыми индексами совпадают.

Тип string [n] или просто string в диалектах языка 1970-1990-х годов определялся в виде массива символов array [0..n] of char (n по умолчанию принимало значение 80 в UCSD Pascal и 255 в Turbo/Borland Pascal), код нулевого символа при таком представлении служит для задания длины строки, соответственно строка могла иметь максимальный размер 255 символов. По умолчанию в Delphi и FreePascal в качестве String используется тип AnsiString, память под который выделяется и освобождается компилятором динамически, а максимальный размер строки в текущих реализациях составляет 2 гигабайта. Кроме того, в Delphi и Free Pascal в качестве string может использоваться тип WideString, где применяется 16-битное представление символов в кодировке UCS-2, при этом средства преобразования из однобайтовых строк в многобайтовые и обратно в стандартной библиотеке языка отсутствуют.

Новые типы могут быть определены из существующих:

type { секция объявления типов }

x = Integer;

y = x;

...

Более того, из примитивных типов могут быть сконструированы составные:

type { секция объявления типов }

a = Array [1..10] of Integer; { определение массива }

b = record { определение записи }

x: Integer;

y: Char;

end;

c = File of a; { определение файла }

Файловые типы в Паскале делятся на типизированные, текстовые и файлы без типов.

Как показано в вышеприведённом примере, типизированные файлы в Паскале — это последовательности однотипных элементов. Для каждого файла

Page 12: курсовая по инф-ке

существует переменная-указатель на буфер, которая обозначается f^. Процедуры get (для чтения) и put (для записи) перемещают указатель к следующему элементу. Чтение реализовано так, что read(f, x) представляет собою то же, что и get(f); x:=f^. Соответственно, запись реализована так, что write(f, x) представляет собою то же, что и f^ := x; put(f). Текстовые файлы text определены как расширение типа file of char и помимо стандартных операций над типизированными файлами (чтение, запись символа), позволяют осуществлять символьный ввод-вывод в файл всех типов данных аналогично консольному вводу-выводу.

Файлы без типов объявляются как переменные типа file. С ними можно проводить операции побайтового нетипизированного ввода-вывода по несколько блоков байт указанной длины через буфер, для этого служат специальные процедуры blockread и blockwrite (расширение UCSD).

Указатели

Паскаль поддерживает использование указателей (типизированные ^тип и нетипизированные pointer):

type

a = ^b;

b = record

x: Integer;

y: Char;

z: a;

end;

var

pointer_to_b:a;

Здесь переменная pointer_to_b — указатель на тип данных b, являющийся записью. Тип типизированного указателя может быть задан перед объявлением типа, на который он ссылается. Это исключение к правилу, которое гласит, что любая вещь должная быть объявлена перед тем, как используется. Введение этого исключения позволило организовывать рекуррентные определения структур данных, в том числе такие, как линейные списки, стеки и очереди, включая указатель на запись в описании этой записи (см. также: нулевой

Page 13: курсовая по инф-ке

указатель — nil).Для типизированного указателя определена операция разыменования (её синтаксис: указатель^).

Чтобы создать новую запись и присвоить значение 10 и символ A полям a и b в ней, необходимы следующие операторы:

new(pointer_to_b); { выделение памяти указателю }

pointer_to_b^.x := 10; { разыменовывание указателя и обращение к полю записи }

pointer_to_b^.y := 'A';

pointer_to_b^.z := nil;

...

dispose(pointer_to_b); { освобождение памяти из-под указателя }

Для целей обращения к полям записей и объектов можно также использовать оператор with, как показано в примере:

new(pointer_to_b);

with pointer_to_b^ do

begin

x := 10;

y := 'A';

z := nil

end;

...

dispose(pointer_to_b);

Процедурный тип

В оригинальном языке Паскаль Йенсен и Вирта процедурный тип использовался только при описании формального параметра. Уже в TP существовал полноправный процедурный тип. В объявлении типа ставится заголовок процедуры либо функции (без имени), обобщённо описывающий интерфейс подпрограммы. Значение этого типа содержит указатель на подпрограмму с заголовком, соответствующую описанному в объявлении типа. С помощью

Page 14: курсовая по инф-ке

идентификатора переменной может происходить вызов соответствующей процедуры или функции.

type myfunc=function:string;

function func1:string;

begin

func1:='func N 1'

end;

function func2:string;

begin

func2:='func N 2'

end;

var fun:myfunc;

begin

fun:=@func1;

writeln(fun) {происходит вызов функции func1}

end.

Операторы управления выполнением программы

Паскаль — язык структурного программирования, что означает, что программа состоит из выполняющихся последовательно отдельных стандартных операторов, в идеале — без использования команды GOTO.

while a <> b do { цикл с предусловием }

writeln('Ожидание');

if a > b then { условный оператор }

writeln('Условие выполнилось')

else { else-секция - может отсутствовать}

writeln('Условие не выполнилось');

for i := 1 to 10 do { итерационный цикл }

Page 15: курсовая по инф-ке

writeln('Итерация №', i:1);

repeat { цикл с постусловием }

a := a + 1

until a = 10;

case i of { условный оператор множественного выбора }

0: write('ноль');

1: write('один');

2: write('два')

else write('неизвестное число') { else-секция - может отсутствовать}

end;

В операторах while, for, if, case в качестве выполняемого оператора может использоваться блок. Такая конструкция, представляющая собой обычный оператор или блок, называется сложным оператором.

Для управления процессом компиляции в паскале существуют директивы компилятора. Они помещаются в комментарии и позволяют переключать режимы работы компилятора, например, включать и отключать проверку операций ввода-вывода, проверки переполнения:

assign(inp,'text.txt');

{$I-} { отключение режима IO checking- генерации кода завершения программы в случае ошибки ввода-вывода }

{ (для случая, если файл не найден)}

reset(inp);

{$I+} { включение режима IO checking }

if IOresult=0 then begin { проверяем значение переменой ioresult(<>0 в случае ошибки ввода-вывода) }

...

close(inp);

end else writeln('file not found')

Page 16: курсовая по инф-ке

Существуют директивы, аналогичные директивам препроцессора C/C++ ($ifdef, $define, $include), они обрабатываются компилятором в процессе компиляции.

Процедуры и функции

В Паскале подпрограммы делятся на процедуры и функции:Синтаксически процедуры и функции состоят из заголовка (содержащего ключевое слово procedure или function, имени, за которым может следовать описание передаваемых параметров в скобках, тип возвращаемого значения через символ двоеточия для функций и точки с запятой), после заголовка следует тело, после которого ставится символ ;.

program mine(output);

var i : integer;

procedure print(var j: integer);

function next(k: integer): integer;

begin

next := k + 1

end;

begin

writeln('Всего: ', j);

j := next(j)

end;

begin

i := 1;

while i <= 10 do

print(i)

end.

Тело процедуры, как и программы, в свою очередь может содержать описания процедур и функций. Таким образом, процедуры и функции могут

Page 17: курсовая по инф-ке

быть вложены друг в друга как угодно глубоко, при этом тело программы — самое верхнее в цепочке.

Причём содержимое секций описания переменных, типов, констант, внешнего тела (процедуры, функции, программы), расположенных перед описанием процедуры/функции, доступны внутри неё. Также, в большинстве диалектов из процедуры можно обращаться к параметрам внешней процедуры.

Вслед за заголовком процедур/функций вместо тела может помещаться ключевое слово forward, это делается в том случае, если описание процедуры/функции располагается в программе после её вызова, и связано с поддерживаемой в Паскале возможностью компиляции программы за один проход.Процедуры отличаются от функций тем, что функции возвращают какое-либо значение, а процедуры — нет.

Модули

До появления модулей в их современном виде некоторые реализации Паскаля поддерживали модульность за счёт механизма включения заголовочных файлов, похожего на механизм #include в языке Си: с помощью специальной директивы, оформляемой в виде псевдокомментария, например, {$INCLUDE "файл"}, содержимое указанного файла прямо включалось в текст программы в исходном, текстовом виде. Таким образом можно было разделить программный код на множество фрагментов, для удобства редактирования, но перед компиляцией они автоматически объединялись в один файл программы, который в итоге и обрабатывался компилятором. Такая реализация модульности примитивна и имеет множество очевидных недостатков, поэтому она была быстро заменена.Современные реализации языка Паскаль (начиная с UCSD Pascal) поддерживают модули. Программные модули могут быть двух видов: модуль главной программы, который, как обычно, начинается с ключевого слова program и тело которого содержит код, запускаемый после загрузки программы в память, и вспомогательных модулей, содержащих типы, константы, переменные, процедуры и функции, предназначенные для использования в других модулях, в том числе в главном модуле.

Page 18: курсовая по инф-ке

Описание данных.

Название в задаче имя переменной или константы в программе, тип

Смысловое описание

s Переменная, в которой «собирается» результат

i Переменная, используется для разбиения цифр результата на группы

N Основание системы счисления

Page 19: курсовая по инф-ке

Программа c комментариями

Const //{ Максимальное значение диапазона в функции Random }

Max = 65535;// { Максимальное значение основания системы счисления, в которую можно перевести десятичное число с помощью функции DecToN

MaxN = 16;//Массив символов, используемых для записи десятичного числа в различных системах счисления. В данном массиве 16 символов.

Symbols: array [0..MaxN - 1] of Char =

('0', '1', '2', '3', '4', '5', '6', '7', '8', '9',

'A', 'B', 'C', 'D', 'E', 'F');//Функция, переводящая заданное десятичное число в некоторую систему счисления

function DecToN(Value: Word; N: Byte; Spaces: Byte): string;

var

S: string; //S - переменная, в которой "собирается" результат }

i, Excess: Word; //i используется для разбиения цифр результата на группы

с учетом значения Spaces }

begin //Основание системы счисления

if (N > MaxN) or (N = 0) then

begin

DecToN := '';

Exit;

end;

S := ''; // Задаем начальные значения переменных

i := 1; //"Собираем" результирующее число. Чтобы перевести десятичное число Q в систему

repeat //Итак, находим очередной остаток от деления на N и записываем его

в переменную Excess }

Excess := Value mod N;// Добавляем к переменной S следующий символ искомого числа в зависимости от значения полученного остатка }

S := Symbols[Excess] + S;//Находим целую часть от деления.

Value := Value div N; // Добавляем, при необходимости, в получаемый результат пробелы между группами цифр и ведущие нули в начале результирующего числа

if Spaces <> 0 then

if (i <> Spaces) then //Если количество цифр не равно Spaces и результирующее число не получено до конца (т. е. целая часть от деления Value на N на текущем шаге еще не стала равной 0), то увеличиваем счётчик количества цифр на 1 и переходим к очередному шагу вычислений }

if Value <> 0 then

Inc(i)

Page 20: курсовая по инф-ке

else

while i < Spaces do

begin

S := '0' + S;

Inc(i);

end

else

if (Value <> 0) then

begin

S := ' ' + S;

i := 1; // Сбрасываем счётчик количества цифр в 1

end;

until Value = 0; // Возвращаем результат работы функции

DecToN := S;

end;

var

Close: Boolean;

Option, YesNo: Char;

Number: Word;

Answer, RightAnswer1, RightAnswer2: string;

BEGIN

Close := False //Инициализируем генератор случайных чисел (для того, чтобы при каждом запуске программы создавались разные случайные числа, а не последовательность одних и тех же)

Randomize;

Repeat // Выводим на экран меню программы

Writeln('Choose lesson:');

Writeln('1. Converting binary numbers to hexadecimal;');

Writeln('2. Converting binary numbers to octal;');

Writeln('0. Exit.');

Readln(Option);

case Option of

'1','2': // Пользователь выбрал один из уроков

Repeat // Получаем случайное число в пределах от 0 до Max - 1

Number := Random(Max)

Page 21: курсовая по инф-ке

case Option of

'1': begin

Writeln(DecToN(Number, 2, 4));

Writeln('Please, type answer in UPPER case.');

Write('Hexadecimal: ');

Readln(Answer);

RightAnswer1 := DecToN(Number, 16, 2);

RightAnswer2 := DecToN(Number, 16, 0);

end;

'2': begin

Writeln(DecToN(Number, 2, 3));

Write('Octal: ');

Readln(Answer);

RightAnswer1 := DecToN(Number, 8, 3);

RightAnswer2 := DecToN(Number, 8, 0);

end;

end;

// Сравниваем ответ пользователя с двумя ответами

if (Answer = RightAnswer1) or (Answer = RightAnswer2) then

Writeln('Excellent! You are right.')

else

begin

Writeln('Unfortunately, you are wrong.');

Writeln('Right answer is ', RightAnswer1, ' or ', RightAnswer2);

end;

Writeln('Continue? y/n');

Readln(YesNo);

until YesNo = 'n';

'0': Close := True;

else Continue;

end;

until Close;

END.

Page 22: курсовая по инф-ке

Тестовые примеры

Перевод в 8-ую систему счисления

Page 23: курсовая по инф-ке

Перевод в 16-ую систему счисления

Page 24: курсовая по инф-ке

Заключение

Сделав и проанализировав обучающую программу в данной курсовой работе можно сделать вывод, что она может научить человека переводить числа из одной системы счисления в другую, а точнее из двоичной в шестнадцатеричную и восьмеричную системы счисления.

При написании работы возникали некоторые проблемы, а именно:

В составлении блок-схемы

При написании меню и использовании его в программе

При запуске программы

Page 25: курсовая по инф-ке

Литература

1. http://ru.wikipedia.org/wiki/Pascal

2. Йенсен К., Вирт Н. Паскаль. Руководство для пользователя и описание языка. — М.: Финансы и статистика, 1982. — С. 151.

3. Перминов О. Н. Язык программирования Паскаль : Справочник. — М.: Радио и связь, 1989. — С. 128. — ISBN 5-256-00311-9

4. Моргун А. Н. Программирование на языке Паскаль (Pascal). Основы обработки структур данных. — М.: Диалектика, 2005. — С. 576. — ISBN 5-8459-0935-X

5. Вирт Н. Алгоритмы + структуры данных = программы. — М.: Мир, 1985. — С. 406.