Перейти на главную страницу
* |
|
* |
|
* |
|
* |
|
* |
|
* |
|
* |
|
* |
|
* |
|
* |
|
* |
|
* |
|
* |
б) сверху вниз в каждом столбце, начиная с первого.
б) номер первого по порядку столбца символьного массива, содержащего наибольшее число пробелов;
в) номер последней по порядку строки символьного массива, содержащей наибольшее количество букв «Ш» и «Щ».
Символы и строки.
Помимо числовой информации компьютер может обрабатывать символьную информацию. Turbo Pascal оперирует информацией, которая может быть представлена отдельными символами или строками символов.
Символы.
Для хранения и обработки отдельных символов используются переменные типа. Значением переменной типа char может быть любой символ. Переменная символьного типа должна быть объявлена в разделе описания переменных так:
Имя:;
где имя – имя переменной символьного типа, char – ключевое слово обозначения символьного типа.
ch: char;
Как и любая переменная программы, переменная типа char может получить свое значение в результате выполнения команды присвоения или ввода (read, readln). Если переменная типа char получает значение в результате выполнения операции присвоения, то справа от знака := должно стоять выражение типа char или символьная константа – символ, заключенный в двойные кавычки.
В результате выполнения программы:
var
c1, c2, otvet: char;
c1:=’*‘;
write (‘Вы хотите научиться программировать?’);
readln (otvet);
writeln (c1, ‘Ваш ответ: ’, otvet, c2);
readln;
end.
Обратите внимание: переменная otvet объявлена как char, т.е. один символ. Поэтому если в ответ на вопрос программы будет введено, например слово «Да», то переменная otvet получит значение «Д».
Переменную типа char можно сравнивать с другой переменной типа char или с символьной константой. Сравнение основано на том, что каждому символу поставлено в соответствии число, причем символу ‘0’ соответствует число меньшее чем символу ‘9’, а символу ‘A’ – меньшее, чем ‘B’, символу ‘Z’ – меньшее чем ‘a’. Таким образом можно записать: ‘0’<’1’<…<’9’<…<’A’<’B’<…<’Z’<’a’<’b’<…<’z’.
Символам русского алфавита соответствуют числа большие, чем символы латинского алфавита.
Строки.
Переменная типа 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 получит значение ’Иванов Иван’.
Задачи:
б) которая запрашивает имя человека и повторяет его на экране с приветствием;
в) которая запрашивает название футбольной команды и повторяет его на экране со словами: "Это чемпион!".
Функция length возвращает длину строки. У функции один параметр – переменная строкового типа. Возвращаемое значение функции (целое число) – количество символов, из которых состоит строка, без учета начальных и завершающих пробелов. Например length(’Иванов’) равно 6, а значение length(’ Невский проспект ’) равно 16, так как при вычислении длины строки функция не учитывает начальные и завершающие пробелы.
‘’ - пустая строка!
Задачи:
Функция copy позволяет выделить фрагмент строки. В общем виде обращение к функции copy выглядит так: (строка, p, n);
где строка – переменная строкового типа, содержащая строку, фрагмент которой надо получить; p – номер первого символа в строке строка, с которого начинается выделяемая подстрока; n – длина выделяемой подстроки. Например, в результате выполнения команд:
s:= ‘Инженер Иванов’;
fam:= copy (s, 9, 6);
значением переменной fam будет строка ‘Иванов’.
s2:=copy (s, 8, 2)+ copy (s, 3, 1); s2=‘тиф’
Задачи:
Процедура insert позволяет добавить часть строки в исходную строку. В общем виде обращение к процедуре выглядит так: Insert ( подстрока, строка, p);
где подстрока – строковая константа или переменная, которую необходимо добавить в строковую переменную строка; p – номер первого символа в строке строка, с которого начинается добавление подстроки.
Примеры вставки символов
insert (s1, s2, 3); s2=‘порог’
Задачи:
Процедура delete позволяет удалить часть строки. В общем виде обращение к процедуре выглядит так: delete (Строка, p, n);
где строка – переменная строкового типа; p – номер символа, с которого начинается удаляемая подстрока; n – длина удаляемой подстроки.
Например, в результате выполнения команд:
s:= ‘Город Санкт-Петербург’;
delete (s, 7, 6);
значение переменной s будет строка ‘Город Петербург’.
Примеры удаления символов
delete (s, 6, 4); s=‘форма’
Задачи:
б) Удалить из него последнюю из букв "т", если такая буква есть.
Функция pos позволяет определить положение подстроки в строке. В общем виде обращение к функции выглядит так: pos (Подстрока, строка);
где Подстрока – строковая константа или переменная, которую надо найти в строковой константе или переменной строка.
Например, в результате выполнения команды: p:= pos (‘Пе’, ‘Санкт-Петербург’); значение переменной p будет равно 7. Если в строке нет искомой подстроки, то функция возвращает ноль.
var
begin
readln (st);
while (pos (‘ ‘, st)=1) and (length (st)>0) do
delete (st, 1, 1);
write (‘Строка без начальных пробелов: ’, st);
end.
Задачи:
б) порядковый номер последней из них.
процедура val позволяет преобразовать изображение числа в число. В общем виде обращение к процедуре выглядит так: val (Строка, число, код).
где строка – строковая константа или переменная, содержащая изображение числа; число - переменная, которой должно быть присвоено значение, изображенное строкой строка; код – возвращаемый процедурой код ошибки. Если строка может быть преобразована в число, то код ошибки равен нулю.
Процедура val полезна при организации ввода с клавиатуры. Например, если в программе описана переменная month типа integer и ее значение вводится с клавиатуры, то в результате возможной ошибки оператора, задавшего месяц строкой символов, например 'июнь', а не цифрой, программа завершается ошибкой времени выполнения. Однако если числовые данные вводить как строку, а затем преобразовывать в число с помощью процедуры val, то можно избежать подобного неприятного завершения программы. Ниже приведен пример такой программы.
var
month: integer;
code: integer;
begin
repeat
readln (st);
val (st, month, code);
if code<>0 then
writeln (‘Ошибка! Месяц следует задать цифрой.’);
until code=0;
end.
Задачи:
б) Найти максимальную цифру.
Процедура str позволяет преобразовать число в его изображение, т.е. в строку. В общем виде обращение к процедуре выглядит так: str (выражение, строка).
где выражение – выражение или переменная целого или вещественного типа, строка – строковая переменная, которой будет присвоено изображение выражения.
Задачи общие:
2) каждая буква второго слова должна входить в первое слово столько же раз, сколько и во второе.
2) повторяющиеся буквы каждого слова не рассматриваются.
Работа с массивом из строк аналогична работе с целочисленными массивами. При объявлении массива тип элементов в нем должен быть типа string.
Задачи:
Системы счисления.
Система счисления это способ наименования и записи чисел. Все они делятся на две большие группы: позиционные и непозиционные.
В непозиционной системе счисления каждый знак, употребляемый для записи чисел, всегда обозначает одно и то же число. Цифра – это знак, используемый для изображения числа.
Примером непозиционной системы счисления может служить римская. В ней были определены следующие обозначения чисел: 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-ичной цифрой и записанных в порядке, обратном порядку их получения.
а) 14 б) 29 в) 134 г) 158 е) 1190 ж) 2019
Рассмотрим основные арифметические операции: сложение, вычитание, умножение и деление. Правила выполнения этих операций в десятичной системе хорошо известны — это сложение, вычитание, умножение столбиком и деление углом. Эти правила применимы и ко всем другим позиционным системам счисления. Только таблицами сложения и умножения надо пользоваться особыми для каждой системы.
Сложение
Таблицы сложения легко составить, используя Правило Счета.
Сложение в двоичной системе ![]() |
Сложение в восьмеричной системе ![]() |
При сложении цифры суммируются по разрядам, и если при этом возникает избыток, то он переносится влево.
Шестнадцатеричная: 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. |
Умножение в двоичной системе ![]() |
Умножение в восьмеричной системе ![]() |
Самостоятельная работа на сложение и умножение чисел в различных системах счисления.
Программа алгоритм, записанный на языке программирования, служащий для выполнения каких-либо действий
25 09 2014
10 стр.
В языке программирования Turbo Pascal все данные, используемые программой должны принадлежать к какому-либо типу данных. Некоторые из них
13 10 2014
1 стр.
Блеза Паскаля. На основе языка Паскаль в 1985 г фирма Borland выпустила версию Turbo Pascal версии с этого времени язык Паскаль используется во всем мире в учебных заведениях в кач
02 10 2014
4 стр.
25 09 2014
1 стр.
Блеза Паскаля. Первоначально этот язык был создан для обучения программированию. Однако благодаря заложенным в нем большим возможностям структурного программирования он стал широко
25 09 2014
6 стр.
Основными достоинствами Паскаля являются легкость при изучении и наглядность программ. Кроме того, в языке Паскаль отражена концепция структурного программирования, имеется богатый
25 09 2014
1 стр.
В33 Середовище програмування Turbo Pascal 0: Підруч для учнів 10 кл серед загальноосв шк. – Ввпк: „Коледж”, 2008 – 47с
25 09 2014
4 стр.
Приведём простейший пример программы, единственная цель которой – вывести на экран какое-нибудь приветствие
14 09 2014
14 стр.