Язык программирования Паскаль
Определение данных в языке Паскаль. Особенности линейного вычислительного процесса. Характеристика разветвляющегося вычислительного процесса и условного оператора. Рассмотрение директивы компилятора и обработки ошибок ввода. Обзор открытых массивов.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | учебное пособие |
Язык | русский |
Дата добавления | 26.09.2017 |
Размер файла | 635,7 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
begin
assign (f,sprName);
{$I-}
reset (f);
{$I+}
if IoResult<>0 then Error (1,sprName);
for n:=1 to maxPictures do
for j:=0 to height-1 do
for i:=0 to width-1 do begin
read (f,b);
Pict [n,i,j]:=b;
end;
close (f);
end;
procedure Deltas (sNum,Dir:integer;
var dx,dy:integer);
var x,y:integer;
begin
x:=spr[sNum].x; y:=spr[sNum].y;
case Dir of
LeftDir: begin
Dec(x,Delta);
if x<0 then x:=0;
end;
RightDir: begin
Inc(x,Delta);
if x>maxx-width then x:=maxx-width;
end;
UpDir: begin
Dec (y,Delta);
if y<10 then y:=10;
end;
DownDir: begin
Inc(y,Delta);
if y>currentBottom then
y:=currentBottom;
end;
end;
dx:=x; dy:=y;
end;
function Between (a,x,b:integer):boolean;
begin
if (x>a) and (x<b) then Between:=true
else Between:=false;
end;
procedure shootMovies;
var i,d,n:integer;
x,y:word;
found:boolean;
begin
for i:=1 to maxshoots do
if shoots[i].state=1 then begin
x:=shoots[i].x; y:=shoots[i].y;
d:=shoots[i].PNum;
setfillstyle (solidfill,White);
setcolor (White);
fillellipse(x,y,shootradius,shootradius);
if d=updir then begin
setfillstyle (solidfill,RED);
if y<15 then begin
shoots[i].state:=0; continue;
end;
found:=false;
for n:=2 to currentsprites do begin
if spr[n].state=1 then begin
if (Between(spr[n].x,x,
spr[n].x+width)) and
(Between(spr[n].y,y,
spr[n].y+height)) then begin
shoots[i].state:=0;
found:=true;
spr[n].state:=2;
Inc(spr[n].PNum);
Inc(score,10+5*n);
showscore;
break;
end;
end;
end;
if not found then Dec(y,Delta);
end
else begin
setfillstyle (solidfill,Blue);
if y>maxy-10-(height div 2) then begin
shoots[i].state:=0;
continue;
end;
found:=false;
if Between(spr[1].x,x,spr[1].x+width)
and
Between(spr[1].y,y,spr[1].y+height)
then begin
shoots[i].state:=0; found:=true;
Inc(spr[1].Pnum); DieMe:=true;
Help ('you are missed one life :-(');
Drawsprite (1);
end;
if not found then Inc(y,Delta);
end;
if not found then begin
fillellipse(x,y,shootradius,shootradius);
shoots[i].x:=x; shoots[i].y:=y;
end;
end;
end;
procedure Enemiesstep;
var i,k,Dir,dx,dy,n:integer;
begin
Enemies:=0;
for i:=2 to currentsprites do begin
if spr[i].state=1 then begin
Inc(Enemies);
for k:=1 to 3 do begin
dir:=random(4);
if dir=spr[i].pREDir then break;
end;
spr[i].pREDir:=dir;
Deltas (i, dir, dx, dy);
restorescreen (i,Dir,Delta);
spr[i].x:=dx; spr[i].y:=dy;
Drawsprite (i);
Initshoot:=false;
GetTime(Hour,min,secN1,sec100);
if (secN1<>secN) and
(1+random(100)<shootsProbability) then
Initshoot:=true;
if Initshoot then begin
secN:=secN1;
for n:=1 to maxshoots do
if (shoots[n].state=0) and
(Enemyshooter<>i) then begin
Enemyshooter:=i;
shoots[n].x:=dx+ (width div 2);
shoots[n].y:=dy +height +5;
shoots[n].PNum:=DownDir;
shoots[n].state:=1;
break;
end;
end;
end
else if spr[i].state=2 then begin
GetTime (Hour,min,secI,sec100);
Drawsprite (i);
if secI<>secI1 then begin
secI1:=secI;
if (spr[i].PNum<11) then
Inc(spr[i].PNum)
else begin
spr[i].state:=0;
setfillstyle (solidfill, White);
bar (spr[i].x,spr[i].y,
spr[i].x+width-1,spr[i].y+height-1);
end;
end;
end;
end;
end;
procedure Timefunctions;
var i:integer;
begin
if not InGame then Exit;
GetTime(Hour,min,sec1,sec100);
if (shooter) and (sec<>sec1) then begin
spr[1].PNum:=1;
if shootx=spr[1].x then Drawsprite (1);
shooter:=false;
end;
if (DieMe) and (sec<>sec1) then begin
if spr[1].Pnum<5 then begin
sec:=sec1; Inc(spr[1].PNum);
Drawsprite (1); DieMe:=true;
end
else begin
DieMe:=false;
if Lives>0 then begin
Dec(Lives); showLives;
spr[1].PNum:=1;
Drawsprite (1);
end
else InGame:=false;
end;
end;
end;
function getlongintTime:longint;
{Вернет системное время как longint}
var Hour,minute,second,sec100: word;
var k,r:longint;
begin
GetTime (Hour, minute, second, sec100);
k:=Hour; r:=k*360000;
k:=minute; Inc (r,k*6000);
k:=second; Inc(r,k*100);
Inc(r,sec100); getlongintTime:=r;
end;
procedure Delay (ms:word);
var endTime,curTime : longint;
cor:boolean;
begin
cor:=false;
endTime:=getlongintTime + ms div 10;
if endTime>8639994 then cor:=true;
repeat
curTime:=getlongintTime;
if cor=true then begin
if curTime<360000 then
Inc (curTime,8639994);
end;
until curTime>endTime;
end;
label 10,20;
begin
randomize; InitAll; InGame:=false;
start;
settextstyle (DefaultFont,HorizDir,1);
settextjustify (Lefttext,toptext);
Loadsprites;
currentBottom:=200; currentshoots:=50;
Lives:=3; score:=0; Level:=1;
shootsProbability:=5;
currentsprites:=5;
10:
DrawField;
if Level>1 then begin
str(Level-1,s);
Help ('cool, you''re complete level '+s);
end
else Help
('Let''s go! Kill them, invaders!');
repeat
if InGame then repeat
Enemiesstep;
if Enemies=0 then begin
Inc(score,100+Level*10);
if shootsProbability<100 then
Inc (shootsProbability);
if currentsprites<maxsprites then
Inc(currentsprites);
if currentBottom<maxy-10-4*height then
Inc(currentBottom,10);
currentshoots:=50;
Delay(1000);{Пауза перед след. уровнем}
Inc(Level);
goto 10;
end;
shootMovies;
if not InGame then begin
Help ('sorry, you''re dead');
end;
Timefunctions;
until keypressed;
ch:=readkey;
case ch of
SPACE:
if not DieMe and InGame then shoot;
#0: begin
ch:=readkey;
case ch of
F1: Help
('Sorry, there''s no help here :-)');
LEFT: if not DieMe and InGame
then GoLeft;
RIGHT: if not DieMe and InGame
then GoRight;
UP: if not DieMe and InGame
then shoot;
end;
end;
end;
until ch=ESC;
closeAll;
end.
Приложение 5
Расширенные коды клавиатуры
Нажатие клавиши преобразуется в двухбайтовый код, называемый скан-ASCII-кодом. Этот код помещается в буфер клавиатуры, откуда ваша программа может считать его с помощью прерывания системы BIOS. Старший байт двухбайтового кода называется скан-кодом и является отображением фактически нажатой клавиши. Скан-код не отражает состояние клавиш Shift, Ctrl или Alt и не является уникальным. Помимо скан-кодов нажатия, существуют коды отпускания клавиш, отличающиеся на шестнадцатеричное значение 80 в сторону увеличения. Младший байт полного кода, называемый ASCII-кодом, также не является уникальным, но полная комбинация скан и ASCII-кода уникальна. Некоторые клавиши не имеют ASCII-кода и вместо него возвращается ноль. Такие двухбайтовые коды называются расширенными. При приеме кода нажатой клавиши через DOS последняя отделяет от общего значения скан-код. Кроме того, работающий в системе русификатор может дополнительно транслировать скан-коды буквенных клавиш в ASCII-коды русских букв.
Исходя из сказанного, при использовании стандартной функции readkey, работающей с ASCII-кодами клавиш, в общем случае является правильной следующая схема обработки на Паскале:
ch := readkey; {Чтение символа в байт ch}
if ch = #0 then begin
{Если нет ASCII-кода, прочитать
дополнительно расширенный код}
ch := readkey;
{Обработка расширенного кода}
end
else
{Обработка ASCII-кода}
На Паскале десятичный код может быть записан в виде #N, где N - число, например, #65 ('A' латинская). ASCII-коды основных печатных символов можно узнать из Приложения 1, остальные нужные коды приводятся в табл. П5, П6.
Таблица П5 - ASCII-коды некоторых клавиш
Enter |
13 |
Пробел |
32 |
|
Esc |
27 |
BackSpace |
8 |
|
Tab |
9 |
Таблица П6 - Расширенные коды некоторых клавиш
Клавиша |
Код |
Код с Shift |
Код с Ctrl |
Код с Alt |
|
F1 |
59 |
84 |
94 |
104 |
|
F2 |
60 |
85 |
95 |
105 |
|
F3 |
61 |
86 |
96 |
106 |
|
F4 |
62 |
87 |
97 |
107 |
|
F5 |
63 |
88 |
98 |
108 |
|
F6 |
64 |
89 |
99 |
109 |
|
F7 |
65 |
90 |
100 |
110 |
|
F8 |
66 |
91 |
101 |
111 |
|
F9 |
67 |
92 |
102 |
112 |
|
F10 |
68 |
93 |
103 |
113 |
|
Стрелка вверх |
72 |
||||
Стрелка вниз |
80 |
||||
Стрелка влево |
75 |
||||
Стрелка вправо |
77 |
||||
Insert |
82 |
||||
Delete |
83 |
||||
Home |
71 |
119 |
|||
End |
79 |
117 |
|||
Page Up |
73 |
132 |
|||
Page Down |
81 |
118 |
Приложение 6
Правила хорошего кода
Написание красивого и эффективного программного кода - целое искусство, во многом, увы, подзабытое в связи со взрывным ростом мощности вычислительных устройств, вызвавшим снижение требований к качеству алгоритмов. Это небольшое приложение не может заменить изучения специализированных дисциплин вроде "Технологии программирования" или "Теории алгоритмов и формальных языков", но следование изложенным здесь принципам позволит начинающему программисту привыкать не просто "решать задачи", а делать это возможно более красивым и экономичным с точки зрения вычислительных затрат способом.
1. Структурируйте и выравнивайте код, по крайней мере, так, как сказано в гл. 5. Во всем пособии я тоже форматировал листинги в привычном для себя стиле. Лучше привыкнуть структурировать текст, сдвигая любые вложения и разветвления кода одним-двумя пробелами вправо. Программа при этом не "разъедется" далеко вправо на сложных блоках, а вид текста, открытого в любом редакторе, не будет зависеть от размера отступа табуляции.
2. Давайте переменным осмысленные имена. Переменная с именем Length, или, в крайнем случае, Dlina, сама напомнит о своем назначении, в отличие от L. С другой стороны, не возбраняется использовать стандартные сокращения - например, S для площади, P для периметра, a, b и c - для сторон треугольника. Любые индексы естественно выглядят с именами i, j, k и т. д. Но если индекс обозначает номер месяца в году, куда естественней назвать его month, чем i. Хотя Паскаль и не различает регистр букв в именах переменных и служебных словах - соблюдайте его везде. Большинство профессиональных языков регистр символов различают.
3. Существует множество соглашений об именах переменных - можно спорить об их достоинствах и недостатках, но бесспорно одно - соблюдение единообразного стиля именования намного облегчает понимание и модификацию программы. В сложных проектах осмысленных имен переменных может оказаться недостаточно, тогда на помощь придут префиксы. Так, если все имена всех переменных, относящихся к таблице "Студенты", начинаются на st_, а все динамические указатели имеют в имени префикс ptr_ (от англ. "pointer" - указатель), читать такую программу будет намного проще.
4. Создавая любую переменную, обратите внимание на следующие моменты:
какой тип значений может принимать переменная, нельзя ли заменить ее перечислением, множеством или иным "сокращенным" типом данных?
есть ли ограничения на допустимые значения, если да, где и как они будут учтены?
что произойдет при переполнении значения или попытке дать переменной недопустимое значение?
5. Закрывайте блоки сразу. Такой блок, как
if условие then begin
end
else begin
end;
или
while условие do begin
end;
пишется сразу, а только потом ветвь алгоритма или тело цикла наполняются содержимым. Это поможет не запутаться в сложном коде и облегчит соблюдение следующего принципа.
6. Не оставляйте неработающее приложение "на завтра". Блочно-модульная структура программы позволяет всегда избежать этого. Подпрограмма может быть пустой "заглушкой", вы можете использовать ничего не делающие условия, пустые блоки, комментарии, но текущий код должен компилироваться, если завтра вы не хотите половину рабочего дня затратить на восстановление в памяти недоделанного сегодня.
7. Доводите программу до отсутствия предупреждений компилятора, а не только ошибок. Неизвестно, как скажутся на самом деле эти "невинные" напоминания. В языке Си конструкция вида if a:=0 допустима и вызовет лишь предупреждение "Possibly incorrect assignment" - хотя в результате переменная a всегда будет получать значение 0 и ветвь алгоритма, привязанная к этому условию, будет всегда выполняться.
8. Выбирайте более короткие типы данных там, где это уместно: часто byte может заменить word или integer, а string[20] - просто string.
9. Применяйте возможно более эффективный алгоритм решения - прежде всего, оценка эффективности связана с зависимостью числа выполняемых операций от размерности данных. Двойной цикл полной обработки всех элементов матрицы прост в изучении, но далеко не всегда является лучшим решением при работе с реальной задачей - ведь трудоемкость этого алгоритма равна n2, где n - размерность матрицы.
10. Выбирайте менее трудоемкие операции. Так, n div k лучше, чем Trunc(n/k), а Inc(i); лучше, чем i:=i+1;. Во всех случаях порядковые операторы и операнды работают быстрее, чем вещественные. Поэтому обходитесь порядковыми данными везде, где это возможно. Особенно избегайте без необходимости деления на вещественные числа.
11. Не забывайте о погрешностях при работе с вещественными числами. Хрестоматийное while x<=2.5 do ... - плохо, если x - вещественный. С другой стороны, while abs(x-2.5)<eps выглядит громоздко и требует лишних вычислений. Лучше всего while x<=2.5+eps, оптимизирующий компилятор все равно преобразует 2.5+eps в константу.
12. Используйте стандартные функции языка, на котором пишете. Мнимая экономия ресурсов, достигнутая написанием собственных подпрограмм нижнего уровня, обернется трудноуловимыми ошибками в больших проектах. После пяти-десяти лет практики это становится ясно каждому программисту, хотя эксперименты с собственными интерфейсами и машинно-ориентированными программами бывают интересны и даже полезны на этапе обучения.
13. Следите за условиями. Если вы проверяете одно и то же условие неоднократно - скорей всего, у вашей программы не в порядке с логикой. Пример из п. 7.7 показывает это наглядно.
14. Не забывайте о взаимоисключающих условиях. Составной условный оператор if ... else if или же case в таких случаях намного лучше набора коротких условных операторов.
15. Зачастую при написании длинных фрагментов кода удобнее обрабатывать ошибки в виде
if ошибка then завершение;
обработка;
чем по схеме
if верно then обработка
else завершение;
Вообще, избегайте else, находящихся строк через 100 после своего if - это затрудняет восприятие даже хорошо структурированной программы.
16. Избегайте в циклах вычислений, не зависящих от их параметров! Выражение вроде sin(Pi/n), помещенное в цикл, где n не меняется, выглядит нелепо. Ведь каждое вычисление синуса (как и других стандартных функций) - это трудоемкое разложение в ряд Фурье, выполняемое машиной.
17. Используйте математику там, где это уместно для сокращения трудоемкости кода и числа сравнений. Проверить, что переменные x и y имеют один знак, можно так:
if (x>0) and (y>0) or (x<0) and (y<0) then ...,
а можно и в виде if (x*y>0) then ....
18. Прекращайте циклы, когда результат уже достигнут. Приоритет средств при этом следующий:
использование циклов repeat-until или while-do вместо for;
операторы break или exit;
в последнюю очередь - goto, и только в случаях, описанных в п. 16.2.
19. Временный "рабочий" массив того же порядка, что создаваемый или прочитанный из файла - почти всегда не лучшее решение. Его использование говорит о том, что задача решается "в лоб" и не оптимальным способом. Допустимым считается использование одномерного рабочего массива при обработке матричных данных - если размерность его не превышает большей из размерностей матрицы.
20. Именуйте размерные константы массивов. Никому не нужны несколько циклов с верхними границами-"близнецами". А что, если размерность обрабатываемых данных придется изменить?
21. Передавайте значения подпрограммам преимущественно по адресу, а не по значению. Для матричных и векторных данных старайтесь делать это всегда. Применение векторных данных имеет приоритет перед матричными.
22. Не делайте подпрограммы зависимыми от глобальных данных. Несоблюдение этого правила существенно уменьшит вероятность повторного использования кода вами или другим разработчиком.
23. Не пишите подпрограмм, возвращающих более одного объекта - скаляра, вектора или матрицы. В крайнем случае, можно отдельным параметром передавать или возвращать размерность векторных данных. Избегайте подпрограмм, которые ничего не возвращают. Разработка сложных подпрограмм облегчается, если их "точка выхода" и возвращаемое значение указаны единственным и последним оператором. Для перехода из тела подпрограммы в точку возврата в этом случае не грешно использовать даже goto:
function Test (a,b:integer):integer;
label end_of_Test;
var error:integer;
begin
error:=0;
if (a<0) or (b<0) then begin
error:=1;
goto end_of_Test;
end;
. . .
end_of_Test:
Test:=error;
end;
24. Нужно приучить себя не только правильно называть переменные и функции, но и выделять все логические части задачи при проектировании иерархии подпрограмм. Например, если функция ищет в наборе данных элемент по какому-то признаку и создает новый в том случае, когда искомый элемент обнаружен, то лучше разделить ее на две - функцию поиска и функцию создания нового узла, которая будет вызываться из первой. Достаточно придерживаться подобных незамысловатых приемов, чтобы повысить сопровождаемость приложения в разы. Если посмотреть на вопрос с другой стороны, не заставляйте одну подпрограмму выполнять несколько функций - она окажется бесполезна с точки зрения повторного использования кода. Так, определение длины ломаной линии можно реализовать одной подпрограммой, но гораздо лучше, если задача разбита на подпрограммы вычисления длины и вычисления расстояния между двумя точками.
25. При работе с динамическими объектами пишите код так, чтобы открытые объекты всегда закрывались, как только они станут не нужны. В идеале порядок закрытия объектов должен быть обратным по отношению к порядку открытия (последний занявший память объект освобождает ее первым). Следует также избегать функций перераспределения ранее выделенной динамической памяти.
26. Проверить логику своей программы легче всего по принципу "Одна правка - одно место в программе". Если при добавлении в меню нового пункта или, еще хуже, простом изменении размерности одномерного массива приходится переписывать несколько удаленных друг от друга фрагментов кода - программа написана плохо.
27. Если написанная вами программа не работает или работает "криво", ошибка лежит на вашей совести, а компьютер с компилятором ни в чем не виноваты. "Отладка", при которой программист хаотически меняет то одно, то другое место в коде и на которую уходит до 90% времени написания, на самом деле - свидетельство не слишком качественной работы. Хорошо написанной программе нужна не столько отладка, сколько тестирование на различных допустимых, недопустимых и "пограничных" наборах данных. Кстати, обдумывание и написание тестов до тестируемого кода способствует и улучшению, и большей устойчивости конечного продукта.
Резюмируя, можно сказать, что все большие программы на свете написаны только за счет одного - правильного структурирования кода. И хороший программист - не тот, кто "знает языки", а тот, кто умеет писать легко читаемый, понимаемый и модифицируемый код, максимально используя стандартные средства языка разработки.
Размещено на Allbest.ru
...Подобные документы
Язык программирования Турбо Паскаль. Запись алгоритма на языке программирования и отладка программы. Правила записи арифметических выражений. Стандартное расширение имени файла, созданного системным редактором. Составной оператор и вложенные условия.
курсовая работа [75,0 K], добавлен 21.03.2013Иерархическая структура производного типа данных в языке Паскаль. Определение массива как упорядоченного набора фиксированного количества некоторых значений. Сортировка одномерных и двумерных массивов методом простых обменов, простым выбором и включением.
курсовая работа [48,8 K], добавлен 27.11.2010Особенности программирования на языке Паскаль в среде Турбо Паскаль. Линейные алгоритмы, процедуры и функции. Структура данных: массивы, строки, записи. Модульное программирование, прямая и косвенная рекурсия. Бинарный поиск, организация списков.
отчет по практике [913,8 K], добавлен 21.07.2012История и основы структурного программирования в среде Turbo Pascal. Работа с различными типами данных. Операторы языка. Работа с символьными и строковыми переменами, одномерным, двумерным массивами. Классификация компьютерных игр. Игры на языке Паскаль.
курсовая работа [28,8 K], добавлен 06.05.2014Логические конструкции в системе программирования Паскаль. Команды языка программирования, использование функций, процедур. Постановка и решение задач механики в среде системы Паскаль. Задачи статики, кинематики, динамики решаемые с помощью языка Паскаль.
курсовая работа [290,9 K], добавлен 05.12.2008Общая характеристика языков программирования. Описание языка Паскаль: основные субъекты языка; структура Паскаль-программы; типизация и объявление данных. Операторы присваивания и выражения. Структурные операторы, организация ветвлений и циклов.
дипломная работа [276,6 K], добавлен 26.01.2011Сравнительный анализ языков программирования высокого уровня Си и Паскаль. Реализация алгоритма обработки данных. Тестирование и отладка программы или пакета программ. Структура программы на языке Турбо Паскаль. Указатели и векторные типы данных.
курсовая работа [233,5 K], добавлен 14.12.2012Изучение символьных и строковых типов данных, алгоритма задачи на языке программирования Паскаль. Описания получения и установки отдельного символа строки, изменения регистра символов. Анализ создания и просмотра файла, поиска и сортировки информации.
курсовая работа [440,7 K], добавлен 13.06.2011Совместимость и преобразование типов данных. Создание информационно-поисковой системы на языке программирования Паскаль. Описание интерфейса, каждого блока программы "Картотека больных". Рассмотрение результатов работы программы, сортирования данных.
курсовая работа [368,9 K], добавлен 18.05.2015Изучение основных конструкций и способов написания программ на языке Паскаль. Обзор принципов работы и интерфейса написанной программы. Обработка и модификация двумерных массивов. Файловые структуры данных. Текстовые файлы. Элементы машинной графики.
курсовая работа [761,7 K], добавлен 11.03.2015Приобретение теоретических и практических навыков программирования на языке Паскаль. Математическая формулировка задачи и выбор метода обработки информации. Разработка алгоритма и его описание. Описание программы. Форма представления исходных данных.
курсовая работа [224,3 K], добавлен 11.02.2016Основные сведения о системе программирования Турбо Паскаль. Структура программы на Паскале и ее компоненты. Особенности и элементы языка Турбо Паскаль. Порядок выполнения операций в арифметическом выражении, стандартные функции и оператор присваивания.
лекция [55,7 K], добавлен 21.05.2009Рассмотрение общих сведений и уровней языков программирования. Ознакомление с историей развития, использования языков программирования. Обзор достоинств и недостатков таких языков как Ассемблер, Паскаль, Си, Си++, Фортран, Кобол, Бейсик, SQL, HTML, Java.
курсовая работа [759,5 K], добавлен 04.11.2014Выбор метода проектирования транслятора с языка Паскаль на язык Си, разработка и кодирование алгоритма программы. Использование допустимых операторов в исходном тексте, определение типов переменных и синтаксиса логических и арифметических выражений.
курсовая работа [1,0 M], добавлен 03.07.2011Основы создания фрактальных композиций при помощи среды программирования Паскаль. Сущность и основа фрактальной графики. Графические возможности и операторы для рисования геометрических фигур в среде Паскаль. Примеры обозначения цветов на языке Паскаль.
лабораторная работа [15,7 K], добавлен 12.06.2010Понятие программы и ее основные составляющие. Операторы ввода и вывода. Разветвляющиеся алгоритмы. Цикл как многократное выполнение одинаковых действий. Особенности использования оператора выбора. Графики функций и системы координат. Рекурсия и анимация.
презентация [663,7 K], добавлен 24.12.2010Изучение организации диалоговой программы и закрепления основных элементов программирования на языке Паскаль и Си (Delphi, C++ Builder). Описание представления информации в программах на языках высокого уровня. Сравнительная характеристика Delphi и C++.
курсовая работа [3,1 M], добавлен 27.02.2015Алгоритмы и алфавит языка Турбо Паскаль. Основные типы данных. Операторы присваивания, перехода и выбора. Понятие массива в Паскале. Особенности работы со строками в программе. Использование линейного поиска и поиска с барьером. Основные виды сортировок.
учебное пособие [53,2 K], добавлен 09.11.2009Создание транслятора, обрабатывающего код программы на языке Паскаль и за счет эквивалентных операторов генерирующего программу на Си. Особенности внешней спецификации и работы лексического анализатора. Структура программы, вывод результатов на экран.
курсовая работа [254,0 K], добавлен 02.07.2011Расчет на устойчивость в системе программирования Турбо Паскаль. Определение критического напряжения стержня по формуле Ясинского, предельной гибкости в зависимости от материала. Программирование алгоритма расчета. Порядок ввода исходных данных.
курсовая работа [1,0 M], добавлен 27.04.2013