Лекции по Turbo Pascal 7 класс Паскаль. Программа алгоритм, записанный на языке программирования, служащий для выполнения каких-либо действий



бет4/10
Дата06.06.2016
өлшемі1.5 Mb.
#117336
түріЛекции
1   2   3   4   5   6   7   8   9   10

ЗАДАЧИ ПОВЫШЕННОЙ СЛОЖНОСТИ


  1. Напечатать строку, образованную символами, расположенными в четырех углах символьного массива (в любом порядке).

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

  3. Д

    *




    *




    *




    *




    *




    *




    *




    *




    *




    *




    *




    *




    *




    ан двумерный массив размером 5х5, заполненный буквами. Напечатать слово, образованное элементами массива, отмеченными звездочкой (*), при прочтении их:

а) слева направо в каждой строке, начиная с первой;

б) сверху вниз в каждом столбце, начиная с первого.



  1. Напечатать слова, образованные четными элементами каждой строки массива.

  2. В каждой строке двумерного символьного массива найти количество букв «Е», расположенных справа от буквы «Н»

  3. Проверить, одинаковые ли строки целочисленного массива с номерами N и М.

  4. Найти :

а) номер первой по порядку строки целочисленного массива, содержащей наибольшее число цифр;

б) номер первого по порядку столбца символьного массива, содержащего наибольшее число пробелов;

в) номер последней по порядку строки символьного массива, содержащей наибольшее количество букв «Ш» и «Щ».


  1. Шахматную доску представить в виде квадратного символьного массива размером 8 х 8. Заполнить массив таким образом, чтобы элементы массива, соответствующие черным полям, имели значение Х. Левое нижнее поле на шахматной доске всегда черное.

Символы и строки.

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

Символы.

Для хранения и обработки отдельных символов используются переменные типа. Значением переменной типа char может быть любой символ. Переменная символьного типа должна быть объявлена в разделе описания переменных так:

Имя:;

где имя – имя переменной символьного типа, char – ключевое слово обозначения символьного типа.



Примеры: otv: char;

ch: char;

Как и любая переменная программы, переменная типа char может получить свое значение в результате выполнения команды присвоения или ввода (read, readln). Если переменная типа char получает значение в результате выполнения операции присвоения, то справа от знака := должно стоять выражение типа char или символьная константа – символ, заключенный в двойные кавычки.

В результате выполнения программы:

var

c1, c2, otvet: char;



begin

c1:=’*‘;


c2:=c1;

write (‘Вы хотите научиться программировать?’);

readln (otvet);

writeln (c1, ‘Ваш ответ: ’, otvet, c2);

readln;

end.


переменная с1 получает значение присваиванием значения константы, с2 – присваиванием значения переменной с1, а значение переменной otvet вводится с клавиатуры.

Обратите внимание: переменная otvet объявлена как char, т.е. один символ. Поэтому если в ответ на вопрос программы будет введено, например слово «Да», то переменная otvet получит значение «Д».

Переменную типа char можно сравнивать с другой переменной типа char или с символьной константой. Сравнение основано на том, что каждому символу поставлено в соответствии число, причем символу ‘0’ соответствует число меньшее чем символу ‘9’, а символу ‘A’ – меньшее, чем ‘B’, символу ‘Z’ – меньшее чем ‘a’. Таким образом можно записать: ‘0’<’1’<…<’9’<…<’A’<’B’<…<’Z’<’a’<’b’<…<’z’.

Символам русского алфавита соответствуют числа большие, чем символы латинского алфавита.



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

Строки.


Последовательность символов называют строкой. Для хранения и обработки последовательностей символов (строк) можно использовать массив символов. Например, если программа должна вводить с клавиатуры фамилии людей. Эту задачу можно решить вводя строки в символьный массив, длина которого выбирается равной количеству букв самой длиной фамилии. Однако в этом случае на клавиатуре каждый раз приходится набирать строку длиной равной ровно столько символов сколько в самой длиной фамилии (дополняя короткие фамилии пробелами), что не очень удобно. Поэтому помимо массивов из символов есть такое понятие как строки, это переменные типа string, Значением переменной типа string может быть любая последовательность символов длиной не более 255.

Переменная типа string должна быть объявлена в разделе описания переменных так:

Имя: string;

или


Имя: string[длина];

где Имя – имя переменной; string – ключевое слово обозначения строкового типа; длина – константа типа integer, определяющая максимальную длину последовательности символов, которая может быть присвоена переменной.

Примеры: name: string [30]:

s: string;

Если при объявлении переменной длина не указывается, то предполагается что длина строки равняется 255 символам, т.е. объявления s: string; и s:string[255]; эквивалентны.

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

parol:=’большой секрет’;

или parol:=’2004’;

Утверждение parol:=2004; приведет к ошибке при компиляции, так как тип переменной не соответствует типу константы.

Переменную типа string можно сравнивать с другой переменной или константой типа string, используя операторы =, <, >, <=, >=, <>. Строки сравниваются посимвольно от первого символа. Если все символы сравниваемых строк одинаковые, то такие строки считаются равными. Если в одинаковых позициях строк находятся разные символы, большей считается та строка, у которой в этой позиции находится символ с большим кодом. Например: Иванов – 1 строка, Иванов – 2 строка, тогда они равны; васильев – 1 строка, Васильев – 2 строка, тогда 1 строка больше 2; Алексеев – 1 строка, петров – 2 строка, тогда 1 строка меньше 2; Иванова – 1 строка, Иванов – 2 строка , тогда 1 строка больше 2.

Кроме операций сравнения к строковым переменным и константам можно применить оператор сложения, в результате выполнения которого получается новая строка, полученная склеиванием двух или более строк. Например: name:=’Иван’;

fam:=’Иванов’;

fn:= fam +’ ‘+name;

переменная fn получит значение ’Иванов Иван’.

Задачи:


  1. Составить программу:

а) которая запрашивает имя человека и повторяет его на экране;

б) которая запрашивает имя человека и повторяет его на экране с приветствием;

в) которая запрашивает название футбольной команды и повторяет его на экране со словами: "Это чемпион!".


  1. Дано слово. Получить и вывести на экран буквосочетание, состоящее из его второго и четвертого символов.

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

  3. Составить программу, которая запрашивает отдельно имя и отдельно фамилию, а затем выводит их как одну символьную строку.

  4. Дано слово. Вывести на экран его третий символ.

  5. Дано слово. Вывести на экран его последний символ.

  6. Дано слово. Вывести на экран его k-й символ.

  7. Дано слово. Определить, одинаковы ли второй и четвертый символы в нем.

  8. Дано слово. Верно ли, что оно начинается и оканчивается на одну и ту же букву?

  9. Даны два слова. Верно ли, что первое слово начинается на ту же букву, которой оканчивается второе слово?

Turbo Pascal предоставляет несколько полезных при работе со строками функций и процедур.

Функция length.

Функция length возвращает длину строки. У функции один параметр – переменная строкового типа. Возвращаемое значение функции (целое число) – количество символов, из которых состоит строка, без учета начальных и завершающих пробелов. Например length(’Иванов’) равно 6, а значение length(’ Невский проспект ’) равно 16, так как при вычислении длины строки функция не учитывает начальные и завершающие пробелы.



Примеры определения длины строки

  • k:=length(‘мир’); k=3

  • s:=‘Кот и пес’;

n:= length(s); n=9

  • s1=‘’;

i:= length(s1); i=0

‘’ - пустая строка!

Задачи:


  1. Дано название футбольного клуба. Определить количество символов в нем.

  2. Дано название города. Определить четно или нет количество символов в нем.

  3. Даны две фамилии. Определить какая из них длиннее.

Функция copy.

Функция copy позволяет выделить фрагмент строки. В общем виде обращение к функции copy  выглядит так: (строка, p, n);

где строка – переменная строкового типа, содержащая строку, фрагмент которой надо получить; p – номер первого символа в строке строка, с которого начинается выделяемая подстрока; n – длина выделяемой подстроки. Например, в результате выполнения команд:

s:= ‘Инженер Иванов’;

fam:= copy (s, 9, 6);

значением переменной fam будет строка ‘Иванов’.



Примеры выделения символов

  • s:=‘информатика’;

s1:=copy (s, 3, 5); s1=‘форма’

s2:=copy (s, 8, 2)+ copy (s, 3, 1); s2=‘тиф’

Задачи:


  1. Дано слово. Получить его часть, образованную второй, третьей и четвертыми буквами.

  2. Дано слово, состоящее из четного числа букв. Вывести на экран его первую половину, не используя оператор цикла.

  3. Дано слово. Получить его часть, образованную идущими подряд буквами, начиная с m-й и кончая n-й.

  4. Из слова "яблоко" путем вырезок его букв получить слова "блок" и "око".

  5. Из слова "информатика" путем вырезок его букв получить слова "форма" и "тик".

Процедура insert.

Процедура insert позволяет добавить часть строки в исходную строку. В общем виде обращение к процедуре выглядит так: Insert ( подстрока, строка, p);

где подстрока – строковая константа или переменная, которую необходимо добавить в строковую переменную строка; p – номер первого символа в строке строка, с которого начинается добавление подстроки.

Примеры вставки символов


  • s:=‘мама’;

insert (‘очк’, s, 4); s=‘мамочка’

  • s1:=‘рог’;

s2:=‘по’;

insert (s1, s2, 3); s2=‘порог’

Задачи:


  1. Дано слово. Вставить букву "т" после k-й буквы.

  2. Дано слово. Вставить заданную букву после первой буквы "и".

  3. Дано слово. Переставить его первую букву на место последней. При этом вторую, третью, ..., последнюю буквы сдвинуть влево на одну позицию.

Процедура delete.

Процедура delete позволяет удалить часть строки. В общем виде обращение к процедуре выглядит так: delete (Строка, p, n);

где строка – переменная строкового типа; p – номер символа, с которого начинается удаляемая подстрока; n – длина удаляемой подстроки.

Например, в результате выполнения команд:

s:= ‘Город Санкт-Петербург’;

delete (s, 7, 6);

значение переменной s будет строка ‘Город Петербург’.

Примеры удаления символов


  • s:=‘котик’;

delete (s, 4, 2); s=‘кот’

  • s:=‘информатика’;

delete (s, 1, 2);

delete (s, 6, 4); s=‘форма’

Задачи:


  1. Дано слово:

а) удалить из него третью букву; б) удалить из него k-ю букву.

  1. Дано слово:

а) Удалить из него первую из букв "о", если такая буква есть.

б) Удалить из него последнюю из букв "т", если такая буква есть.



  1. Дано слово. Если его длина нечетная, то удалить среднюю букву, в противном случае - две средних буквы.

  2. Дано предложение. Удалить из него все символы с n1-го по n2-й (n1n2).

  3. Дано предложение. Удалить из него все буквы "с".

  4. Дано слово. Удалить из него все повторяющиеся буквы, оставив их первые вхождения, то есть в слове должны остаться только различные буквы.

  5. Дано предложение. Удалить из него все буквы "о", стоящие на нечетных местах.



Функция pos.

Функция pos позволяет определить положение подстроки в строке. В общем виде обращение к функции выглядит так: pos (Подстрока, строка);

где Подстрока – строковая константа или переменная, которую надо найти в строковой константе или переменной строка.

Например, в результате выполнения команды: p:= pos (‘Пе’, ‘Санкт-Петербург’); значение переменной p будет равно 7. Если в строке нет искомой подстроки, то функция возвращает ноль.



Примеры определения позиции

  • k:=pos(‘р’, ’мир’); k=3

  • s:=‘колокол’;

n:=pos(‘кол’, s); n=1

  • s1:=‘ок’; s2:=‘кок’;

i:=pos(s1, s2); i=2

  • k:=pos(‘п’, ’мама’); k=0

Например

var


st: string;

begin


write (‘Введите строку: ’);

readln (st);

while (pos (‘ ‘, st)=1) and (length (st)>0) do

delete (st, 1, 1);

write (‘Строка без начальных пробелов: ’, st);

end.


Данная программа использует функцию pos и процедуру delete для удаления пробелов в начале введенной с клавиатуры строки. пробелы удаляются в цикле while до тех пор, пока функция pos обнаруживает пробел в начале строки (значение pos при этом равно единице). Проверка условия length (st)>0 нужна, так как возможно, что введенная с клавиатуры строка состоит вся из пробелов.

Задачи:


  1. Дано предложение, в котором имеется несколько букв "е". Найти:

а) порядковый номер первой из них;

б) порядковый номер последней из них.



  1. Дано предложение. Определить, есть ли в нем буква "а". В случае положительного ответа найти также порядковый номер первой из них.

  2. Дано предложение. Определить количество букв "н", предшествующих первой запятой предложения.

  3. Дано предложение. Напечатать все символы, расположенные между первой и второй запятой. Если второй запятой нет, то должны быть напечатаны все символы, расположенные после единственной имеющейся запятой.

  4. Дано предложение, в котором имеются одна буква "с" и одна буква "т". Определить, какая из них встречается раньше (при просмотре слова слева направо).

Процедура val.

процедура val позволяет преобразовать изображение числа в число. В общем виде обращение к процедуре выглядит так: val (Строка, число, код).

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

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

var

month: integer;



st: string[10];

code: integer;

begin

repeat


write (‘Месяц->’);

readln (st);

val (st, month, code);

if code<>0 then

writeln (‘Ошибка! Месяц следует задать цифрой.’);

until code=0;

end.

Задачи:


  1. Дан текст. Напечатать все имеющиеся в нем цифры.

  2. Дан текст. Определить количество цифр в нем.

  3. Дан текст, в котором имеются цифры.

а) Найти их сумму.

б) Найти максимальную цифру.



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

Процедура str.

Процедура str позволяет преобразовать число в его изображение, т.е. в строку. В общем виде обращение к процедуре выглядит так: str (выражение, строка).

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

Задачи общие:



  1. Дано предложение. Определить число букв "о" в нем.

  2. Дано предложение. Определить число пробелов в нем.

  3. Дано предложение. Определить число вхождений в него некоторого символа.

  4. Дано предложение. Определить долю (в %) букв "а" в нем.

  5. Дан текст. Сколько раз в нем встречается символ "+" и сколько раз символ "*".

  6. Дано предложение. Определить сколько в нем одинаковых соседних букв.

  7. Дано предложение. Определить число вхождений в него буквосочетания "ро".

  8. Дано предложение. В нем слова разделены одним пробелом (начальные и конечные пробелы в предложении отсутствуют). Определить количество слов в предложении.

  9. Дано предложение. В нем слова разделены одним или несколькими пробелами. Определить количество слов в предложении.

  10. Дан текст. Подсчитать общее число вхождений в него символов "+" и "-".

  11. Дано предложение. Определить, сколько в нем гласных букв.

  12. Дано предложение. Все буквы "е" в нем заменить на букву "и".

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

  14. Дано предложение. Заменить в нем все вхождения буквосочетания "ах" на "ух".

  15. Дано предложение. Заменить в нем все вхождения буквосочетания "бит" на "рог".

  16. Дана последовательность слов. Проверить, правильно ли в ней записаны сочетания "жи" и "ши".

  17. Дана последовательность слов. Проверить, правильно ли в ней записаны сочетания "ча" и "ща". Исправить ошибки.

  18. Дано слово. Определить, сколько различных букв в нем.

  19. Даны два слова. Определить, можно ли из букв первого из них получить второе. Рассмотреть два варианта:

1) повторяющиеся буквы второго слова могут в первом слове не повторяться;

2) каждая буква второго слова должна входить в первое слово столько же раз, сколько и во второе.



  1. Даны три слова. Напечатать только те буквы слов, которые есть только в одном из слов. Рассмотреть два варианта:

1) повторяющиеся буквы каждого слова рассматриваются;

2) повторяющиеся буквы каждого слова не рассматриваются.



  1. Даны три слова. Напечатать их общие буквы. Повторяющиеся буквы каждого слова не рассматривать.

  2. Даны три слова. Напечатать неповторяющиеся в них буквы.

Массивы из строк.

Работа с массивом из строк аналогична работе с целочисленными массивами. При объявлении массива тип элементов в нем должен быть типа string.

Задачи:


  1. В массиве из строк определить количество строк начинающихся на букву «А» и ввести их на экран.

  2. В массиве найти строки, длина которых равна заданному числу, либо сообщить о их отсутствии.

  3. В массиве найти строки, начинающиеся гласной русской буквой.

  4. Отсортировать массив из строк по убыванию их длин.

  5. Отсортировать массив из строк по алфавиту.

  6. Дано предложение из 10 слов. Заполнить ими массив из 10 элементов.

  7. Дано предложение. Напечатать его в обратном порядке слов, например, предложение "мама мыла раму" должно быть напечатано в виде "раму мыла мама".

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

  9. Даны несколько строк текста, в которых нет начальных и конечных пробелов. Необходимо изменить эти строки так, чтобы их длины были одинаковыми. Это следует сделать путем вставки между словами дополнительных пробелов. Количество пробелов между отдельными словами внутри отдельной строки должно отличаться не более чем на 1.

Зачет по строкам.

Системы счисления.

Система счисления это способ наименования и записи чисел. Все они делятся на две большие группы: позиционные и непозиционные.

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

Примером непозиционной системы счисления может служить римская. В ней были определены следующие обозначения чисел: I – 1, V – 5, X – 10, L – 50, C – 100, D – 500, M – 1000.

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

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

Запись чисел в этих системах очень громоздко и не удобно, так как требует использования большого числа знаков, требуемых для записи какого - либо числа. Чтобы несколько уменьшить количество используемых знаков для записи чисел, в римской системе было введено следующее правило: Если поместить букву обозначающую меньшее число, слева от буквы обозначающей большее, то меньшее следует из большего вычитать. IV – 4, IX – 9, XL – 40, XC – 90.

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

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

CCCLIX+CLXXIV=DXXXIII. Еще труднее производить умножение. Поэтому должно быть понятно, почему были вытеснены такие системы счисления из обихода позиционными. Хотя надо отметить, что именно римская система используется до сих пор, только в тех случаях, где нет необходимости производить с числами какие – либо действия. Например, при обозначении столетий, глав в книгах, часов на циферблатах.

Общепринятой позиционной системой счисления является десятичная, берущая свое начало от счета на пальцах. Она была изобретена в Индии, затем заимствована там арабами и уже через арабские страны пришла в Европу. Значение каждой цифры в позиционной системе счисления определяется не только ею самой, но так же и местом (позицией), которое она занимает в записи числа. Для позиционной системы счисления так же характерно то, что число разбивается на разряды, которые считаются справа налево и каждая цифра в записи числа означает определенное количество единиц именно того разряда в котором эта цифра стоит (568 – 5 сотен, 6 десятков, 8 единиц). Единица каждого следующего разряда всегда в определенное количество раз превосходить единицу предыдущего. Это отношение называют основанием системы счисления.

Числа, которыми мы привыкли пользоваться называются десятичными и арифметика, которой мы пользуемся, также называется десятичной. Это потому, что каждое число можно составить из набора цифр содержащего 10 символов - цифр - "0123456789". Но десятичная арифметика не единственная. Если мы возьмём только пять цифр, то на их основе можно построить пятеричную арифметику, из семи цифр - семеричную. В областях знаний связанных с компьютерной техникой часто используют арифметику, в которой числа составляются из шестнадцати цифр, соответственно эта арифметика называется шестнадцатеричной. Чтобы понять, что такое число в не десятичной арифметике сначала выясним, что такое число в десятичной арифметике.

Возьмём, к примеру, число 246. Эта запись означает, что в числе две сотни, четыре десятка и шесть единиц. Следовательно, можно записать следующее равенство:

246 = 200 + 40 + 6 = 2 * 102 + 4 * 101 + 6 * 100

Здесь знаками равенства отделены три способа записи одного и того же числа. Наиболее интересна нам сейчас третья форма записи: 2 * 102 + 4 * 101 + 6 * 100 . Она устроена следующим образом:

В нашем числе три цифры. Старшая цифра "2" имеет номер 3. Так вот она умножается на 10 во второй степени. Следующая цифра "4" имеет порядковый номер 2 и умножается на 10 в первой. Уже видно, что цифры умножаются на десять в степени на единицу меньше порядкового номера цифры. Уяснив сказанное, мы можем записать общую формулу представления десятичного числа. Пусть дано число, в котором N цифр. Будем обозначать i-ю цифру через ai. Тогда число можно записать в следующем виде: anan-1….a2a1. Это первая форма, а третья форма записи будет выглядеть так:

anan-1….a2a1 = an * 10n-1 + an-1 * 10n-2 + …. + a2 * 101 + a1 * 100

где ai это символ из набора "0123456789"

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

anan-1….a2a1 = an * 5n-1 + an-1 * 5n-2 + …. + a2 * 51 + a1 * 50

где ai это символ из набора "012345"

В общем, заменяем 10 на любое другое число и получаем совершенно другую систему счисления и другую арифметику. Наиболее простая арифметика получается, если 10 заменить на 2. Полученная система счисления называется двоичной и число в ней определяется следующим образом:

anan-1….a2a1 = an * 2n-1 + an-1 * 2n-2 + …. + a2 * 21 + a1 * 20

где ai это символ из набора "01"

Эта система самая простая из всех возможных, так как в ней любое число образуется только из двух цифр 0 и 1. Понятно, что проще уже некуда. Примеры двоичных чисел: 10, 111, 101.

Очень важный вопрос. Можно ли, например двоичное число (или число из какой-нибудь другой системы счисления) представить в виде десятичного числа и наоборот, можно ли десятичное число представить в виде двоичного (или числа из какой-нибудь другой системы счисления).

Двоичное в десятичное. Это очень просто. Метод такого перевода даёт наш способ записи чисел. Возьмём, к примеру, следующее двоичное число 1011. Разложим его по степеням двойки. Получим следующее:

1001 = 1 * 23 + 0 * 22 + 0 * 21 + 1 * 20

Выполним все записанные действия и получим:

1 * 23 + 0 * 22 + 0 * 21 + 1 * 20 = 8 + 0+ 0 + 1 = 9. Таким образом, получаем, что 1011(двоичное) = 9 (десятичное). Сразу видно и небольшое неудобство двоичной системы. То же самое число, которое, в десятичной системе записано одним знаком в двоичной системе, для своей записи требует четыре знака. Но это плата за простоту (бесплатно ничего не бывает). Но выигрыш двоичная система даёт огромный в арифметических действиях. И далее мы это увидим.

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

При использовании системы счисления выше десятичной в обиход идут буквы, то есть, например, для шестнадцатеричной системы счисления будут использованы следующие цифры: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f.



Представьте в виде десятичного числа следующие числа.

а) 1101000112 (419); б) 34106(798); с) d7e816(55272); в) 522456(7013); г) 17688(1012); д) 10100039270); е) 2a01b12(58775).



Самостоятельная работа на перевод чисел в десятичную систему счисления.

Для того, чтобы преобразовать десятичное число в двоичное, его нужно разложить по степеням двойки. Но если разложение по степеням десятки получается сразу, то, как разложить по степеням двойки надо немного подумать. Для начала рассмотрим, как это сделать методом подбора. Возьмём десятичное число 12.

Шаг первый. 22 = 4, этого мало. Также мало и 23 = 8, а 24=16 это уже много. Поэтому оставим 23 =8. 12 - 8 = 4. Теперь нужно представить в виде степени двойки 4.

Шаг второй. 4 = 22.

Тогда наше число 12 = 23 + 22. Старшая цифра имеет номер 4, старшая степень = 3, следовательно, должны быть слагаемые со степенями двойки 1 и 0. Но они нам не нужны, поэтому чтобы избавится от ненужных степеней, и оставить нужные запишем число так: 1*23 + 1*22 +0*21 + 0*20 = 1100 - это и есть двоичное представление числа 12. Нетрудно заметить, что каждая очередная степень - это наибольшая степень двойки, которая меньше разлагаемого числа.

Для перевода целого десятичного числа  N  в систему счисления с основанием  q  необходимо  N  разделить с остатком ("нацело") на  q , записанное в той же десятичной системе. Затем неполное частное, полученное от такого деления, нужно снова разделить с остатком на  q , и т.д., пока последнее полученное неполное частное не станет равным нулю. Представлением числа N  в новой системе счисления будет последовательность остатков деления, изображенных одной q-ичной цифрой и записанных в порядке, обратном порядку их получения.



Пример: Переведем число 75 из десятичной системы в двоичную, восьмеричную и шестнадцатеричную:



Ответ: 7510 = 1 001 0112   =  1138  =  4B16.

Преобразуйте десятичные числа в двоичные:

а) 14 б) 29 в) 134 г) 158 е) 1190 ж) 2019



Самостоятельная работа на перевод чисел из десятичной системы счисления.
Арифметические действия в системах счисления.

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

Сложение
Таблицы сложения легко составить, используя Правило Счета.  


Сложение в двоичной системе



Сложение в восьмеричной системе



                 Сложение в шестнадцатиричной системе

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


  Пример. Сложим числа 15 и 6 в различных системах счисления.





Шестнадцатеричная: F16+616



Ответ: 15+6 = 2110 = 101012 = 258 = 1516
Проверка. Преобразуем полученные суммы к десятичному виду:
101012 = 24 + 22 + 20 = 16+4+1=21, 
258 = 2 . 81 + 5 . 80 = 16 + 5 = 21, 
1516 = 1 . 161 + 5 . 160 = 16+5 = 21. 



Умножение

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


Умножение в двоичной системе



Умножение в восьмеричной системе



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




Ответ: 5 . 6 = 3010 = 111102 = 368.
Проверка. Преобразуем полученные произведения к десятичному виду:
111102 = 24 + 23 + 22 + 21 = 30;
368 = 381 + 680 = 30.
 
  Пример. Перемножим числа 115 и 51.





Ответ: 115 . 51 = 586510 = 10110111010012 = 133518.
Проверка. Преобразуем полученные произведения к десятичному виду:
10110111010012 = 212 + 210 + 29 + 27 + 26 + 25 + 23 + 20 = 5865;
133518 = 1 . 84 + 3 . 83 + 3 . 82 + 5 . 81 + 1 . 80 = 5865.

Самостоятельная работа на сложение и умножение чисел в различных системах счисления.




Достарыңызбен бөлісу:
1   2   3   4   5   6   7   8   9   10




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет