ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 09.01.2024
Просмотров: 96
Скачиваний: 1
СОДЕРЖАНИЕ
Алгоритм – это последовательность понятных предписаний исполните-лю, приводящая к решению задачи.
Формальный исполнитель – исполнитель, не выходящий за пределы предписаний алгоритма.
Этапы решения задач на компьютере
Тело брошено вертикально вверх с начальной скоростью с некоторой высоты.
Определить его местонахождение и скорость в заданный момент времени.
g – ускорение свободного падения (g=9,81 м/с2)
Надо: V – скорость в данный момент времени
H – высоту в данный момент времени
II этап Создание математической модели
III этап Создание алгоритма решения и способа записи (блок-схема)
Языки программирования и их классификация
Язык программирования – формализованный язык для описания алгоритма решения задачи на компьютере.
Разновидности транслятора – компилятор и интерпретатор.
Program pr_1;{заголовок программы}
Uses Crt; {модуль подключения очистки экрана}
Var V0, H0, t, g, V, H: real; {раздел описания переменных}
Write(‘введите начальные скорость,
Выражения записываются в одну строку, без надстрочных и подстрочных записей.
Составные типы по определенным правилам строятся из простых.
<переменная>:=<переменная>|<константа>|<выражение>
a:=b; {переменной a присвоить значение переменной b}
Рекомендуется оператор ввода использовать в сочетании с оператором вывода
Тип «массив» относится к группе структурных (составных) типов.
Массив описывается в разделе var с использованием конструкции:
array [n..m] of type; где вместо type должен быть указан общий для всех элементов тип.
mouths : array [1..12] of byte;
Ссылка на 4-ый элемент массива имеет вид: mouths[4]
Возможности модуля GraphABC – анимация без мерцания
Действия с точками и прямоугольниками
SetPixel(x,y,color: integer); Закрашивает один пиксел с координатами (x,y) цветом color.
Рисует отрезок с началом в точке (x1,y1) и концом в точке (x2,y2).
Рисует окружность с центром в точке (x,y) и радиусом r.
Ellipse(x1,y1,x2,y2: integer);
Rectangle(x1,y1,x2,y2: integer);
Рисует прямоугольник, заданный координатами противоположных вершин (x1,y1) и (x2,y2).
RoundRect(x1,y1,x2,y2,w,h: integer);
Стандартные цвета задаются символическими константами:
Writeln(‘Сумма 50 натуральных чисел равна’,S);
End.
Пример 3: Вычислить 5! (произведение первых 5 натуральных чисел).
Пример 4: Вычислить значение выражения:
Операторы цикла
2. Оператор цикла с предусловием
WHILE <условие> DO <тело цикла>;
Тело цикла – группа операторов, выполнение которых необходимо выполнить пока выполняется условие .
ПОКА условие выполняется ВЫПОЛНИТЬ <тело цикла>;
условие
Тело цикла
Блок-схема оператора цикла с предусловием
Пример 1: вывести на экран 2005 раз фразу «С Новым Годом!»
Program pr_3_1;
Uses Crt;
Var n : integer;
Begin
Clrscr;
n:=1;
While n<=2005 Do
Begin
Writeln(‘С Новым Годом!’);
n:=n+1;
End;
End.
да
нет
Операторы цикла
3. Оператор цикла с постусловием
REPEAT <тело цикла> UNTIL <условие>
Тело цикла – группа операторов, выполнение которых необходимо выполнить пока не выполнится условие.
ПОВТОРИТЬ <тело цикла> ДО выполнения условия
условие
Тело цикла
Блок-схема оператора цикла с постусловием
Пример 1: вывести на экран 2005 раз фразу «С Новым Годом!»
Program pr_3_2;
Uses Crt;
Var n : integer;
Begin
Clrscr;
n:=1;
Repeat
Writeln(‘С Новым Годом!’);
n:=n+1;
Until n>2005 ;
End.
да
нет
Пример 2: Вычислить сумму натуральных чисел от 1 до 50.
Определим переменные:
i – переменная, являющаяся счетчиком (номером) очередного натурального числа,
Summ – сумма, которая вычисляется по закону РЕКУРСИИ. (Summ:=Summ+ очередное слагаемое).
Program pr_4_1;
Var i, Summ : integer;
Begin Summ:=0; i:=1;
While i<=50 Do {начало цикла} Begin Summ:=Summ+i; i:=i+1;
End; {конец цикла}
Writeln(‘Сумма 50 натуральных чисел равна’,Summ);
End.
Program pr_4_2;
Var i, Summ : integer;
Begin Summ:=0; i:=1;
Repeat {начало цикла} Summ:=Summ+i; i:=i+1;
Until i>50; {конец цикла}
Writeln(‘Сумма 50 натуральных чисел равна’,Summ);
End.
Массив
Понятие массива
Понятие массива
Массив представляет собой набор однотипных данных, имеющих общее для всех своих элементов (членов) имя.
Тип «массив» относится к группе структурных (составных) типов.
Элементы массива пронумерованы, и обратиться к каждому из них можно, указав один или несколько индексов. Если речь идет о хранении в массиве таблицы значений, его элементы нумеруются двумя индексами.
Характеристики массива:
- Тип – общий тип элементов массива;
- Размерность (ранг) – количество индексов массива
- Диапазон – количество допустимых значений каждого индекса;
- Форма – совокупность размерности и диапазонов.
Примеры массивов
- Числовые последовательности: a1, a2, a3, … , an 3, 7, 11, 15 – арифмет.прогрессия
- Список учащихся класса
- Алексеев
- Бутов
- Васильев
Примеры массивов
- Табличные данные
1 | 2 | 3 | |
1 | 10 | 20 | 30 |
2 | 20 | 40 | 60 |
3 | 30 | 60 | 90 |
Описание массива
Массив описывается в разделе var с использованием конструкции:
array [n..m] of type; где вместо type должен быть указан общий для всех элементов тип.
Пример описания массива var
mouths : array [1..12] of byte;
В данном случае резервируется память под 12 байтов, являющихся элементами массива mouths. В квадратных скобках указывается диапазон допустимых значений индекса (номера), в нашем примере это 1 .. 12 – упорядоченный набор из двенадцати натуральных чисел 1, 2, 3, … 12.Ссылка на 4-ый элемент массива имеет вид: mouths[4]
Одномерные массивы
Напишем программу, которая объявляет целочисленный массив, состоящий из 5 элементов, вводит с клавиатуры значение каждого элемента, выводит значения всех элементов на экран, вычисляет и выводит на экран сумму всех элементов.program massiv;
uses crt;
var
a:array [1..5] of integer;
i,k,s:integer;
begin
clrscr;
for i:=1 to 5 do
begin
write(‘Введите ',i,'-й член массива ');
readln (a[i]);
end;
writeln;
s:=0;
for i:=1 to 5 do
begin
writeln('a[',i,']= ',a[i]);
s:=s+a[i];
end;
writeln;
writeln (‘Сумма всех членов массива = ',s);
readln;
end.
Объявляется массив из 5 элементов-целых чисел
Вводится с клавиатуры значение каждого из 5-ти элеменов
Выводится на экран каждый элемент и суммируется
program Min_element; uses crt; var c:array [1..10] of integer; i,n,min:integer; begin clrscr; randomize; a:=100; b:=300; for i:=1 to 10 do begin c[i]:=(b-a)*random+a; Writeln('c[',i,']=',c[i]:5); end; min:=c[1]; n:=1; for i:=1 to 10 do if min>c[i] then begin min:=c[i]; n:=i; end; writeln(‘Минимальный элемент ’,min:5,’ его номер ’,n:5); readln; end. | Задаются значения a и b, границы интервала случайных чисел Вычисляются и выводятся случайные числа Пусть минимальным будет ПЕРВЫЙ с номером ОДИН Если минимальный элемент > очередного, то меняем его и его номер Выводим значение минимального элемента и его номер |
Нахождения наименьшего элемента массива
program sortirovka; uses crt; const n=10; var h:array[1..n] of integer; c,min, n_min,s,k,i,j:integer; sr:real; begin clrscr; for i:=1 to n do h[i]:=random(10000); writeln ‘(Исходный случайный массив'); for i:=1 to n do writeln ('h[',i,']=',h[i]); for i:=1 to n do begin min:=h[i]; n_min:=i; for j:=i to n do if min>h[j] then begin min:=h[j]; n_min:=j; end; c:=h[i];h[i]:=h[n_min];h[n_min]:=c; end; writeln (‘Упорядоченный массив'); for i:=1 to n do writeln ('h[',i,']=',h[i]); end. | Задается случайный массив в диапазоне чисел до 1000 Выводится исходный случайный массив Задается первоначальное зн-е min –го эл-та подмассива Нахождение min –го эл-та подмассива Рокировка Выводится упорядоченный случайный массив |
Упорядочивание элементов массива по возрастанию медодом нахождения наименьшего элемента
Графические возможности
- Модуль CRT – текстово-графические возможности. Расширен по сравнению с модулем CRT Turbo Pascal.
- Модуль GraphABC – основной модуль работы с графикой. Классы не используются.
- Модуль ABCObjects – векторная графика. Иерархия графических классов с возможностью масштабирования, клонирования, группировки, наложения объектов. Обучение объектно-ориентированному программированию на ранних этапах. Использование объектов для конструирования в достаточно сложных проектах.
- Модуль Sprites – спрайты, создание интерактивных “живых” приложений: игры, обучающие программы.
Возможности модуля GraphABC – анимация без мерцания
uses GraphABC;
var i: integer;
begin
LockDrawing;
for i:=1 to 500 do
begin
ClearWindow;
SetBrushColor(clGreen);
Ellipse(i,100,i+100,200);
Redraw;
end;
end.
Модуль GraphABC
Модуль GraphABC содержит константы, типы, процедуры и функции для рисования в графическом окне. Они подразделяются на следующие группы:
Графические примитивы
Действия с цветом
Действия с точками и прямоугольниками
Действия с пером
Действия с кистью
Действия со шрифтом
Графические примитивы
SetPixel(x,y,color: integer); Закрашивает один пиксел с координатами (x,y) цветом color.
MoveTo(x,y: integer);
Передвигает невидимое перо к точке с координатами (x,y); эта функция работает в паре с функцией LineTo(x,y).
LineTo(x,y: integer);
Рисует отрезок от текущего положения пера до точки (x,y); координаты пера при этом также становятся равными (x,y).
Графические примитивы
Line(x1,y1,x2,y2: integer);
Рисует отрезок с началом в точке (x1,y1) и концом в точке (x2,y2).
Circle(x,y,r: integer);
Рисует окружность с центром в точке (x,y) и радиусом r.
Ellipse(x1,y1,x2,y2: integer);
Рисует эллипс, заданный своим описанным прямоугольником с координатами противоположных вершин (x1,y1) и (x2,y2).
x1,y1
x2,y2
x,y
r
x1,y1
x2,y2
Графические примитивы
Rectangle(x1,y1,x2,y2: integer);
Рисует прямоугольник, заданный координатами противоположных вершин (x1,y1) и (x2,y2).
RoundRect(x1,y1,x2,y2,w,h: integer);
Рисует прямоугольник со скругленными краями; (x1,y1) и (x2,y2) задают пару противоположных вершин, а w и h – ширину и высоту эллипса, используемого для скругления краев.
x1,y1
x2,y2
x1,y1
x2,y2
Графические примитивы
Arc(x,y,r,a1,a2: integer);
Рисует дугу окружности с центром в точке (x,y) и радиусом r, заключенной между двумя лучами, образующими углы a1 и a2 с осью OX (a1 и a2 – вещественные, задаются в градусах и отсчитываются против часовой стрелки).
Pie(x,y,r,a1,a2: integer);
Рисует сектор окружности, ограниченный дугой (параметры процедуры имеют тот же смысл, что и в процедуре Arc).
Chord(x,y,r,a1,a2: integer);
Рисует фигуру, ограниченную дугой окружности и отрезком, соединяющим ее концы (параметры процедуры имеют тот же смысл, что и в процедуре Arc).
x,y
r
a1
a2
x,y
r
a1
a2
x,y
r
a1
a2
Стандартные цвета задаются символическими константами:
clBlack – черный clPurple – фиолетовый clWhite – белый clMaroon – темно-красный clRed – красный clNavy – темно-синий clGreen – зеленый clBrown – коричневый clBlue – синий clSkyBlue – голубой clYellow – желтый clCream – кремовый
clAqua – бирюзовый clOlive – оливковый clFuchsia – сиреневый clTeal – сине-зеленый clGray – темно-серый clLime – ярко-зеленый clMoneyGreen – цвет зеленых денег clLtGray – светло-серый clDkGray – темно-серый clMedGray – серый clSilver – серебряный
Действия с пером
SetPenColor(color: integer);
Устанавливает цвет пера, задаваемый параметром color.
SetPenWidth(w: integer);
Устанавливает ширину пера, равную w пикселам.
SetPenStyle(ps: integer);
Устанавливает стиль пера, задаваемый параметром ps.
Стили пера задаются следующими именованными константами:
psSolid
psClear
psDash
psDot
psDashDot
psDashDotDot
Действия с кистью
SetBrushColor(color: integer);
Устанавливает цвет кисти, задаваемый параметром color.
SetBrushStyle(bs: integer);
Устанавливает стиль кисти, задаваемый параметром bs.
bsSolid bsCross
bsClear bsDiagCross
bsHorizontal bsBDiagonal
bsVertical bsFDiagonal
Вставка текста
TextOut(x,y: integer; s: string);
Выводит строку s в позицию (x,y) (точка (x,y) задает верхний левый угол прямоугольника, который будет содержать текст из строки s).
Например:
TextOut(100,200,’Текст’);
Действия со шрифтом
SetFontColor(color: integer);
Устанавливает цвет шрифта.
SetFontSize(sz: integer);
Устанавливает размер шрифта в пунктах.
SetFontName(name: string);
Устанавливает наименование шрифта.
SetFontStyle(fs: integer);
Устанавливает стиль шрифта.
fsNormal – обычный;
fsBold – жирный;
fsItalic – наклонный;
fsBoldItalic – жирный наклонный;
fsUnderline – подчеркнутый;
fsBoldUnderline – жирный подчеркнутый;
fsItalicUnderline – наклонный подчеркнутый;
fsBoldItalicUnderline – жирный наклонный подчеркнутый.
Стили шрифта задаются следующими именованными константами:
Модуль ABCObjects – основные классы
- RectangleABC
- SquareABC
- TextABC
- EllipseABC
- CircleABC
- RegularPolygonABC
- StarABC
- PictureABC
- ChessBoardABC
- ChessFigureABC
- ContainerABC