Как сделать переводчик в паскале

Обновлено: 06.07.2024

Для связи файла в коде программы и действительного файла на внешнем носителе используется процедура ASSIGN :

где myfile — имя переменной (объявленной ранее в области var ), ассоциированной с файлом
c:\text.txt — путь к реальному файлу
Первый аргумент процедуры assign в паскаль — переменная, второй – путь к файлу на диске.

Для считывания из файла достаточно связать поток ввода с файлом:

begin Assign(input,'24.txt'); var s := ReadString; . end.

begin Assign(input,'26.txt'); var N := ReadInteger; var a := ReadArrInteger(N); . end.

Текстовые файлы в паскале: процедуры работы

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

Возможные расширения файлов:
*.txt, *.log,
*.htm, *.html

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

Предусмотрены два режима работы: режим для записи в файл информации и для чтения ее из файла. Одновременная запись и чтение запрещены.

Открытие файла (классический Pascal)

Допустим, мы в программе описали переменную для работы с текстовым файлом:

Рассмотрим дальнейшую последовательность работы с ним, и рассмотрим процедуры, необходимые для работы с текстовым файлом в Паскале:

процедура открытия существующего файла для чтения при последовательном доступе:

процедура открытия создаваемого файла для записи в него информации; если файл с таким именем уже существует, то информация в нем стирается:

процедура добавления в конец:

  • При открытии курсор устанавливается в начало файла.

открытие файла

Чтение из файла (классический Pascal)

Read (f, список переменных); ReadLn (f, список переменных);

Отличие ReadLn от Read в том, что при использовании readln после прочтения данных пропускаются все оставшиеся символы в данной строке, включая метку конца строки.

  • чтение осуществляется с той позиции, где в данный момент стоит курсор;
  • после чтения курсор сдвигается к первому непрочитанному символу.

Чтение до конца строки

close ( f ); reset ( f );

Запись в текстовый файл (классический Pascal)

Write (f, список переменных); WriteLn (f, список переменных);

где f — файловая переменная, а второй параметр – выводимые из программы и вводимые в файл данные (в виде значений переменных или просто данные)

Процедуры работы с файлом и закрытие файла

Нахождение конца файла:

Логическая функция, возвращающая True, если достигнут конец файла.

Нахождение конца строки:

Логическая функция, возвращающая True, если достигнут конец строки.

Удалить файл в Паскале

Переименование файла в Паскале

rename(переменная_файла,'новое имя файла');

Закрытие:

Рассмотрим пример работы с файлами в паскале:

Пример 1: В файле text.txt записаны строки. Вывести первую и третью из них на экран.
(предварительно создать text.txt с тремя строками)

var filetext: text; a,b,c:string; begin assign(filetext,'c:\text.txt'); reset(filetext); readln(filetext,a); readln(filetext,b); readln(filetext,c); close(filetext); writeln(a); writeln(c); end.

begin Assign(input, '1.txt'); var a := ReadString; var b := ReadString; var c := ReadString; print(a, c) end.

Пример 2: Дан текстовый файл. Вывести количество содержащихся в нем символов и строк (маркеры концов строк EOLN и конца файла EOF при подсчете количества символов не учитывать).

* Из задачника М. Э. Абрамян (Text4)

var F: Text; N,K:integer; Name:String; C:Char; begin Assign(F,'c:\text.txt'); Reset(F); N:=0; K:=0; While not eof(F) do begin inc(N); While not eoln(f) do begin inc(K); Read(F,C); end; Readln(F); end; Close(F); Writeln(N,' ',K); end.

begin Assign(input, '1.txt'); var n, k: integer; while not eof(input) do begin inc(n); while not eoln(input) do begin inc(k); var a := ReadChar; end; var b := ReadString; end; print($'строк , символов ') end.

Пример 3:
Считать из файла input.txt числа (числа записаны в столбик). Затем записать их произведение в файл output.txt

var p, x: integer; f: text; begin assign(f, 'input.txt'); reset(f); p := 1; while not eof(f) do begin readln(f, x); p := p * x; end; close(f); assign(f, 'output.txt'); rewrite(f); writeln(f, 'Произведение чисел ', p); close(f); end.

begin Assign(input, 'input.txt'); Assign(output, 'output.txt'); var p := 1; while not eof(input) do begin var x := readInteger; p := p * x; end; print($'произведение

'); end.

pascal file text1. В цикле записать в файл числа от 1 до 10 (каждое — в своей строке), а затем их считать и отобразить на экране.
Дополните код:

var filetext: text; a:string; i:integer; begin assign(filetext,'c:\text.txt'); rewrite(filetext); for i:=1 to 10 do . reset(filetext); for i:=1 to 10 do begin . . end; close(filetext); end.

* Из задачника М. Э. Абрамян (Text1)

* Из задачника М. Э. Абрамян (Text5)

* Из задачника М. Э. Абрамян (Text7)

var F_in,F_out: Text; Name,S: String; begin Write('S: '); Readln(S); Assign(F_in,'c:\text.txt'); Reset(F_in); Assign(F_out,'c:\text1.txt'); Rewrite(F_out); Writeln(F_out,S); While not eof(F_in) do begin Readln(F_in,S); Writeln(F_out,S); end; Close(F_in); Close(F_out); Erase(F_in); Rename(F_out,'c:\text.txt'); end.

begin var s := readstring('s: '); Assign(input, 'input.txt'); Assign(output, 'output.txt'); println(S); while not eof(input) do begin s := ReadString; println(s); end; close(input); // обязательно! close(output); // обязательно! Erase(input); Rename(output, 'input.txt'); end.

pascal file text4. Дано целое число K и текстовый файл. В данном файле вставить пустую строку перед строкой с номером K . Если строки с таким номером нет, то оставить файл без изменений.
Для решения задачи можно использовать дополнительный временный файл.

* Из задачника М. Э. Абрамян (Text9)

Пример 5: Дано целое число K и текстовый файл. Удалить из файла строку с номером K . Если строки с таким номером нет, то оставить файл без изменений.

Примерный результат:
до:

* Из задачника М. Э. Абрамян (Text15)

var F_in,F_out: Text; Name,line: string; K,i:integer; begin Write('K: '); Readln(K); Assign(F_in,'c:\text.txt'); Assign(F_out,'c:\text1.txt'); Reset(F_in); Rewrite(F_out); i:=0; While not eof(F_in) do begin Readln(F_in,line); inc(i); if i<>K then Writeln(F_out,line); end; Close(F_in); Close(F_out); Erase(F_in); Rename(F_out,'c:\text.txt'); end.

begin var k := readinteger('k: '); Assign(input, 'input.txt'); Assign(output, 'output.txt'); var i:=0; while not eof(input) do begin var s := ReadString; inc(i); if i<>k then println(s); end; close(input); // обязательно! close(output); // обязательно! Erase(input); Rename(output, 'input.txt'); end.

Пример 6: Дан текстовый файл F1 с набором нулей и единиц. Необходимо заменить все вхождения сочетаний 101 на 000 . Скорректированные записи поместить в файл F2 .

var f1,f2: text; pole:string; pz:integer; begin assign(f1,'1.txt'); assign(f2,'2.txt'); reset(f1); rewrite(f2); while not eof(f1) do begin readln(f1, pole); while pos('101',pole)<>0 do begin pz:=pos('101',pole); delete(pole,pz,3); insert('000',pole,pz); end; writeln(f2,pole) end; close(f1); close(f2); end.

begin Assign(input, 'input.txt'); Assign(output, 'output.txt'); var s:=readString; var s1:=''; var ind := s.IndexOf('101'); while ind<>-1 do begin s1+=s[:ind+1]; s1+='000'; delete(s,1,ind+3); // удаляем всё вместе с 101 ind := s.IndexOf('101'); end; s1+=s; Println(s1); end.

Работа с данными из файла как с массивом

Пример 7: В файле input.txt записаны числа (каждое — с новой строки), их количество не превышает 100. Необходимо отсортировать их по возрастанию и записать в файл output.txt.

  • для сортировки необходим массив, для того чтобы одновременно работать со всеми числами;
  • неизвестно общее количество чисел.
  • объявляем массив для 100 элементов;
  • открываем файл на чтение, просчитываем количество чисел, заполняя массив, сохраняем количество в N;
  • сортируем N элементов массива;
  • записываем результат в файл.

pascal file text5. В файле input.txt записаны числа (каждое — с новой строки), их количество не превышает 100. Необходимо найти максимальное и минимальное число и записать их в файл output.txt.

* Из задачника М. Э. Абрамян (Text16)

А теперь вернемся к олимпиадному заданию по Паскалю, частично решенному на одном из предыдущих заданиях:

Пример 8: Шифр Цезаря заключается в том, что каждая буква исходной строки заменяется третьей после нее буквой в алфавите, который считается написанным по кругу (все символы текста латинские и прописные).
Решить ту же задачу, в которой сдвиг будет не на 3 позиции, а на k, причем отрицательное значение является признаком сдвига влево, положительное — вправо.
Формат входных данных (файл p.in): В первой строке записано число k, не превышающее по модулю 20. Во второй строке — текст, который необходимо зашифровать. Все символы текста латинские и прописные.
Формат выходных данных (файл p.out): Выведите зашифрованный текст.
Пример:

p.in p.out
3
hello earth
khoor hduwk

var a:char; i,n,k:byte; s,s1:string; f_in,f_out:text; begin Assign(F_in,'z:\p.in'); Assign(F_out,'z:\p.out'); Reset(F_in); Rewrite(F_out); s1:=''; readln(f_in,k); readln(f_in,s); for i:=1 to length(s) do begin n:=ord(s[i]); if n<>32 then n:=n+3; if . then . ; if . then . ; if . then . ; a:=chr(. ); s1:=. ; end; writeln(s1); writeln(f_out,s1); close(f_in); close(f_out) end.

var a:char; i,n,k:byte; s,s1:string; f_in,f_out:text; begin Assign(F_in,'z:\p.in'); Assign(F_out,'z:\p.out'); Reset(F_in); Rewrite(F_out); s1:=''; readln(f_in,k); readln(f_in,s); for i:=1 to length(s) do begin n:=ord(. ); if n<>32 then n:=n+3; if n=123 then n:=97; if n=124 then n:=98; if n=125 then n:=99; a:=chr(n); s1:=s1+a; end; writeln(s1); writeln(f_out,s1); close(f_in); close(f_out) end.

полное решение var s, s1: string; i, j, a, n, k, b: integer; begin n := 97; s1 := ''; readln(s); readln(k); for i := 1 to length(s) do begin if s[i] <> ' ' then begin a := ord(s[i]); if a > 122 - k then for j :=123 - k to 122 do begin b:=122-j; if a = j then begin a := n+k-b-1; inc(n); end; end else a := a + k; s1 := s1 + chr(a) end else s1 := s1 + ' ' end; writeln(s1)end. -->

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

В действительности формат записи const немножко сложнее. По правилам мы должны были записать:

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

Здесь операторы в теле программы – это разные команды компилятору.

write( ‘этот текст выведен на экране’ );

этот текст выведен на экране

В таком виде оператор write используется в том случае, когда надо показать подсказку, пояснение, комментарий и т. п. А от если необходимо вывести ещё и числовое значение, скажем, S = 50 кв. м, то используется формат:

write( ‘Величина площади равна: S = ‘ , S);

В результате получим на экране результат:

Величина площади равна: S = 50

А при необходимости вывести единицы измерения, надо после S снова вставить текст в кавычках:

write( ‘Величина площади равна: S = ‘ , S, ‘ кв.м’ );

После выполнения последнего оператора вывода получим вывод на экран:

Величина площади равна: S = 50 кв.м

✎ 9) writeln – то же, что и write, но после выполнения курсор будет переведен на следующую строку.

Каков Ваш возраст?
Year = 32
Мой возраст 32 года

Это пока что все. На следующей странице мы напишем первую программу, и в программировании на Паскале это будут наши первые шаги.

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

Содержание

Программы в данной IDE строятся так:

В данной секции располагаются определенные пользователем константы. Синтаксис объявления констант выглядит так:

Данная секция предназначена для переменных и массивов. Переменные объявляются так:

Тип строка — это тип переменных, который позволяет хранить в переменной любой текст. Объявление строковой переменной:

ОперацияОписание
s1 + s2Объединение строк
s1*nДублирование строки n раз

ОперацияОписание
a + bСложение чисел
a — bРазность чисел
a * bПроизведение чисел
a div bЦелочисленное деление
a mod bОстаток от деления

Декларация переменной типа real:

Пример присваивания переменной данного типа:

ОперацияОписание
a + bСложение чисел
a — bРазность чисел
a * bПроизведение чисел
a / bЧастное чисел

Данный раздел программы содержит все команды, выполняемые при ее запуске. Данная секция программы выглядит так:

Комментарий — это часть кода, которую игнорирует компилятор. Он создается следующим образом:

Массивы — это именованный список элементов одного типа.

P. S. Для работы с массивами существует учебный модуль Arrays.

Статические массивы имеют фиксированный размер. Общий синтаксис объявления данных массивов выглядит так:

, где N — длина массива.

Матрица — это n-мерный список значений, имеющий свой тип и ограниченный некоторыми значениями. Пока будем рассматривать только статические двухмерные и трехмерные матрицы. Перед тем, как перейти к их изучению вспомни таблицы в Excel. Каждая таблица имеет свой размер — ширину и длину. Возьмем за правило ассоциировать двухмерные матрицы с таблицами. Объявление матрицы:

, где N, M — количество строк и столбцов соответственно.

Трехмерный матрицы обладают третьим измерением:

Декларация N-мерной матрицы:

, где A..Z означают количество элементов в соответствующем измерении.

Динамические массивы позволяют управлять количеством элементом в каждом из их измерений во время выполнения программы.

Пример объявления массива:СтатическийДинамическийВызов SetLength (для динамического массива)
Векторный
Двумерный Трехмерный

Индекс массива — это номер элемента массива. Индекс может принимать значения [0, N — 1], где N — количество элементов некоторой размерности. Обращение к элементу одномерного массива с некоторым индексом:

Составим таблицу, которую следует запомнить:

Где i, j, k — индексы.

Индексом может быть значение элемента массива:

Вывести текст — это значит отобразить текст на экране. Общий синтаксис для вывода текста выглядит так:

Вывод значений произвольного количества переменных:

Для перехода на новую строку после вывода последнего значения используйте Writeln вместо Write.

Чтение с клавиатуры — это процесс ввода данных с клавиатуры и запись в соответствующий элемент программы этих данных. Элементами программы являются как переменные, так и элементы массивов. Тип данных, вводимых с клавиатуры, должен соответствовать типу элемента, в который записываются данные с клавиатуры. Использование Readln для чтения с клавиатуры и перехода на новую строку:

Общий синтаксис условного оператора if:

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

Условные обозначения в программировании операций сравнения приведены в таблице:

Общий синтаксис сравнения двух величин:

Оператор case используется для сопоставления значения некоторого выражения с константными значениями:

Если некоторое i-тое константное выражение совпадает с значением выражения, то i-ая группа операторов будет выполнена. Группа операторов после else будет выполнена, если значение выражения не совпало ни с одной из констант. begin — end не нужны, если после двоеточия только один оператор.

Оператор цикла позволяет выполнять группу операторов (или один) циклически пока условие является истинным.

Если второе значение меньше первого — используйте downto вместо to.

Для выхода из цикла можно использовать break:

Для завершения текущей итерации цикла и начала другой используйте оператор continue.

Общий синтаксис описания функции:

Можно устанавливать значение переменной Result для указания возвращаемого значения.

Pascal abc все команды список

Пожалуй, нет ни одного современного человека, кто бы не знал язык Паскаль (основы программирования). И это не удивительно! Еще в учебнике по информатике для школьников расписаны самые основные понятия этой уникальной программы.

История изучаемого языка не так проста: Паскаль претерпел множество изменений, прежде чем школьники увидели его в том виде, в каком его преподают на уроках. Это был самый первый простой язык (ord pascal) для программирования, помогающий решить множество практических задач прошлого столетия (1970 год). Он был разработан группой ученых.

С расширением платформ были созданы новые версии этой программы, а Паскаль стал классическим языком программирования.

Ниже разберемся: что такое Паскаль, каковы его основные инструменты. Рассмотрим операции и функции программы, ее специфические особенности. На примерах поймем, как она работает. Научимся писать и работать на языке Паскаль.

Что такое язык программирования Паскаль

Это базовая высокоуровневая программа. Она занимает первое место в учебных планах многих школ и вузов Российской Федерации.

Всё познается в сравнении, поэтому преимущества этой программы рассмотрим в соотношении с другим языком BASIC.

Pascal abc все команды список

Pascal abc все команды список

Итак, что характерно для языка Паскаль и что не подходит для Бейсика:

  1. Во-первых, наличие компилятора, позволяющего скачивать Паскаль на любые платформы.
  2. Во-вторых, все версии этой программы совместимы между собой.
  3. В-третьих, структурированные типы данных помогают программисту точно составить необходимый алгоритм решения практической задачи, при этом защищая его.
  4. В-четвертых, наглядность и логичность интерфейса программы: все команды просты и понятны.
  5. В-пятых, переход на другой, более высокий по уровню язык программирования, достаточно прост.

Сумма вводимых целых чисел

Pascal abc все команды список

Произведение целых чисел

Pascal abc все команды список

Сколько нечетных среди n введенных

Pascal abc все команды список

Защита от неверного ввода

Pascal abc все команды список

Вывод 10 первых степеней двойки

Pascal abc все команды список

Найти сумму цифр целого положительного числа m

Pascal abc все команды список

Разложение числа на простые множители

Pascal abc все команды список

Паскаль для начинающих – основные понятия

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

Рабочая область

Как выглядит рабочее пространство?

Pascal abc все команды список

Теперь рассмотрим основу: алфавит и структуру.

Алфавит Паскаль

Что нужно знать? Алфавит — это набор символов, необходимый при составлении программы.

Pascal abc все команды список

Что к ним относится:

  1. Латинские прописные, строчные буквы (А, В, С….а,b,с).
  2. Арифметические символы (0, 1, 2…).
  3. Специальные знаки (препинания, скобки, кавычки, арифметические знаки и т. д.).
  4. Неделимые символы (:=, ˃=…).
  5. Служебные слова:
  • and – и;
  • array – массив;
  • begin – начало;
  • do – выполнить;
  • else – иначе;
  • for – для;
  • if – если;
  • of – из;
  • or – или;
  • procedure – процедура;
  • program – программа;
  • repeat – повторять;
  • then – то;
  • to – до;
  • until – до (= пока);
  • var – переменная;
  • while – пока.

Структура программы

Pascal abc все команды список

По своей структуре этот язык делится на 3 раздела:

Структуру можно представить так:

Pascal abc все команды список

Кстати, операторы между собой разделяются точкой с запятой.

Операторы write, writeln, read, readln

Выясним, как происходит вывод и ввод информации.

Вывод

Как таковых операторов вывода в этом языке нет, но есть специальные слова, которые помогают запустить необходимые функции. Это write, writeln.

Pascal abc все команды список

В чем их главное отличие? При вводе или выводе последующей информации после них: в первом случае последующая информация будет выводиться на ту же строку, где и написан оператор. А вот во втором – на следующую.

Для ввода существуют тоже свои слова: read, readln (= readkey).

Pascal abc все команды список

Они отличаются друг от друга точно так же, как и предыдущие операторы (при выводе).

Целый тип данных

Выделяют 3 основных вида:

Pascal abc все команды список

С ними также проводят простые действия:

Кроме того, разрешено проводить отношения и сравнения (больше или равно — ˃ =).

Вещественные типы данных

К таким переменным относятся дробные числа (например, число пи). Здесь они называются real.

Pascal abc все команды список

Что нужно помнить? Чтобы ввести формулу дробного числа, надо вместо запятой использовать точку. Для записи степеней (х * 10 у ) 10 заменяется Е и число имеет запись:

Pascal abc все команды список

С ними можно выполнять как самые простые арифметические действия, так и более сложные:

  • квадратный корень – sqrt;
  • абсолютная величина – abs;
  • квадратичная функция – sqr;
  • синус – sin;
  • косинус – cos;
  • арктангенс – arctan;
  • натуральный логарифм – ln;
  • экспонента – exp.

Обработка данных

Помимо перечисленных выше функций (в предыдущих 2 пунктах), есть и другие:

  • целая часть числа – int;
  • дробная часть числа – frac;
  • получение целой части числа – trunc;
  • округление до целого – round;
  • преобразование порядкового типа – ord;
  • преобразование кода в символьный тип – chr;
  • определение предыдущего значения величины – pred;
  • определение последующего значения величины – succ.

Математические операции

Математические функции и операции были рассмотрены при разборе целых и вещественных данных.

Pascal abc все команды список

Остановимся на типах констант и переменных. Какие они бывают?

Простые включают в себя подтипы:

  • целые – integer;
  • логические – boolean;
  • символьные – char;
  • перечисляемые;
  • интервальные;
  • вещественные.

Строковые записываются командой string. Ссылочные представлены соответствующей формой.

Pascal abc все команды список

Структурированные делят на:

  • массивы – array;
  • записи – record;
  • множества – set;
  • файл – file.

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

Условия

Если есть альтернативные команды и функции, то с помощью операторов if, then, else можно записать необходимые команды для решения практической задачи.

Схема представлена на рисунке ниже.

Pascal abc все команды список

Логические операции

Операции основаны на истине факта или его лжи.

Pascal abc все команды список

Выделяют 3 вида таких функций:

  1. Odd – если нечетное число, то истина (наоборот – ложь).
  2. Eoln – истина на конце строки (в другом месте – ложь).
  3. Eof – истина в конце файла (в другом месте – ложь).

Функции управления программой

Pascal abc все команды список

Какие еще существуют процедуры:

  • Inc – увеличение числа;
  • Clrscr – очистка предыдущих результатов работы программы;
  • Uses crt – запуск clscr;
  • Length – возвращение длины строки;
  • Val – преобразование строки в число;
  • Pos – отыскать в строке первое преобразование;
  • Assign – связывание переменной с файлом;
  • Upcase — перевод строчных букв в заглавные.

Заключение

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

Процедура ввода данных с клавиатуры – Read (читать). Ее можно представить так:

В качестве списка ввода выступают имена переменных. Во время выполнения оператора ввода данных программа останавливается и ждет, пока они будут введены. Для завершения ввода необходимо нажать Enter. Если переменных несколько, то они могут вводиться через пробел, либо, введя одну переменную нужно нажать Enter, потом ввести вторую и т. д.

Для перевода каретки после выполнения оператора Read на новую строку, следует прибавить окончание ln:

Также можно не указывать список ввода:

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

Вывод данных:

Для вывода данных в Паскале имеется оператор Write. Для того, чтобы каретка переводилась на следующую строку, к нему прибавляется окончание ln и получается Writeln. В общем виде эти операторы имеют вид:

Элементами списка вывода являются величины различных типов, в том числе выражения и строки, отделенные друг от друга запятыми, например:

Здесь x и y – параметры, заключенные в круглые скобки. Возможно использование оператора вывода и без параметров:

Форматированный вывод:

Недостаточно просто вывести значение на экран, нужно также сделать это как можно корректнее. Допустим нам нужно в одном операторе Write вывести значения нескольких переменных (a=1, b=2, c=3). Пишем:

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

1) Вписать пробел вручную, например:

2) Воспользоваться возможностью форматированного вывода:

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

Результат выполнения: 32.101

Формат 5 означает, что всего под число 32.1012 выделено 5 клеток, а 2 – из этих пяти под дробную часть отводиться 2 клетки.

С клавиатуры вводится натуральное число N (в десятичной системе счисления), требуется вывести это число в двоичной системе счисления.

Мы знаем, что для перевода числа в другую систему счисления его нужно делить на основание системы (основание двоичной системы счисления — 2 , десятичной — 10 и т.д). Делить число нужно до тех пор пока неполное частное больше или равно основанию. Когда неполное частное становится меньше основания, начинаем выписывать остатки от деления с конца (начинать с последнего неполного частного).


Пример:

Таким образом, число 17 в двоичной системе счисления будет выглядеть так : 10001.

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

В начале программы объявляем массив, в котором мы будем хранить остатки от деления. Размерность данного массива зависит от того , какие числа мы будем переводить. Например для перевода небольших чисел хватит 100 ячеек. Если вы рассчитываете на более большие числа, то можете увеличить размерность массива.

Так как значения элементов массива будут колебаться в промежутке от 0 до 1 , то использовать мы будем тип данных byte.

Нам понадобятся ещё три переменные n, i, c . Как обычно переменная i играет роль счетчика цикла. Переменная n хранит в себе число , которое будем переводить в двоичную систему счисления. Переменная c нужна для добавления остатков от деления в массив.

Далее в программе мы используем цикл repeat для сохранения остатков от деления в массив.

Читайте также: