Перейти на главную страницу
Перевод из двоичной системы счисления в четверичную, восьмеричную,
Двоичная система, удобная для компьютеров (потому, что она имеет ряд преимуществ перед другими системами: для ее реализации нужны технические устройства с двумя устойчивыми состояниями (есть ток — нет тока, намагничен — не намагничен и т.п.), а не, например, с десятью, — как в десятичной; представление информации посредством только двух состояний надежно и помехоустойчиво; возможно применение аппарата булевой алгебры для выполнения логических преобразований информации; двоичная арифметика намного проще десятичной. Недостаток двоичной системы — быстрый рост числа разрядов, необходимых для записи чисел), для человека неудобна из-за ее громоздкости и непривычной записи.
Перевод чисел из десятичной системы в двоичную и наоборот выполняет машина. Однако, чтобы профессионально использовать компьютер, следует научиться понимать слово машины. Для этого и разработаны восьмеричная и шестнадцатеричная системы.
Числа в этих системах читаются почти так же легко, как десятичные, требуют соответственно в три (восьмеричная) и в четыре (шестнадцатеричная) раза меньше разрядов, чем в двоичной системе (ведь числа 8 и 16 — соответственно, третья и четвертая степени числа 2).
Перевод восьмеричных и шестнадцатеричных чисел в двоичную систему очень прост: достаточно каждую цифру заменить эквивалентной ей двоичной триадой (тройкой цифр) или тетрадой (четверкой цифр).
Например:
Сводная таблица переводов целых чисел из одной системы счисления в другую.
Рассмотрим только те системы счисления, которые применяются в компьютерах — десятичную, двоичную, восьмеричную и шестнадцатеричную. Для определенности возьмем произвольное десятичное число, например 46, и для него выполним все возможные последовательные переводы из одной системы счисления в другую. Порядок переводов определим в соответствии с рисунком:
На этом рисунке использованы следующие обозначения:
Графический режим работы.
Помимо модуля CRT, который позволяет улучшать вывод на экран. Но как уже говорилось это не единственная библиотека, сегодня мы начнем знакомиться с новой библиотекой, которая позволяет работать с графическим режимом дисплея. В этом режиме любое изображение на экране синтезируется на множество мельчайших элементов, называемых пикселями. Каждый пиксель представляет собой светящуюся точку таких размеров, при которых промежутки между соседними пикселями отсутствуют. Если группа смежных пикселей светятся, то они воспринимаются не как совокупность отдельных точек, а как сплошной участок. Таким образом, на экране дисплея может быть синтезировано любое графическое изображение.
В графическом режиме экран разделяется прямоугольной сеткой, каждый элемент которой имеет свои координаты. Левый верхний угол экрана имеет координаты (0;0). Значение левой координаты (Х) увеличивается в горизонтальном направлении слева направо. Значение правой координаты (У) увеличивается в вертикальном направлении сверху вниз.
Графическому режиму как и текстовому, присуще понятие текущего указателя. Текущий указатель в любой момент времени может находится в любой точке экрана с координатами (х;у). Его местонахождение отображается курсором, но в графическом режиме курсор не виден.
InitGraph (gd, gm, p);
где gd – переменная типа integer, которая указывает на используемый тип графического драйвера; gm – переменная типа integer устанавливающая разрешение экрана; p – строковая константа, указывающая путь к драйверу.
Драйвер – это программа обеспечивающая работу отдельного устройства, в данном случае графического адаптера, который в свою очередь позволяет реализовать графический режим.
В нашем случае gd=9 всегда.
Что касается разрешения то возможны такие варианты значений которые принимает переменная gm:
gm=0 - низкое (640x200)
gm=1 - среднее (640x350)
gm=2 - высокое (640x480)
Ну а путь к драйверу на наших машинах выглядит следующим образом: ‘c:\trans\bp\bgi’
CIoseGraph;
PutPixel (x, y, c);
где х и у – координаты точки, а с – это цвет которым будет изображена точка (номера цветов аналогичны номерам цветам в модуле crt).
Пример: Нарисовать точку зеленого цвета в центре экрана
Program Primer;
Uses Graph;
Var Gd, Gm : Integer;
Begin
InitGraph(Gd,Gm,’c:\trans\bp\bgi’);
PutPixel(320,240,2);
Readln;
End.
SetColor (c);
где с – цвет которым будет изображена линия или текст.
Стиль линии
SetLineStyle (s, p, t);
где s – стиль лини; p – шаблон линии; t – толщина линии.
Переменная s может принимать следующие значения:
0
1
2
3
4 Определяется шаблоном
Переменная t принимает следующие значения:
1 - Тонкая
3 - Толстая
Переменная p может иметь любое значение если стиль линии не шаблон (т.е. если s<>4).
Line (x1,y1, x2,y2);
где x1,y1- начальные координаты прямой линии; x2,y2 – координаты конца линии.
Отрезок до точки
LineTo (x,y);
где линия рисуется от точки в который находится указатель в данный момент; х, у – координаты указателя после выполнения команды, т.е. линия рисуется до точки с координатами х, у.
Данную команду удобно использовать при рисовании ломанных линий.
MoveTo (x,y);
LineRel (dx, dy);
где линия рисуется от точки в который находится указатель в данный момент; а конечные координаты отрезка формируются следующим образом: к текущим координатам х и у прибавляются соответственно dx и dy.
Задания:
Rectangle(x1,y1,x2,y2);
x1,y1,x2,y2 – координаты противоположных не смежных вершин прямоугольника.
Окружность
Circle (x, y, r);
где x, y – координата центра окружности, а r – радиус окружности.
Дуга окружности
Arc (x,y,nu,ku,r);
где x,y – координаты центра окружности, r – радиус окружности, nu – начальный угол с которого начинается рисование дуги, ku – конечный угол, переменные nu,ku – измеряются в градусах.
Дуга эллипса
Ellipse(x,y,nu,ku,rx,ry);
где x,y – координаты центра эллипса, rx,ry – радиусы эллипса соответственно по оси х и по оси у, nu – начальный угол с которого начинается рисование дуги, ku – конечный угол, переменные nu,ku – измеряются в градусах.
Например для того чтобы нарисовать полный эллипс необходимо выполнить такую команду: Ellipse(x,y,0,360,rx,ry);
SetFillStyle (s, c);
где s – стиль заполнения фигуры, c – номер активного цвета.
Виды стилей заполнения:
0 - сплошная закраска фоновым цветом
1 - сплошная закраска активным цветом
9 - закраска пикселей в шахматном порядке
12 - пользовательский стиль
2 3 4 5 6 7 8 10 11
Bar (x1,y1, x2,y2);
x1,y1,x2,y2 – координаты противоположных не смежных вершин прямоугольника.
Параллелепипед
Bar3d(x1,y1,x2,y2,d,t);
x1,y1,x2,y2 – координаты противоположных не смежных вершин передней грани параллелепипеда, d – ширина боковой грани, t - Верхняя грань(True (TopOn) – есть, False (TopOff) – нет).
Закрашенный эллипс
FillEllipse (x,y,Rx,Ry);
где x,y – координаты центра эллипса, Rx,Ry – радиусы эллипса соответственно по оси х и по оси у.
Закрашенный сектор круга
PieSlice (x,y,nu,ku,r);
где x,y – координаты центра круга, r – радиус круга, nu – начальный угол с которого начинается рисование сектора круга, ku – конечный угол, переменные nu,ku – измеряются в градусах.
Закрашенный сектор эллипса
Sector(x,y,nu,ku,rx,ry);
где x,y – координаты центра эллипса, rx,ry – радиусы эллипса соответственно по оси х и по оси у, nu – начальный угол с которого начинается рисование сектора эллипса, ku – конечный угол, переменные nu,ku – измеряются в градусах.
Закраска произвольной фигуры
FloodFill (x,y, b);
где x,y - координаты внутренней точки; b – номер цвета границы.
Задание на оценку: Разукрасить нарисованную ранее рожицу.
Вывод текста в графике
Стиль текста
SetTextStyle(s, d, r)
где s – стиль текста, d – направление, r – размер.
стиль: 0 – побитовый направление: 0 - горизонтально (®) размер: 1..10
1 – тройной 1 - вертикально ()
2 – малый
3 – гротесковый
4 – готический
OutTextXY(x, y,s)
где, x, y – координаты, s – текст (тип - string).
Выравнивание текста
SetTextJustify(h, v)
где h - выравнивание по горизонтали, v - выравнивание по вертикали.
Выравнивание текста относительно точки привязки
Преобразование чисел в текст
Str ( x, s )
где x – исходное число, s - строка (текст) - тип - string
Ширина строки - Функция
TextWidth (S)
где S – строка (ширина в пикселях)
Высота строки - Функция
TextHeight(S)
где S – строка (высота в пикселях)
Задание:
Задачи:
Задачи:
г)
Организация движения в Turbo Pascal.
Алгоритм организации движения:
Задачи:
Задачи:
Пример: движение шарика только при нажатии стрелок.
Задачи:
В практике программирования часто встречаются задачи, в которых по ходу выполнения программы приходится производить одни и те же действия или вычисления, но при различных исходных данных. Чтобы исключить повторение одинаковых операторов и сделать тем самым программу проще и понятнее, можно выделить эти повторяющиеся действия в самостоятельную часть программы, которая может быть использована многократно по мере необходимости.
Автономная часть программы, реализующая определенный алгоритм и допускающая обращение к ней из различных частей общей программы, называется подпрограммой.
Подпрограммы оформляются в виде замкнутых участков программы, имеющих четко обозначенные вход и выход.
Обращение к подпрограмме осуществляется из основной программы через заголовок подпрограммы. При вызове подпрограммы работа основной программы приостанавливается, и начинает выполняться вызванная подпрограмма. Она обрабатывает данные, переданные ей из основной программы, или просто выполняет заданную последовательность действий. По завершении выполнения подпрограммы основная программа продолжает выполнятся с того места, где прервалось ее действие.
Передача данных из основной программы в подпрограмму (входные данные) и возврат результата выполнения подпрограммы осуществляется с помощью параметров.
Параметры - это данные, которые передаются вызываемой подпрограмме и используются последней в качестве входной и (или) выходной информации.
Использование подпрограмм позволяет реализовать один из самых прогрессивных методов программирования - структурное программирование.
Процедура в Паскале
и ее формат.
Любая программа может содержать несколько процедур и функций. Процедуры и функции объявляются в разделе описания вслед за пределом описания переменных.
Процедура - это независимая часть программы, которую можно вызывать по имени для выполнения определенных действий.
Структура процедуры имеет вид :
Procedure имя(список формальных параметров);
(* раздел описаний *)
begin
end;
В заголовке указывается служебное слово PROCEDURE, за которым следуют имя процедуры и список формальных параметров, заключенные в круглые скобки (если такие имеются). В списке перечисляются имена формальных параметров и их тип. Имя параметра отделяется от типа двоеточием, а параметры друг от друга - точкой с запятой. Если несколько формальных параметров имеют одинаковый тип, тогда их можно перечислить через запятую, а затем указать тип.
Тело процедуры заключается в операторные скобки BEGIN и END, причем после END ставится точка с запятой.
Раздел описаний процедуры подобен программе и состоит из разделов меток, констант, типов, переменных и , в свою очередь, процедур и функций.
Процедура вызывается по ее имени :
имя(список фактических параметров);
Формальные параметры - параметры, определенные в заголовке процедуры.
Фактические параметры - выражения, задающие конкретные значения при обращении к процедуре.
При обращении к процедуре ее формальные параметры замещаются фактическими, переданными из основной программы.
Фактические параметры - это параметры, которые передаются процедуре при ее вызове.
Количество и тип формальных и фактических параметров должны в точности совпадать.
Формальные параметры описываются в заголовке процедуры и определяют тип и место подстановки фактических параметров. Формальные параметры делятся на два вида: параметры-переменные и параметры-значения.
Параметры-переменные отличаются тем, что передними стоит служебное слово Var. Они используются тогда, когда необходимо, чтобы изменения значений формальных параметров в теле процедуры приводили к изменению соответствующих фактических параметров.
Параметры-значения отличаются тем, что перед ними слово Var не ставится. Внутри процедуры можно производить любые действия с параметрами-значениями, но все изменения никак не отражаются на значениях соответствующих фактических параметров, то есть какими они были до вызова процедуры, такими же и останутся после завершения ее работы.
Все переменные программы делятся на глобальные и локальные. Глобальные переменные объявляются в разделе описаний основной программы. Локальные переменные объявляются в процедурах и функциях. Таким образом, локальные переменные «живут» только во время работы подпрограммы.
Пример. Составить программу для вычисления аn : целые числа а и n (n>=0) вводятся с клавиатуры. ( составить процедуру для вычисления степени целого числа).
Program ex;
var a, n : integer;
s: longint;
Procedure Degree(x,y : integer; var st : longint);
var i : integer;
begin
for i:=1 to y do st:=st*x;
end;
{ начало основной программы}
writeln(‘введите два числа - основание и показатель степени’);
readln(a,n);
Degree(a,n,s); { обращение к процедуре }
writeln(‘Результат ’,s);
end.
После заголовка процедуры идут разделы описаний. В нашем примере имеется только раздел описания переменных, в котором описывается одна переменная i (счетчик цикла).
Далее идет тело процедуры. Оно начинается служебным словом Begin и заканчивается служебным словом End, после которого стоит точка с запятой (в конце программы после последнего End ставится точка). В теле процедуры вычисляется степень числа x с помощью цикла For.
В программе процедуры и функции описываются после раздела описания переменных программы, но до начала ее основной части, то есть до Begin , начинающего эту часть программы.
!!!! Процедура вызывается как оператор, состоящий из имени процедуры. В круглых скобках записываются фактические параметры. В нашем примере формальные параметры x, y и st принимают значения фактических параметров a, n и s соответственно. После завершения работы процедуры переменные a и n сохранят те же значения, что и при вызове, а s получит новое значение.
Пример 2 : Используя процедуру для вычисления степени числа, найти значение выражения : y=a4x4 + a3x3 + a2x2 + a1x + a0
program ex2;
var a: array[0..4] of integer;
i, x: integer;
y,s: longint;
Procedure Degree(xx,n : integer; var st : longint);
var i : integer;
begin
st:=1;
end;
begin
writeln(‘введите массив коэффициентов’);
for i:=0 to 4 do begin write(‘a[‘,i,’]=’); readln(a[i]); end;
y:=a[0];
begin
end;
end.
Пример 3. Просуммировать различные части массива.
Program sumir;
var a: array [1..100] of integer; sa1, sa2,sa3 : integer;
n,l,t : integer;
procedure summa(a:array [1..100] of integer; k,m :integer; var s:integer);
var i:integer;
begin
for i:=k to m do s:=s+a[i];
end;
BEGIN
begin
readln(a[i]);
end;
summa(a,10,20,sa1);
summa(a, n,n+3,sa3);
end.
Задачи:
Программа алгоритм, записанный на языке программирования, служащий для выполнения каких-либо действий
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 стр.