title: Презентация на тему: Язык Паскаль. Лекция 6 - Одномерные массивы

text:
Лекция №6
Одномерные массивы
План лекции
Понятие одномерного статического массива
Ввод – вывод элементов массива
Заполнение массива случайными числами
Нахождение суммы элементов
Объявление массивов с использованием раздела описания типов
Суммирование двух массивов
Определение числа элементов, удовлетворяющих некоторому условию
Нахождение индексов элементов с заданным свойством
Объединение двух массивов в один
Поиск максимального и минимального элементов массива
Удаление элементов массива
Включение элементов в массив
Перестановка элементов массива
Инвертирование массива
Формирование массива из элементов других массивов
Циклический сдвиг элементов массива

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

Описание массива:

<идентификатор>: array [<диапазон индексов>] of <тип элементов>;

Пример объявления массива

Пример объявления массива 10-ти целых чисел.

	Var
			a : array [1..10] of integer;
индекс
элемент
Ввод – вывод элементов массива
Ввод элементов с клавиатуры и вывод элементов.
Так как необходимо ввести определенное число элементов, то алгоритмическая структура программы будет циклической. В цикле, управляющей переменной будет являться значение i - индекс элемента массива, для вывода элементов так же будет использован цикл.

Ввод – вывод элементов массива
Var
	a : array [1..10] of integer;
	i : integer;
Begin
writeln (‘ Заполнение элементов целочисленного массива A[10] ‘);
for i:=1 to 10 do
	begin
	write (‘a[‘, i , ‘] =‘);
	read (a[ i ]);
	end;
writeln (‘В памяти компьютера сформирован массив с элементами’);
for i:=1 to 10 do
	write (a[ i ]:6);
End.

начало

Ai
A[10]

конец

Ai
Генерация случайных чисел
random(n) – функция генерации случайного числа в диапазоне от 0 до n-1.

Примеры :
x:=random(11);
у:=random (101)-50;
z:=random (51)-100;
k:=random(21)+80;

randomize – функция позволяющая генерировать случайные числа различными при каждом запуске программы.

Ввод – вывод элементов массива
Генерация элементов массива случайными числами.

Var
	a : array [1..15] of integer;
	i : integer;
Begin
randomize;
writeln (‘Элементы целочисленного массива A[15] сформированные случайными числами диапазона от -100 до 100.‘);
for i:=1 to 15 do
	begin
	a[ i ]:=random(201)-100;
	write (a[ i ]:6);
	end
End.

начало

Ai
A[15]

конец
Нахождение суммы элементов массива
Для получения суммы элементов одномерного статического массива необходимо подготовить ячейку для накопления в нее суммы, предварительно обнулить ее значение. После чего, перебирая в цикле все элементы массива, увеличивать ее значение на величину значения каждого i-го элемента.

Нахождение суммы элементов массива
Var
	a : array [1..20] of integer;
	s, i : integer;
Begin
writeln (‘ Заполнение элементов целочисленного массива A[20] ‘);
for i:=1 to 20 do
	begin
	write (‘a[‘, i , ‘] =‘);
	read (a[ i ]);
	end;
s:=0;
for i:=1 to 20 do
	s:=s+a[ i ];
writeln (‘s=‘,s)
End.

начало

Ai
A[20]

конец

s
s=0
Объявление массивов с использованием раздела описания типов
Пример объявления массива :
Var
		a : array [1..50] of real;
		b,c : array [1..20] of integer;
…
Аналогичное описание массивов с использованием раздела описания типов:
Type
	mas1=array[1..50] of real;
	mas2=array[1..20] of integer;
Var
	a : mas1;
	b,c : mas2;
…

Суммирование двух одномерных массивов
Данный алгоритм подразумевает формирование элементов массива по заданным элементам двух массивов, где каждое очередное значение получаемого массива равно сумме соответствующих элементов заданных массивов по индексом получаемого элемента. Т.е. c[i]=a[i]+b[i].

Суммирование двух одномерных массивов

Type
	massiv=array[1..10] of integer;
Var
	a , b, c: massiv;
	i : integer;
Begin
randomize;
writeln (‘ Массив A ‘);
for i:=1 to 10 do
	begin
	a[ i ]:=random(51);
	write (a[ i ]:5);
	end;

начало

Ai, Bi
a[10], b[10], c[10]

конец

Ci
writeln (‘ Массив B ‘);
for i:=1 to 10 do
	begin
	b[ i ]:=random(151)-70;
	write (b[ i ]:5);
	end;
for i:=1 to 10 do
	c[ i ]:=a[ i ]+b[ i ];
writeln (‘ Массив C ‘);
for i:=1 to 10 do
	 write (c[ i ]:6);
End.

Изменение значений некоторых элементов массива
Рассмотрим задачу замены отрицательных элементов на противоположные по знаку.

Изменение значений некоторых элементов массива
Const
	n=20;
Var
	a : array [1..n] of integer;
	 i : integer;
Begin
writeln (‘ Заполнение элементов целочисленного массива A[‘,n,’] ‘);
for i:=1 to n do
	begin
	write (‘a[‘, i , ‘] =‘);
	read (a[ i ]);
	end;
for i:=1 to n do
	if a[ i ]<0 then
		a[ i ]:=-a[ i ];
wreteln (‘Массив A с замененными отрицательными эл-ми’);
for i:=1 to n do
	write (a[ i ]:5)
End.

начало

Ai

a[20]
конец

    i=1;20

a[ i ]<0

a[ i ]=-a[ i ]

+
-

Ai
Определение числа элементов, удовлетворяющих заданному условию
Для решения такой задачи необходимо задать условие и в цикле перебирая все элементы массива, в случае выполнения данного условия увеличивать значение некоторой переменной k на единицу. До цикла перебора всех элементов, необходимо значение k обнулить. Решим задачу для определения в массиве количества элементов меньших заданного числа Т.

Определение числа элементов, удовлетворяющих заданному условию

Type
	massiv=array[1..20] of real;
Var
	a : massiv;
	t : real;
	k,i : integer;
Begin
writeln (‘ Введите элементы
массива A ‘);
for i:=1 to 20 do
	begin
	write (‘a[‘, i , ‘] =‘);
	read (a[ i ]);
	end;

начало

Ai

a[20]
конец

k

    i=1;10

a[ i ]<t

writeln (‘ Введите T‘);
read (t);
k:=0;
for i:=1 to 20 do
	if a[ i ]<t then
		inc(k);
writeln (‘k=‘,k)
End.

t
k=k+1

+
-
k=0
Нахождение индексов элементов с заданным свойством
Рассмотрим задачу Нахождения  и вывода на экран номеров (индексов) четных элементов.
Для решения задачи необходимо просмотреть весь массив, и если просматриваемый элемент является четным, то выводить его индекс.

Нахождение индексов элементов с заданным свойством
Сonst
	n=10;
Type
	massiv=array[1..n] of integer;
Var
	a : massiv;
	i: integer;
Begin
writeln (‘ Введите элементы
массива A ‘);
for i:=1 to n do
	begin
	write (‘a[‘, i , ‘] =‘);
	read (a[ i ]);
	end;
for i:=1 to n do
	if a[ i ] mod 2=0 then
		write (i:4);
End.

начало

Ai

a[10]
конец
    i=1;10

i

+
-
a[ i ] mod 2=0

Объединение двух массивов в один
Задачи по объединению массивов в один имеют различные способы решения. Общим является то, что при формировании элементов объединяемого массива, его значения индексов не будут совпадать со значениями индексов массивов, используемых для объединения.  Поэтому основной и главной задачей становится описание закономерности формирования объединенного массива. Например, требуется получить массив С включая элементы массива А и B  чередованием : a1;b1;a2;b2……

Объединение двух массивов в один

Type
	mas1=array[1..10] of integer;
	mas2=array[1..20] of integer;
Var
	a, b : mas1;
	c : mas2;
	i : integer;
Begin
randomize;
writeln (‘ Массив A ‘);
for i:=1 to 10 do
	begin
	a[ i ]:=random(51);
	write (a[ i ]:5);
	end;

начало

Ai, Bi

a[10],b[10],c[20]
конец

    i=1;20

writeln (‘ Массив B ‘);
for i:=1 to 10 do
	begin
	b[ i ]:=random(151)-70;
	write (b[ i ]:5);
	end;
for i:=1 to 20 do
       if  i mod 2=0 then
	c[ i ]:=b[i/2];
       else
	c[ i ]:=a[i div 2];
writeln (‘ Массив C ‘);
for i:=1 to 20 do
	 write (c[ i ]:6)
End.

c[i]=b[i/2]

+
-

c[i]=a[i div 2]
 i  mod 2=0

Ci

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

Поиск минимального элемента одномерного массива
Type
	mas=array[1..20] of integer;
Var
	a : mas;
	min, i : integer;
Begin
randomize;
writeln (‘ Массив  ‘);
for i:=1 to 10 do
	begin
	a[ i ]:=random(101)-50;
	write (a[ i ]:6);
	end;
min:=a[1];
for i:=2 to 20 do
       if  a[ i ] < min then
	          min:=a[ i ];
writeln (min)
End.

начало

Ai

a[20]
конец

    i=2;20

A[ i ]<min

min=a[ i ]

+
-

min

min=a[1]
Удаление элементов массива
Удалить элемент в статическом массиве - невозможно. Поэтому используют перемещение всех элементов, начиная с "удаляемого", записывая на их место следующие (i+1) элементы. Вводят так же переменную, которая обозначает индекс последнего элемента и  при каждом шаге удаления элемента ее уменьшают на 1. Рассмотрим задачу на удаление всех отрицательных элементов массива.

Удаление элементов массива

Type
	mass=array[1..20] of real;
Var
	a: mass;
	i, j, m : integer;
Begin
randomize;
writeln (‘ Массив A ‘);
for i:=1 to 20 do
	begin
	a[ i ]:=(random(201)-80)/(random(100)+1);
	write (a[ i ]:6:2);
	end;
m:=20;
for i:=1 to 20 do
	begin
	if a[ i ]<0 then

	begin
	for j:=i to 20 do
		a[ j ]=a[ j+1 ];
	dec(m)
	end;
	if a[ i ]<0 then
		dec(i)
       end;
writeln (‘ Массив A без отрицательных
элементов ‘);
for i:=1 to m do
	 write (a[ i ]:6:2)
End.

Включение элементов массива
Включить элемент в статический массив так же невозможно. Поэтому изначально размер массива должен быть больше на количество предполагаемых элементов для включения в массив. При включении элемента следует в цикле перебирать элементы от последнего элемента до индекса, куда будет включен элемент и переписывать значения текущего (i-го) элемента на место последующего (i+1). Следует так же ввести переменную для хранения индекса последнего элемента, которую при каждом включении увеличивают на 1. Рассмотрим задачу на включение значения T в массив, которое должно располагаться за максимальным элементом массива.

Включение элементов массива

Type
	mass=array[1..21] of real;
Var
	a: mass;
	i, j , i_max : integer;
	t, max : real;
Begin
randomize;
writeln (‘ Массив A ‘);
for i:=1 to 20 do
	begin
	a[ i ]:=(random(201)-80)/(random(100)+1);
	write (a[ i ]:6:2);
	end;
readln (t);
max:=a[1];
i_max:=1;
for i:=2 to 20 do
	if a[ i ]>max then

	begin
	max:=a[ i ];
	i_max:=i
	end;
for j:=21 downto i_max-1 do
	a[ j ]=a[ j-1 ];
a[i_max]=t;
writeln (‘ Массив A c включенным
элементом t ‘);
for i:=1 to 21 do
	 write (a[ i ]:6:2)
End.

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

tmp:=a;

a:=b;

b:=tmp;
Перестановка элементов массива
Рассмотрим задачу обмена максимального и минимального элементов местами.

Перестановка элементов массива
Type
	mass=array[1..20] of real;
Var
	a: mass;
	i , i_max, i_min : integer;
	max,  min,  tmp : real;
Begin
randomize;
writeln (‘ Массив A ‘);
for i:=1 to 20 do
	begin
	a[ i ]:=(random(201)-80)/(random(100)+1);
	write (a[ i ]:6:2);
	end;
max:=a[1];
i_max:=1;
min:=a[1];
i_min:=1;
for i:=2 to 20 do
     begin

	if a[ i ]>max then
	     begin
 	     max:=a[ i ];
	     i_max:=i
	     end;
	if a[ i ]<min then
	     begin
 	     min:=a[ i ];
	     i_min:=i
	     end
    end;
tmp:=a[i_min];
a[i_min]:=a[i_max];
a[i_max]:=tmp;
writeln (‘ Массив A c переставленными
максимальным и минимальным  эл-ми‘);
for i:=1 to 20 do
	 write (a[ i ]:6:2)
End.

Инвертирование массива
Инвертирование массива - это запись его элементов в обратном порядке. Для решения этой задачи можно воспользоваться другим массивом, в который можно записать элементы из данного массива в обратном порядке. Однако целесообразнее сделать это за наименьшее количество перестановок и не использовать дополнительного массива. Как это сделать? Можно двигаться от первого элемента до середины массива и менять местами первый элемент с последним, второй - с предпоследним и т.д. Получается что в цикле будут обмениваться элемент с i-м индексом с элементом у которого индекс равен n-i+1 , где n- индекс последнего элемента.

Инвертирование массива
Var
	a: array [1..20] of real;
	i , n : integer;
	tmp : real;
Begin
randomize;
writeln (‘ Массив A ‘);
n:=20;
for i:=1 to n do
	begin
	a[ i ]:=(random(201)-80)/(random(100)+1);
	write (a[ i ]:6:2);
	end;
for i:=1 to n div 2 do
  begin
	tmp:=a[ i ];
	a[ i ]:=a[ n-i+1 ];
	a[ n-i+1 ]:=tmp;
  end;

writeln (‘ Инвертированный массив A ‘);
for i:=1 to n do
	 write (a[ i ]:6:2)
End.

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

Формирование массива из элементов другого массива
Var
	a,b: array [1..20] of real;
	i , n : integer;
	t : real;
Begin
randomize;
writeln (‘ Массив A ‘);
n:=20;
for i:=1 to n do
	begin
	a[ i ]:=(random(201)-80)/(random(100)+1);
	write (a[ i ]:6:2);
	end;
readln (t);
j:=0;
for i:=1 to n do
  if a[ i ]>t then
		begin
		inc(j);
		b[ j ]:=a[ i ]

	end;
if j=0 then
	writeln (‘Массив B не содержит
		элементов’)
	else
	     begin
		writeln (‘Массив B ‘);
		for i:=1 to j do
	 		write (b[ i ]:6:2)
	     end
End.

Циклический сдвиг элементов массива
Под циклическим сдвигом понимают перемещение элементов "по цепочке". Т.е. при сдвиге элементов вправо элемент находящийся на последнем месте в массиве становится на место первого с последующим сдвигом всех остальных элементов. И наоборот, при циклическом сдвиге влево - первый элемент переходит на место последнего с соответствующим перемещением всех элементов массива. При реализации таких алгоритмов следует помнить, что обход при перемещении циклическим сдвигом вправо начинают от последнего элемента, а при сдвиге влево с первого элемента. Для хранения данных в процессе перемещения элементов можно воспользоваться дополнительным массивом или же просто -  одной "временной" переменной.

Циклический сдвиг элементов массива влево на k позиций
Const
	n=20;
Var
	a: array [1..n] of real;
	i , j,  k : integer;
	tmp: real;
Begin
randomize;
writeln (‘ Массив A ‘);
for i:=1 to n do
	begin
	a[ i ]:=(random(201)-80)/(random(100)+1);
	write (a[ i ]:6:2);
	end;
readln (k);
for i:=1 to k do
begin
tmp:=a[1];

for j:=1 to n-1 do
	  a[ j ]:=a[ j+1 ];
a[n]:=tmp;
end;
writeln (‘Массив А сдвинут цикли-
чески  на k позиций влево‘);
for i:=1 to n do
	write (a[ i ]:6:2)
End.


Презентация на тему: Я и компьютер


title: Презентация на тему: ЯЗЫКИ ПРОГРАММИРОВАНИЯ

text:
Проект выполнили
Алёшин И.В.
Волков А.Н.
Золотарёв С.А.
Учитель информатики
 Малыхин С.А.
Prezentacii.com
Стандартизация языков программирования

 Синтаксис

Семантика

Компилируемые и интерпретируемые языки
          Компилируемые
       Интерпретируемые
Программа на компилируемом языке при помощи специальной программы компилятора преобразуется (компилируется) в набор инструкций для данного типа процессора (машинный код) и далее записывается в исполняемый файл, который может быть запущен на выполнение как отдельная программа. Другими словами, компилятор переводит программу с языка высокого уровня на низкоуровневый язык, понятный процессору.
Интерпретируемые
Интерпретируемые языки обладают некоторыми специфическими дополнительными возможностями (см. выше), кроме того, программы на них можно запускать сразу же после изменения, что облегчает разработку. Программа на интерпретируемом языке может быть зачастую запущена на разных типах машин и операционных систем без дополнительных усилий. Однако интерпретируемые программы выполняются заметно медленнее, чем компилируемые, кроме того, они не могут выполняться без дополнительной программы-интерпретатора.
Программы на машинном языке – очень длинные последовательности единиц и нулей, являлись машинно зависимыми, т.е. для каждой ЭВМ необходимо было составлять свою программу.
Язык Ассемблера – это символическое представление машинного языка. Он облегчает процесс программирования по сравнению с программированием в машинных кодах.
Программисту не обязательно употреблять настоящие адреса ячеек памяти с размещенными в них данными, участвующими в операции, и вычисляемые результаты, а также адреса тех команд, к которым программа не обращается.
FORTRAN (1954)

COBOL (1959)
BASC
(1964 г.)

Изображение отрезка
LINE (x1,y1)-(x2,y2)
Например:
SCREEN 7
LINE
(50,100)-(80,30),5
Изображение прямоугольника
LINE(x1,y1)-(x2,y2)
Например:
SCREEN 7
LINE
(50,100)-(80,30),5,B
Изображение закрашенного
прямоугольника
LINE(x1,y1)-(x2,y2),
Бейсик – это продукт Новой Англии. Cозданный в 1964г., как язык обучения программированию. Бейсик является общепринятым акронимом от"Beginner's All-purpose Symbolic Insruction Code" (BASIC) - Многоцелевой Символический Обучающий Код для Начинающих".
Фрагмент программы на языке ФортранАлгоритм Евклида (нахождение наибольшего общего делителя)
             INTEGER FUNCTION NOD (X,Y)       INTEGER X        INTEGER Y 40   IF (X.EQ.Y) GO TO 10        IF (X.GT.Y) GO TO 20        Y=Y-X GO TO 30 20   X=X-Y 30   GO TO 40 10   RETURN        END
Фрагмент подпрограммы на языке Algol-60Алгоритм Евклида(нахождение наибольшего общего делителя)
integer procedure NOD (X,Y);integer X,Y;begin    while X#Y do            if X<Y then X:=X-Y else            Y:=Y-X    NOD:=Y;end;
С начала 80-ых г. XX в. начали создаваться языки программирования, которые позволили перейти к структурному программированию (использование операторов ветвления, выбора, цикла и практически отказ от частого использования операторов перехода (goto). К этим языкам относятся:
Фрагмент программы на языке PascalАлгоритм Евклида (нахождение наибольшего общего делителя двух чисел)
function NOD (X,Y: integer): integer;begin    while X<>Y do       if X>Y then          X:=X-Y      else          Y:=Y-X;    NOD:=X;end;
В основу этих языков положены программные объекты, которые объединяют данные и методы их обработки. В этих языках сохранялся алгоритмический стиль программирования. Для них были разработаны интегрированные среды программирования, позволяющие визуально конструировать графический интерфейс приложений:
Языки программирования на платформе .NET.
на  языке Visual Basic .Net ( на основе Visual Basic)  - 2003 г.;

на языке Visual C# (С-шарп) – на основе языков С++ и J – 2003 г.;

на языке Visual J# (J-шарп) – на основе Java и JavaScript – 2003 г.
Со времени создания первых программируемых машин человечество придумало уже более восьми с половиной тысяч языков программирования. Каждый год их число пополняется новыми. Некоторыми языками умеет пользоваться только небольшое число их собственных разработчиков, другие становятся известны миллионам людей. Профессиональные программисты иногда применяют в своей работе более десятка разнообразных языков программирования.
Prezentacii.com


title: Презентация на тему: Язык Паскаль. Лекция 7 - Двумерные массивы

text:
Лекция №7
Двумерные массивы
План лекции
Понятие двумерного статического массива
Ввод – вывод элементов массива
Заполнение массива случайными числами
Квадратные матрицы
Транспонирование матриц
Умножение матрицы на вектор
Умножение матрицы на матрицу
Удаление строки
Включение столбца
Операции с элементами матриц
Преобразование матрицы в одномерный массив
Многомерные массивы

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

Их можно занести в память компьютера, используя понятие двумерного массива. Положение элемента в массиве определяется двумя индексами. Они показывают номер строки и номер столбца. Например: A[7,6], D[56,47].

Пример объявления двумерного массива

Организацию обработки элементов статического двумерного (многомерного) массива можно организовать с использованием сложноциклической структуры. Так как, например, при заполнении массива  необходимо произвести обход всех элементов по строкам ( i ) изменяя индексы столбцов ( j ). Таким образом объявленный массив из N строк и M столбцов

Const
	n=6;
	m=8;
Var
	a : array [1..n, 1..m] of integer;

будет организован в памяти ЭВМ следующим образом:
Ввод – вывод элементов двумерного массива
Const
	n=6;
	m=8;
Var
	a : array [1..n, 1..m] of integer;
	I, j : integer;
Begin
writeln (‘ Заполнение элементов целочисленного массива A[6,8] ‘);
for i:=1 to n do
	 for j:=1 to m do
	begin
	write (‘a[‘, i , ‘, ‘ , j, ‘] =‘);
	read (a[ i , j ]);
	end;
writeln (‘В памяти компьютера сформирован двумерный массив с элементами’);
for i:=1 to n do
	begin
 	for  j:=1 to m do
		write (a[ i , j ]:6);
	writeln;
	end
End.

начало

Aij
A[6,8]

конец

Aij
Ввод – вывод элементов двумерного массива
Генерация элементов двумерного массива случайными числами.
Const
	n=6;
	m=8;
Var
	a : array [1..n, 1..m] of integer;
	I, j : integer;
Begin
randomize;
for i:=1 to n do
	begin
 	for  j:=1 to m do
		begin
		a[ i, j ]:=random(101);
		write (a[ i , j ]:6);
		end;
	writeln;
	end
End.

начало

Aij
A[6,8]

конец
Квадратные матрицы
В квадратной матрице количество строк и столбцов - одинаково и равно n.

Любая квадратная матрица имеет элементы главной и побочной диагонали.

Диагональные элементы главной диагонали :
 a[1 , 1];a[2 , 2];a[3 , 3];….;a[n , n].

Элементами побочной диагонали являются :
a[1 , n];a[2 , n-1];a[3 , n-2];…;a[n-1 , 2];a[n , 1].

Квадратные матрицы
В качестве примера рассмотрим задачу формирования квадратной матрицы порядка n случайными числами и нахождения произведения элементов главной диагонали и суммы элементов ниже побочной диагонали.
Отметим элементы главной диагонали для  нахождения их произведения.

Квадратные матрицы
И элементы ниже побочной диагонали для поиска их суммы.

Квадратные матрицы
Const
	n=9;
Var
	a : array [1..n, 1..n] of integer;
	I, j, s, p : integer;
Begin
randomize;
for i:=1 to n do
	begin
 	for  j:=1 to n do
		begin
		a[ i, j ]:=random(101);
		write (a[ i , j ]:6);
		end;
	writeln;
	end
p:=1;
for i:=1 to n do
	p:=p*a[ i, i ];
s:=0;
for i:=2 to n do
	for j:=n-i+2 to n do
		s:=s+a[ i, j ];
writeln (p,s);

End.

Транспонирование матриц
В данном алгоритме транспонирования матрицы необходимо заменить строки матрицы ее столбцами, а столбцы - строками, т.е. вычислить
   b[ i,j ] :=a[ j,i ], где i=1,…,n; j=1,…,m.

 Матрица А				Матрица B

Транспонирование матриц
Const
	n=5;
	m=7;
Var
i, j : integer;
a : array [1..n,1..m] of integer;
b : array [1..m,1..n] of integer;
Begin
randomize;
writeln (‘Сформирована матрица A’);
for i:=1 to n do
	begin
	for  j:=1 to m do
		begin
		a[ i,j ]:=random(31)-15;
		write (a[ i,j ]:6);
		end;
	writeln(‘’);
end;
for i:=1 to n do
	for j:=1 to m do
		b[ j,i ]:=a[ i,j ];
writeln (‘Получена транспонированная  матрица B’);
for i:=1 to m do
 	begin
	for j:=1 to n do
		write(b[ i,j ]:6);
	writeln(‘’);
end;
End.
Транспонирование матриц
Транспонированную матрицу можно получить в исходном массива А. Для квадратной матрицы n*n для этого необходимо поменять местами каждый элемент верхнего треугольника с соответствующим элементом нижнего (диагональные элементы переставлять не нужно).
При этом для каждой строки нужно выполнять перестановку для элементов, расположенных правее главной диагонали, с элементами соответствующего столбца, расположенными ниже главной диагонали. При перестановке используем вспомогательную переменную tmp, помещая в нее для временного хранения один из переставляемых элементов, чтобы не потерять его значение.

Транспонирование матриц
Const
	n=9;
Var
i, j, tmp : integer;
a : array [1..n,1..n] of integer;
Begin
randomize;
writeln (‘Сформирована квадратная матрица A’);
for i:=1 to n do
	begin
	for  j:=1 to n do
		begin
		a[ i,j ]:=random(101)-50;
		write (a[ i,j ]:6);
		end;
	writeln(‘’);
end;
for i:=1 to n-1 do
	for j:=i+1 to n do
		begin
		tmp:=a[ i,j ];
		a[ i,j ]:=a[ j,i ];
		a[ j,i ]:=tmp;
		end;
writeln (‘Получена транспонированная  матрица ’);
for i:=1 to n do
 	begin
	for j:=1 to n do
		write(a[ i,j ]:6);
	writeln(‘’);
end;
End.
Умножение матрицы на вектор
Для вычисления произведения С матрицы А размером n*m на вектор B
   размером m необходимо вычислить                            ,  i=1,….,n.

Использование вспомогательной переменной s позволяет уменьшить время выполнения программы за счет исключения обращения в цикле по j к элементам массива C.

Умножение матрицы на вектор
Const
	n=6;
	m=9;
Var
i, j, s : integer;
a : array [1..n,1..m] of integer;
b : array [1..m] of integer;
c: array [1..n] of integer;
Begin
randomize;
writeln (‘Сформирована матрица A’);
for i:=1 to n do
	begin
	for  j:=1 to m do
		begin
		a[ i,j ]:=random(101)-50;
		write (a[ i,j ]:6);

		end;
	writeln(‘’);
	end;
writeln (‘Сформирован вектор B’);
for j:=1 to m do
	begin
	b[ j ]:=random(51)-30;
	write (b[ j ]:6);
	end;
for i:=1 to n do
	begin
	s:=0;
	for j:=1 to m do
		s:=s+a[ i,j ]*b[ j ];
	c[ i ]:=s;
	end;
writeln (‘Получен вектор C ’);
for i:=1 to n do
 	write(c[ i ]:6);
End.
Умножение матрицы на матрицу
Для умножения матрицы А размером n*k на матрицу B размером k*m
     необходимо вычислить                           , i=1,…,n; j=1,…,m.

Const
	n=3;
	m=4;
	k=5;
Var
i, j, s : integer;
a : array [1..n,1..k] of integer;
b : array [1..k,1..m] of integer;
c : array [1..n,1..m] of integer;
Begin
randomize;
writeln (‘Сформирована матрица A’);
for i:=1 to n do

begin
	for  j:=1 to k do
		begin
		    a[ i,j ]:=random(101)-50;
	             write (a[ i,j ]:6);
		end;
	writeln;
end;
writeln (‘Сформирована матрица B’);
for i:=1 to k do
begin
	for  j:=1 to m do
		begin
		    b[ i,j ]:=random(351)-85;

Умножение матрицы на матрицу
		write (a[ i,j ]:6);
		end;
	writeln();
end;
for i:=1 to n do
	for j:=1 to m do
	begin
	s:=0;
	for l:=1 to k do
		s:=s+a[ i,l ]*b[ l,j ];
	c[ i,j ]:=s;
	end;

writeln (‘Сформирована матрица С’);
for i:=1 to n do
	begin
	for j:=1 to m do
		write (c[ i,j ]:6);
	writeln;
	end
End.
Удаление строки матрицы
Алгоритм удаления строки является сходным с алгоритмом удаление элементов одномерного массива, за тем исключением, что операция переноса элементов выполняется для каждого столбца при переборе строк. Рассмотрим программу удаления из матрицы А заданной с клавиатуры строки T.

Const
	n=10;
	m=5;
	Var
i, j, t, n : integer;
a : array [1..n,1..m] of integer;
Begin
randomize;
writeln (‘Сформирована матрица A’);
for i:=1 to n do

begin
	for  j:=1 to m do
		begin
		    a[ i,j ]:=random(101)-50;
	             write (a[ i,j ]:6);
		end;
	writeln;
end;
writeln (‘Введите номер строки для удаления’);
readln (t);

Удаление строки матрицы
k:=n-1;
for i:=t to k do
	for j:=1 to m do
		 a[ i,j ]=a[ i+1,j ];
writeln (‘Получена матрица ‘);
for i:=1  to k do
	begin
	for j:=1 to m do
		write (a[ i,j ]);
	writeln;
end
End.

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

Включение столбца в матрицу
Const
	n=7;
	Var
i, j, min, j_min, m: integer;
a : array [1..n,1..n+1] of integer;
b : array [1..n] of integer;
Begin
randomize;
writeln (‘Сформирована матрица A’);
for i:=1 to n do
begin
	for j:=1 to n do
		begin
		a[ i,j ]:=random(101);
		write (a[ i,j ]:6);
		end;
	b[ i ]:=a[ i,i ];
	writeln;
end;
min:=a[1,1]; j_min:=1;
for i:=1 to n do
	for  j:=1 to n do
		if (a[ i,j ]<min)
		begin
			min:=a[ i,j ];
			j_min:=j;
		end;
m:=n+1;
for j:=n downto j_min do
	for i:=1 to n do
		a[ i,j ]:=a[ i,j+1 ];
for i:=1 to n do
	a[ i,j_min+1]:=b[ i ];
writeln (‘Получен массив ‘);
for i:=1 to n do
	begin
	for j:=1 to m do
		write (a[ i,j ]:4);
	writeln;
end
End.
Операции с элементами матриц
Предыдущий пример может служить так же и примером преобразования матрицы, однако довольно часто встречаются задачи на преобразования матриц за счет изменения значений их элементов. Рассмотрим пример на умножение заданной с клавиатуры строки матрицы на элемент, являющийся "седловой" точкой, т.е. например, минимальным элементом из максимальных элементов по строкам. Для решения такой задачи следует определить значение "седловой" точки. Это можно сделать, организовав поиск максимального элемента по каждой строке и занесение его в элемент соответствующий индексу этой строки одномерного массива. Далее найти минимальный элемент в получившемся массиве, который и будет являться "седловой" точкой. После алгоритм становится достаточно не сложным. Необходимо ввести с клавиатуры индекс строки для преобразования и в цикле по столбцам преобразовать все элементы заданной строки, умножив их значение на полученный элемент "седловой" точки.

Операции с элементами матриц
Const
	n=7;
	m=6;
	Var
i, j, max, sedlt, t: integer;
a : array [1..n,1..m] of integer;
b : array [1..n] of integer;
Begin
randomize;
writeln (‘Сформирована матрица A’);
for i:=1 to n do
begin
	for j:=1 to m do
		begin
		a[ i,j ]:=random(101);
		write (a[ i,j ]:6);
		end;
writeln;
end;

writeln (‘Введите номер строки матрицы для ее умножения ее на значение 'седловой' точки ‘);
readln(t);
for i:=1 to n do
	begin
	max:=a[i][1];
	for j:=2 to m do
		if (a[ i,j ]>max)
			max:=a[ i,j ];
	b[ i ]:=max;
	end;
sedlt:=b[1];
for i:=1 to n do
	if (b[ i ]<sedlt)
		sedlt=b[ i ];
for j:=1 to m do
	a[ t,j ]:=a[ t,j ]*sedlt;
printf (‘Получена матрица ‘);
for i:=1 to n do
	begin
	for  j:=1 to m do
		write (a[ i,j ]:5);
	writeln;
	end
End.
Преобразование матрицы в одномерный массив
Обработка одномерных статических массивов осуществляется быстрее, чем двумерных того же размера, что часто требует выполнения указанного преобразования. Требуется переслать элементы матрицы n*m в одномерный массив того же размера по строкам с сохранением порядка следования элементов.
Для этого нужно соответствующим образом согласовать индексы исходной матрицы А и формируемого одномерного массива Х.

Преобразование матрицы в одномерный массив
Const
	n=3;
	m=4;
	Var
i, j : integer;
a : array [1..n,1..m] of integer;
x : array [1..n*m] of integer;
Begin
randomize;
writeln (‘Сформирована матрица A’);
for i:=1 to n do
begin
	for j:=1 to m do
		begin
		a[ i,j ]:=random(101);
		write (a[ i,j ]:6);
		end;
writeln;
end;

for i:=1 to n do
	for j:=1 to m do
		x[ (i-1)*m+j ]=a[ i,j ];
writeln (‘Получен массив X’);
for i:=1 to n*m do
	write (x[ i ]:6);
End.
Многомерные массивы
Массивы могут быть более чем двумерными.
Пример:

…
a : array [1..5, 1..3, 1..16,  1..4 ] of real;
…
for i:=1 to 5 do
	for j:=1 to 3 do
		for k:=1 to 16 do
			for m:=1 to 4 do
				a[ i,j,k,m ]:=random(101);
…


Презентация на тему: Язык поисковых запросов


title: Презентация на тему: Язык программирования QBasic

text:
Операторы присваивания, PRINT, CLS, REM
QBASIC
Оператор присваивания
	В старых версиях Бейсика оператор присваивания всегда начинался со слова LET. Сейчас этого нет, и оператор присваивания выглядит просто как обычное математическое равенство.

Формат записи:

переменная = выражение
Оператор присваивания
Примеры:
A= 10
B = 10+2
Z=(x-3*y^2)+7
Рассмотрим маленькую программу:
X = 15
Y = 2
Z = (x – 3 * y ^ 2) + 7
Чему равен Z после выполнения всех операторов?

Ответ: 10

Оператор PRINT
	Оператор PRINT позволяет вывести информацию на экран.
 	Формат записи:
    PRINT список[,] или [;]
	Список может содержать одну переменную числовое выражение, или несколько. Например,
	PRINT A,B,C
	или
	PRINT A;B;C

Оператор PRINT
	В операторе PRINT можно включать арифметические выражения, но нельзя использовать оператор присваивания.  Например,
	PRINT  A , но нельзя PRINT A=32 ,
	можно  PRINT 32
	На экране будет выведено число 32.
	В операторе PRINT можно использовать комментарии ответов, например:
	PRINT "Значение A=" A

	При наборе программы оператор  PRINT можно заменить на знак ?. Интерпретатор Бейсика сам заменит Все знаки на оператор PRINT.
Оператор CLS
	Оператор CLS очищает весь экран.
	CLS может стоять в начале программы, чтобы она (программа) начиналась на чистом экране или в середине программы для вывода итоговой информации на новом экране.

Оператор REM
	REM - замечания, комментарии (от английского REMARK - замечания).
 	Оператор используется при программировании для комментария блоков программы. При работе программы - REM игнорируется.
	Использование REM облегчает чтение программы и её понимание. Вместо оператора REM можно использовать апостроф ( ' ). REM или апостроф позволяет вводить комментарии непосредственно в конце любой строки. REM и ' не требуют кавычек.

Задания
Записать операторы, которые переменной S присваивают среднее арифметическое чисел A, B  и C.
Записать операторы, которые переменной S присваивают длину гипотенузы C по катетам А и В.
Присвоить переменной V значение объема кирпича с размерами А – длинна, В – ширина, С – высота.
Задания
Вычислить площадь квадрата со стороной 5 м.
С помощью одного оператора PRINT вычислите пять арифметических выражений: 5+2, 5-2, 5*2,5:2, 52. В качестве разделителя используйте точку с запятой.
Напечатать на чистом экране слова «Печать», «через», «строку» одно под другим через строку.


title: Презентация на тему: Язык Паскаль. Лекция 5. Разбор заданий контрольной работы

text:
mas[maxi]:=mas[1];
mas[1]:=buf;

for i:=1 to 10 do
writeln(mas[i]);
end.

function max(a,b: integer): integer; far;
begin
if a<b    then
max:= b
else
max:= a
end;
mas[maxi]:=mas[1];
mas[1]:=buf;

for i:=1 to 10 do
writeln(mas[i]);
end.

function max(a,b: integer): integer; far;
begin
if a<b    then
max:= b
else
max:= a
end;


title: Презентация на тему: Язык Паскаль. Лекция 4 - Разветвленный алгоритм

text:
Лекция №4
Разветвленный алгоритм
План лекции
Разветвленный алгоритм
Примеры разветвленных алгоритмов
Условный оператор
Составной оператор
Вложенные условные операторы
Оператор выбора
Решение задач
Разветвленный алгоритм
Разветвленным алгоритмом называется такой алгоритм, в котором выбирается один из нескольких возможных путей (вариантов) вычислительного процесса.

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

Полная разветвленная алгоритмическая структура
Действие 1
Действие 2
. . .
условие
. . .
да
нет
Неполная разветвленная алгоритмическая структура
Действие 1
. . .
условие
. . .
да
нет
Условный оператор
Оператор if выбирает между двумя вариантами развития событий:

	if 	<условие>
(если)
	  then    <один_оператор>
(тогда)
  [else <один_оператор>];
(иначе)

Обратите внимание, что перед словом else (когда оно присутствует, конечно же) символ ";" не ставится - ведь это разорвало бы оператор на две части.
Условный оператор
Условный оператор if работает следующим образом:
Сначала вычисляется значение <условия> - это может быть любое выражение, возвращающее значение типа boolean.
Затем, если в результате получена "истина" (true), то выполняется оператор, стоящий после ключевого слова then, а если "ложь" (false) - без дополнительных проверок выполняется оператор, стоящий после ключевого слова else. Если же else-ветвь отсутствует, то не выполняется ничего.
Составной оператор
Составной оператор - объединение нескольких операторов в одну группу. Группа операторов внутри составного оператора заключается в операторные скобки (begin-end).

begin  оператор 1;  оператор 2;end;
Составной условный оператор
Если в качестве оператора должна выполниться серия операторов, то они заключаются в операторные скобки begin-end. Конструкция Begin ... End называется составным оператором.

if <логическое выражение>  then    begin       оператор 1;      оператор 2;      ...    end  else     begin      оператор 1;      оператор 2;      ...    end;
Пример разветвленного  алгоритма
Задача 1. Вычислить отношение двух целых чисел.
Var
	a,b : integer;
	ratio : real;
Begin
	writeln(‘Введите два числа: ‘);
	read (a,b);
	ratio:= a / b;
	writeln (‘Отношение = ‘,ratio:6:2);
End.

Когда вы введете 0 для второго значения,  программа напечатает сообщение об ошибке
(Divide by zero - Деление на ноль) и остановится.

Ввод  a,b
Вывод ratio
b=0
да
нет
Делить на 0 нельзя.
ratio=a/b
				Program  z1 (input, output);
				Var
					a,b: integer;
					ratio  :real;
				Begin
			               	writeln (‘Введите a, b’);
	    			               read (a, b);
			                 	if  b=0 then
					       writeln (‘Делить на 0
						нельзя ‘)
					else
					        begin
					           ratio:=a/b; 					        			           write (ratio)
					         end
				     End.

начало
конец
Полная разветвленная структура
Задача 2. Вывести на экран большее из двух данных чисел.

Program z2;Var  x, y : integer; {вводимые числа}Begin  writeln(‘Введите 2 числа ‘); {вводим два целых числа через пробел}  readln(x,y);  if x>y    then      writeln (x) {если х больше y, то выводим х}    else      writeln (y) {иначе выводим y}    readln;End.
Неполная разветвленная структура
Задача 3. Составить программу, которая, если введенное число отрицательное меняет его на противоположное.

Program Chisla;Var  x : integer; {вводимое число}Begin  writeln(‘Введите число ‘); {вводим целое число}  readln(x);  if x<0    then      x:=-x;      writeln (x);      readln;End.
Вложенные условные операторы
Program z4;Var  a, b, c : integer; Begin  writeln(‘Введите числа a, b, c’);   readln(a,b,c);  if (a<=b) and (b<=c)    then      begin        a:=sqr(a);        b:=sqr(b);        c:=sqr(c);      end    else      if (a>b) and (b>c)        then          begin            b:=a;             c:=a;          end        else          begin            a:=-a;            b:=-b;            c:=-c;          end  writeln(a,b,c);  readln;End.
Задача 4. Даны целые числа a, b, c. Если a ≤ b ≤ c, то все числа заменить их квадратами, если a>b>c, то каждое число заменить наибольшим из них, в противном случае сменить знак каждого числа.
Оператор выбора
Оператор case позволяет сделать выбор между несколькими вариантами:
case <переключатель> of
        <список_констант> : <один_оператор>;
        [<список_констант> : <один_оператор>;]
        [<список_констант> : <один_оператор>;]
        [else <один_оператор>;]
end;
Оператор выбора
Существуют дополнительные правила, относящиеся к структуре этого оператора:

Переключатель должен относиться только к порядковому типу данных, но не к типу longint.
Переключатель может быть переменной или выражением.
Список констант может задаваться как явным перечислением, так и интервалом или их объединением.
Повторение констант не допускается.
Тип переключателя и типы всех констант должны быть совместимыми
Оператор выбора
Пример оператора выбора:

case symbol of
   'a'..'z', 'A'..'Z' : writeln('Это латинская буква');
   'а'..'я', 'А'..'Я' : writeln('Это русская буква');
   '0'..'9' :	    writeln('Это цифра');
   ' ',#10,#13,#26	:   writeln('Это пробельный символ');
   else	            writeln('Это служебный символ');
end;
Оператор выбора
Задача 5. Написать программу преобразования цифр в слова.

Program z5;Var  a, b, c : integer; Begin  writeln(‘Введите цифру ‘);   readln(a);  case a of    0 : writeln (‘ноль‘);    1 : writeln (‘один‘);    2 : writeln (‘два‘);    3 : writeln (‘три‘);    4 : writeln (‘четыре‘);    5 : writeln (‘пять‘);    6 : writeln (‘шесть‘);    7 : writeln (‘семь‘);    8 : writeln (‘восемь‘);    9 : writeln (‘девять‘)  else writeln (‘Это число не является цифрой‘);  end;  readln;End.

Решение задач
Задача 6. Чтобы получить одну молекулу серной кислоты H2SO4 нужно 2 атома водорода (Н), 1 атом серы (S) и 4 атома кислорода (О).В химическом реакторе имеется А атомов водорода, В атомов кислорода и С атомов серы. Составьте алгоритм или напишите программу, вычисляющую, сколько молекул серной кислоты может получится из такого количества атомов?

Решение задач
Алгоритм решения этой задачи может быть записан следующим образом:

         Переменные: тип - целый A,B,C,M1,M2,K;
         Ввести A,D,C;
         Вычислить целую часть от деления А на 2
                М1=цел.часть (А/2);
         Вычислить целую часть от деления B на 4
                М2=цел.часть (B/4);
         Найти минимальное из трех чисел С, М1, М2
                K=min(C,M1,M2);
         Выдать на печать: В редакторе образуется К молекул кислоты.

Решение задач
Задача 7. Определить принадлежит ли точка А(X0,Y0) данной фигуре.
Решение задач
Задача 8. Напишите программу, которая вычисляет стоимость междугородного телефонного разговора (цена одной минуты определяется расстоянием до города, в котором находится абонент). Исходными данными для программы являются код города и длительность разговора. Ниже приведены коды некоторых городов.


title: Презентация на тему: Язык Паскаль. Лекция 4. Условный и сложный операторы. Операторы цикла. Массивы

text:
if i>0 then
Begin
 if s>2   then
s:=1;
end
else
s:=-1;

if i>0 then
Begin
 if s>2   then
s:=1;
end
else
s:=-1;

if i>0 then
Begin
 if s>2   then
s:=1;
end
else
s:=-1;

if i>0 then
Begin
 if s>2   then
s:=1;
end
else
s:=-1;


title: Презентация на тему: Язык Паскаль. Лекция 2. ТИПЫ ДАННЫХ (ПРОСТЫЕ ТИПЫ)

text: S  |       E      |                            M


title: Презентация на тему: Язык Паскаль. Лекция 6. Символы и строки. Процедуры и функции работы со строками. Запис

text:
typeTFigure = record
type_of_figure: string[10];
color_of_figure: byte;
  ...  case integer of
1: (x1,y1,x2,y2: integer);
2: (a1,a2,b1,b2,c1,c2: integer);
3: (x,y: integer; radius: word);
end;
var figure: TFigure;
typeTFigure = record
type_of_figure: string[10];
color_of_figure: byte;
  ...  case integer of
1: (x1,y1,x2,y2: integer);
2: (a1,a2,b1,b2,c1,c2: integer);
3: (x,y: integer; radius: word);
end;
var figure: TFigure;


title: Презентация на тему: Язык как способ представления информации

text:
Язык как способ представления информации
Форма представления информации
В виде знаков (символьная, графическая, табличная)
В виде жестов
В устной форме

Форма представления информации

Кодирование информации
Код – набор символов для представления информации
Кодирование – процесс представления информации в виде кода
Способы кодирования
Азбука Морзе
 Сэмюэль Морзе                      Аппарат Морзе
Способы кодирования
Двоичное кодирование
Готфрид Лейбниц         Арифметическая машина Лейбница
Единицы измерения информации
С помощью двух цифр 0 и 1 можно закодировать любое сообщение.
Символы двоичного кода 0 и 1 принято называть битами.
Бит – наименьшая единица измерения информации
Единицы измерения информации
Кодирование текстовой информации
Для кодирования текстовой информации используются кодовые таблицы
Кодовая таблица – это внутреннее представление символов в компьютере
Кодовые таблицы
ASCII – Американский стандартный код информационного обмена

Для хранения одного символа выделяется 1 байт (8 бит).

Количество возможных комбинаций нулей и единиц для отображения символов – 256.
Кодовые таблицы
Unicode – единая таблица для всех национальных языков

Для хранения одного символа выделяется 2 байта (16 бит).

ЗАДАЧА
Считая, что каждый символ кодируется одним байтом, оцените информационный объем сообщения:

Певец Давид был ростом мал, но повалил же Голиафа!
РЕШЕНИЕ
Считаем количество символов в сообщении с учетом пробелов и знаков препинания. Получаем N=50.
Т.к. один символ кодируется 1 байтом, то всё сообщение будет занимать в памяти компьютера 50 байт.

Домашнее задание
Закодируйте своё имя и фамилию с помощью ASCII-кода
Представьте информацию о погоде в различной форме


title: Презентация на тему: Язык программирования QBasic. Графика

text:
Графика в QBASIC
Точка, отрезок, прямоугольник
Графический режим
	Прежде чем работать операторы графики нужно сообщить компьютеру о включении графического режима. Для этого используем оператор SCREEN. Таких режимов несколько:

Графический режим
Формат записи:
	SCREEN <номер экрана>
Например
SCREEN 12
      или
SCREEN 9
Графический режим
	В режиме SCREEN 12 экран представляет собой координатную сетку с началом в левом верхнем углу, вправо от которого увеличивается координата X, а вниз – координата Y. Максимальное значение X на экране 640, а Y – 480.                    0,0				X      640

		  Y

		480

Оператор COLOR
	С помощью этого оператора можно выбирать цветовую палитру на экране. COLOR позволяет присваивать определенные цвета основным символам и фону.
 	COLOR 14,9
Здесь 14 – цветовой код выводимых символов (желтый).
            9 – цветовой код фона (голубой).
	С помощью этого оператора можно выбирать цветовую палитру на экране. COLOR позволяет присваивать определенные цвета основным символам и фону.
Формат  записи:
 	COLOR  n1,n2
n1 - цветовой код выводимых символов.
n2 - цветовой код фона (экран).

Оператор COLOR
	Ниже представлен список кодов всех возможных цветов для вывода символов и фона:

Графические примитивыТочка
	Оператор PSET служит для закрашивания точки в заданный цвет.
 Формат записи:
	PSET (X,Y), С
X,Y - координаты точки.
C - номер цвета.
Пример
SCREEN 12
PSET (320,240),4
	Результат работы этой программы будет: на черном экране появиться красная точка в центре.
Графические примитивыТочка
Еще пример
SCREEN 12:CLS
COLOR 15,1
PSET (320,240),4

Теперь та же точка будет выведена в центре синего экрана

Оператор LINE служит для рисования любых отрезков или прямоугольников.
 Формат записи:
	LINE (X1,Y1) - (X2,Y2), C, [B] [F]
 X1,Y1 – координаты начальной точки отрезка.
X2,Y2 – координаты конечной точки отрезка.
X1 и X2 берутся из интервала [0;320/640].
Y1 и Y2  –  [0;200/350].
C  – номер цвета линии из [0;15]
B – если в операторе LINE поставить в конце букву B, то машина, используя этот отрезок, как диагональ, но не рисуя её, начертит прямоугольник. F - при наличии буквы F, сразу после буквы B, позволяет нарисовать закрашенный (цветом границы) прямоугольник.

Графические примитивыОтрезок. Прямоугольник.
Примеры

0,0
0,0
640
640
480
480

600,50
600,50
100,300
100,300


text:
QBASIC
Операторы LOCATE, INPUT
Оператор LOCATE
	В Бейсике есть оператор, который позволяет управлять вывод данных на экран, что существенно повышает восприятие  программ пользователем.
	Текст или результаты вычислений всегда выводятся на экран начиная с той позиции, в которой на момент вывода находится курсор. Изменить эту позицию поможет оператор LOCATE.

Оператор LOCATE
	Экран компьютера в текстовом режиме представляет собой условную сетку из столбцов и строк.

24 строки
80 столбцов
Оператор LOCATE
Формат записи:
	LOCATE y,x
где x – номер столбца экрана, а y – номер строки (             ,           )
Например,
    CLS:LOCATE 13,40:PRINT ″S″
	Данные команды последовательно:
очистить экран и перевести курсор в позицию X=0, Y=0;
 перевести курсор на позицию X=40, Y=13;
 напечатать в центре чистого экрана букву S.
Оператор INPUT
	Оператор INPUT  обеспечивает запрос данных, необходимых для выполнения программы, непосредственно у пользователя, которые тот вводит прямо с клавиатуры.
Существует два способа использования оператора INPUT.

 1. Без комментариев

  INPUT переменные

	Например:
   INPUT С

Оператор INPUT
2. Оператор с комментарием

  INPUT "комментарии";переменные
 	Например:
  INPUT "Введите число";С
Еще примеры.
	В операторе INPUT может быть запрос на ввод одного числа, двух, трех и т.д.

  INPUT "Введите числа";A,B,C,D

Оператор INPUT
CLS
INPUT ″Каков Ваш рост в см″;	R
? ″Ваш рост превышает 1 м на ″R-100 ″см″
END
Каков результат работы данной программы?

CLS
INPUT ″Как вас зовут″;NAME$
? ″Здравствуйте ″; NAME$
END

Оператор INPUT
CLS
INPUT ″Введите длину двух катетов″;A,B
C=SQR(A^2+B^2)
? ″Длина гипотенузы =″;C
END

CLS
INPUT ″Введите длину первого катета″;A
INPUT ″Введите длину второму катету″;B
C=SQR(A^2+B^2)
? ″Длина гипотенузы =″;C
END

Какая версия программы более грамотно составлена ?
Задания
Составьте программу, которая выведет в центре чистого экрана ваши имя и фамилию. Обеспечьте симметричное расположение надписи относительно сторон экрана.
Напишите программу, которая вычислит и напечатает в центре чистого экрана значение выражения: 23+33+43+53. Над ним в качестве заголовка напечатайте надпись «Сумма кубов».
Напечатайте свое имя по диагонали, начиная от верхнего левого угла экрана.
Задания
Напишите программу, запрашивающую ваш год рождения, год рождения вашей мамы и печатающую, во сколько лет мама вас родила.
Дискета 3,5″ вмещает 1,44 Мбайта. Рукопись содержит X страниц текста. На каждой странице – Y строк по Z символов в каждой. Сколько дискет потребуется для записи рукописи? X, Y и Z вводятся с клавиатуры.
Напишите программу, запрашивающую три стороны треугольника A, B, C и вычисляющую его площадь по формуле Герона
							  ,
	где


text:
Символьные переменные и функции

Символы и строки
	Имена строковые переменные отличается от обычных добавлением знака доллара ($). В таких переменных содержаться как отдельные символы, так и их последовательности длинной до 255 символов.
	Все символы используемые в Бейсике имеют  свой код и внесены в специальную таблицу кодов ASCII

Функция ASC
	Функция ASC определяет код ASCII для первого символа строковой переменной.
Формат записи:
	ASC(строковая переменная)
Например:
   N=ASC(“F”)
   ? “Код заглавной буквы F-” ; N
В результате получим:
   Код заглавной буквы F - 70
Функция CHR$
	Функция CHR$ определяет символ, код которого указан в скобках.
Формат записи:
	CHR$ (код)
Пример:
  CLS
  1: INPUT “введите любой код от 33 до 128” ; N
  IF N < 33 OR N >= 128 THEN ? “Обратите внимание на числовые границы для кода” : GOTO 1
  ? “Символ с кодом ”; N; “- это”; CRH$(N)

Функция INPUT$
	Эта функция ожидает ввода N символов, которые и будут обрабатываться программой сразу после их набора на клавиатуре, не дожидаясь нажатия клавиши <Enter>.
  Пример.
	CLS
	N$=INPUT$(2)
	IF N$=“да” THEN ? N$ ELSE ? “нет”
	В данном случае программа после ввода с клавиатуры последовательности символов анализирует ее, выделяя только два первых символа, и действует в зависимости от проверяемого условия.

Функция LEN
	Функция определяет длину введенной или существующей строковой переменной.
Формат записи:
	LEN (строковая переменная)
   Пример.
	CLS
	INPUT “Введите Вашу фамилию”; F$
	N=LEN (F$)
	? ”В вашей фамилии ”; N; “букв”
Функции LEFT$  RIGHT$
	Для получения фрагмента строки применяются специальные функции.
	Функция LEFT$ выделяет из введенной строковой переменной N символов слева:
	LEFT$ (строковая переменная, N)

	Функция RIGHT$ выделяет из введенной строковой переменной N символов справа:

	RIGHT$ (строковая переменная, N)

Функции LEFT$  RIGHT$
CLS
F$ = “ГАЗОНОКОСИЛЬЩИК”
L$ = LEFT$ (F$, 5)
? L$

CLS
F$ = “ГАЗОНОКОСИЛЬЩИК”
R$ = RIGHT$ (F$, 9)
? R$

ГАЗОН
КОСИЛЬЩИК
Функция MID$
	Функция MID$ извлекает N символов, начиная с M исходной строковой переменной:
	MID$ (строковая переменная, N, M)
  ПРИМЕР
	CLS
	F$=“ГАЗОНОКОСИЛЬЩИК”
	M$=MID$(F$,7,4)
	? M$
На экране появится слово КОСИ
Функция MID$
Еще пример.
	CLS
	C$=MID$("НОВОРОЖДЕННЫЙ",5,9)
	PRINT C$

Получим на экране слово РОЖДЕННЫЙ.

Продолжим
CLS
F$ = "ГАЗОНОКОСИЛЬЩИК"
W1$ = MID$(F$, 4, 2) + RIGHT$(F$, 7)
W2$ = MID$(F$, 4, 2) + LEFT$(F$, 2)
W3$ = MID$(F$, 9, 1) + MID$(F$, 7, 2) +  	 	MID$(F$, 11, 2) + MID$(F$, 7, 2)
PRINT W1$
PRINT W2$
PRINT W3$
Определите какие слова появится на экране?
Что появится на экране после выполнения программы?
CLS
F$="спортсмен»
D$=MID$(F$,7,2) + MID$(F$,5,1) + MID$(F$,4,1) + MID$(F$,3,1) + MID$(F$,9,1) + MID$(F$,3,1) +  + MID$(F$,7,1)
PRINT D$
END
Ответ: На экране будет слово "метроном"

Функция INKEY$
	Данная функция ожидает нажатия определенной клавиши, анализирует поступающую информацию об уже нажатых клавишах, и, в зависимости от результатов анализа, программа следует по тому или иному пути.
Например:
CLS
?”Для продолжения нажмите любую клавишу”
WHILE INKEY$=””
WEND
?”Продолжение”
Функция INKEY$
	Можно задать и определенную клавишу для продолжения выполнения программы:

CLS
? “Нажмите клавишу ESC для продолжения”
WHILE INKEY$<>CHR$(27)
WEND
	Функция INKEY$ работает только вместе с проверкой условия.


text:
Графика в QBASIC
Окружность, эллипс. Закраска.
Окружность
Следующий этап построения – окружность.
 Формат записи:
	CIRCLE (X,Y), R, C
X,Y – координаты центра окружности или дуги
R – длина радиуса (в экранных точках)
C – номер цвета линии
Пример:
CIRCLE (320,340),50,2

Эллипс
	Эллипс – это окружность, которой слегка дали по «голове» или по «бокам», в результате чего она стала вытянутой по вертикали или горизонтали.  Сжатие окружности зависит от коэффициента.
	Если коэффициент сжатия будет а пределах от 0 до 1, то эллипс будет «приплюснут» по горизонтали.
	Если коэффициент сжатия больше 1, то эллипс будет сжат по вертикали.
Эллипс
Формат записи:

	CIRCLE (X,Y), R,C,,,K

X,Y – координаты центра эллипса
R – радиус той окружности, из которой этот эллипс получился
C – номер цвета линии
K – коэффициент сжатия окружности.

Эллипс
Пример

SCREEN 12:CLS
COLOR ,9
CIRCLE(320,240), 50, 15,,,.5
CIRCLE (320,240),50,14,,,2

Результат работы программы

Закраска замкнутых контуров
Формат записи:

	PAINT (X,Y), С1, С2

X,Y - координаты любой точки закрашиваемой области
С1 - номер цвета закрашивания [0;15]
С2 - номер цвета границы [0;15]

Оператор PAINT
Правила закраски:
контур должен быть замкнут. Если в нем будет «дырка» хотя бы в одну экранную точку, то вся «краска» вытечет и зальет экран;
контур должен быть одноцветен. Цвет контура в операторе графики должен обязательно совпадать со цветом в операторе закраски;
координаты точки закраски должны лежать внутри контура.

Пример
SCREEN 12:CLS
COLOR ,9
CIRCLE(320,240), 50, 15,
PAINT (320,240), 2, 15

Оператор DRAW
	Служит для вычерчивания отрезков, начиная с любой точки экрана. Минимальный угол между отрезками 45o.
	Направление указывается с помощью буквы и с помощью числа указывается длина.

U
H
L
G
D
F
R
E
Оператор DRAW

Пример:
	SCREEN 9
	DRAW" BM 125,120  G30 R20 G40 R30 G60 R75 D20 R10 U20 L10 R85 H60 R30 H40 R20 H30"
	Для смены цвета отрезка надо перед его началом написать латинскую букву С и поставить номер цвета. Если цвет не менять, то последующие отрезки будут того же цвета.

	Что появиться на экране в результате работы этой программы?

Результат


title: Презентация на тему: Язык Паскаль. Лекция 5 - Циклические алгоритмы

text:
Лекция №5
Циклические алгоритмы
План лекции
Оператор безусловного перехода
Повторяющиеся действия
Циклы с предусловием
Циклы с постусловием
Циклы со счетчиком
Сложноциклические структуры
Решение задач.

Оператор безусловного перехода
Оператор безусловного перехода – goto.

			goto <метка>;

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

			Label
				metka1, metka2;

Меткой может быть число от 1 до 9999, либо последовательность латинских букв и цифр.

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

Пример:
…..
goto m1;
…..
…..
m1: write (a,b);
….

Оператор безусловного перехода
Пример использования оператора безусловного перехода:
Label					Var
	m1, m2;					a,b,c : real;
Var						Begin
	a,b,c : real;					read(a,b);
Begin						if b=0 then
	read (a,b);					    write (‘На 0 делить нельзя!’)
	if b=0 then 					 else
		goto m1;					 	begin
	c:=a/b;						     c:=a/b;
	write (c);						     write (c);
	goto m2;						end
	m1 : write (‘На 0 делить нельзя !’);		End.
	m2:
	End.

Из пример очевидна неэффективность использования оператора безусловного перехода.

Циклический алгоритм
Циклический алгоритм реализует повторение некоторых действий. Иными словами циклические алгоритмы включают в себя циклы.

Циклом называется последовательность действий, выполняемых многократно, каждый раз при новых значениях параметров.

Повторяющиеся действия
Повторяющиеся действия можно реализовать с помощью условного оператора и оператора безусловного перехода.

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

Повторяющиеся действия
Задача 1.
Найти максимальное число из десяти положительных чисел.

Решение задачи можно построить по следующему алгоритму:
1) i=0
2) p=0
3) задать очередное значение x
4) если x>p, то  p=x
5) i=i+1
6) если i<10 перейти к пункту 3.
7) выдать значение p

Повторяющиеся действия
Label
	m1;
Var
	p, i, x : integer;
Begin
	p:=0; i:=0;
	m1 : read(x);
	if x>p then
		p:=x;
	inc(i);
	if i<10 then
		goto m1;
	writeln (p);
End.

начало
x
P= 0;  I=0
P
x>P
    I<10
P=x

I=I+1

конец

+
-
+
-
Повторяющиеся действия
В данном примере продемонстрированы повторяющиеся действия (циклические, цикл).
Телом цикла называют те операторы, которые повторяются.
			…
			m1 : read(x);
			if x>p then
				p:=x;
			inc(i);
			if i<10 then
				goto m1;
			…

Управляющей переменной цикла называют переменную, от которой зависит количество повторений.

В нашем примере, управляющей переменной цикла является переменная i.

Операторы цикла
На языке Паскаль различают следующие операторы цикла:
Циклы с предусловием ( while );
Циклы с постусловием ( repeat … until );
Циклы со счетчиком ( for ).

Циклы с предусловием
While – это оператор цикла итеративного типа с предусловием, так как в нем анализ конца цикла производится до выполнения операторов тела цикла. Он используется, когда количество повторений операторов тела цикла заранее неизвестно и определяется в процессе выполнения цикла.
По операторам continue и break  можно перейти на анализ условия конца цикла или первый оператор после цикла соответственно.

	while <логическое выражение> do	  begin    		<тело цикла, состоящее из группы операторов>  	  end;

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

Циклы с предусловием
while  B(x) do
      S;

где   B(x) – логическое выражение , в том случае, когда это выражение будет иметь значение Ложь, произойдет выход из цикла;
        S – один оператор, простой или составной; он должен включать операторы тела цикла, в том числе оператор изменения операторов логического выражения B(x)

Условие при котором выполняются итерации цикла
Тело цикла
Циклы с предусловием
Задача 2.
Лист бумаги делят пополам, полученную половину снова делят пополам и т.д. Определить, какое количество делений потребуется, для того чтобы получить частицу размером с атом. Начальная масса листа 1 грамм, масса атома 10-24 грамм.
		Var
			m,ma : real;
			k :integer;
		Begin
		k:=0;
		m:=1;
		ma:=1e-24;
		while m>ma do
			begin
			m:=m/2;
			inc (k);
			end;
		writeln (k)
		End.

начало
k
m>10-24

конец

+
-

m=1    k=0
m=m/2     k=k+1

Циклы с предусловием
При использовании цикла с предусловием надо помнить следующее:
значение условия выполнения цикла должно быть определено до начала цикла;
если значение условия истинно, то выполняется тело цикла, после чего повторяется проверка условия. Если условие ложно, то происходит выход из цикла;
хотя бы один из операторов, входящих в тело цикла, должен влиять на значение условия выполнения цикла, иначе цикл будет повторяться бесконечное число раз.

Циклы с предусловием
Задача 2.
Определить значение суммы S=1/x1+1/x2+…1/xn, где n – количество слагаемых.
		Var
			s, x : real;
			i, n :integer;
		Begin
		i:=0; s:=0;
		read (n);
		while i<n do
			begin
			inc (i);
			read (x);
			s:=s+1/x;
			end;
		writeln (s)
		End.
Как будет работать программа, если пользователь введет x=0?

Циклы с предусловием
		Var
			s, x : real;
			i, n :integer;
		Begin
		i:=0; s:=0;
		read (n);
		while i<n do
			begin
			inc (i);
			read (x);
			if x=0 then
			          break;
			s:=s+1/x;
			end;
		writeln (s)
		End.

Программа завершит выполнение с сообщением об ошибке (Деление на 0).

		Var
			s, x : real;
			i, n :integer;
		Begin
		i:=0; s:=0;
		read (n);
		while i<n do
			begin
			inc (i);
			read (x);
			if x=0 then
			          continue;
			s:=s+1/x;
			end;
		writeln (s)
		End.

Циклы с предусловием
В случае использования оператора break исполнение программы завершится, т.е. произойдет выход из цикла и вывод накопленной суммы до введенного значения x=0.
В случае использования оператора continue произойдет переход на выполнение первого оператора тела цикла, и как следствие будет пропущены операторы стоящие после continue в теле цикла. Таким образом будет пропущена операция деления на 0.
Операторы break и continue могут использоваться так же и в других циклах : циклах с постусловием и циклах со счетчиком.

Циклы с постусловием
Repeat … until – это оператор цикла итеративного типа с постусловием, так как в нем анализ конца цикла производится после выполнения операторов тела цикла. Он используется, когда количество повторений операторов тела цикла заранее неизвестно и определяется в процессе выполнения цикла. Операторы тела цикла выполняются хотя бы 1 раз.

			repeat
				<операторы тела цикла>
			until <логическое выражение>

Циклы с постусловием
Условие завершения цикла
repeat
S;
until B(x);

 где 	B(x) – логическое выражение, при истинности которого  	происходит выход из цикла;
	S – один или несколько операторов тела цикла.

Циклы с постусловием
Задача 3.
Дано x>1. Вычислить и вывести степени x. Вычисления производятся до тех пор, пока вычисляемое значение не станет более 108
			Var
				k,x : integer;
				y : longint;
			Begin
			read (x);
			k:=0;
			y:=1;
			repeat
				y:=y*x;
				inc (k);
				write (x,’ в степени ’,k,’ есть ‘,y);
			until y>1e8;
			End.

начало
x,k,y
y>108

конец

-
+

x
y=y*x

k=0 ; y=1
k=k+1

Сравнение циклов с постусловием и предусловием
Есть небольшое отличие в организации цикла repeat по сравнению с while: для выполнения в цикле repeat нескольких операторов не следует помещать эти операторы в операторные скобки begin ... end. Зарезервированные слова repeat и until действуют как операторные скобки.
Сравнение циклов с постусловием и предусловием
Конструкция repeat ... until работает аналогично циклу while. Различие заключается в том, что цикл while проверяет условие до выполнения действий, в то время как repeat проверяет условие после выполнения действий. это гарантирует хотя бы одно выполнение действий до завершения цикла.

Так же истинность логического выражения в операторе repeat … until свидетельствует о завершении цикла, тогда как в операторе while – выполнение тела цикла.

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

for <управл. переменная цикла> :=<нач. зн-е> to/downto <кон. зн-е> do  <один оператор, являющийся телом цикла>

to – используется при шаге изменение управляющей переменной цикла равном 1.
downto – используется при шаге изменение управляющей переменной цикла равном -1.

Циклы со счетчиком
Примеры :
		for  x:=1 to 10 do
 			begin
			….
			end;

		for  y:=100 downto 10 do
			begin
			….
			end;

Циклы со счетчиком
Задача 4.
Найти максимальное число из десяти положительных чисел.
Var
	p, i, x : integer;
Begin
p:=0;
for  i:=1 to 10 do
	 begin
	read (x);
	if x>p then
		p:=x;
	end;
writeln(p);
End.

начало
x
P= 0
P
x>P
P=x

конец

+
-
       i=1;10

Циклы со счетчиком
Управляющая переменная цикла со счетчиком не может быть вещественного типа.
В тех случаях, когда тело цикла выполняется заданное, известное количество итераций, но шаг цикла отличен от 1 или -1, то используют циклы while, repeat … until.
Пример:
		…
		x:=0;
		repeat
			x:=x+2;
			…
		until x=10;
		…

Ситуации «зацикливания»
Рассмотрим несколько примеров циклов :
for i:=100 to 10 do                               2)  while true do
		….                                                        ….

3)   x=5;				        4)  y:=10;
      repeat				while y>5 do
      inc (x);					begin
	…						…
	until x<2;					y:=y+2;
							end;
Такие циклы будут выполняться, до тех пор пока не будет прервано исполнение такой «зацикленной» программы. Эту ситуацию можно разрешить используя оператор break в теле цикла. Однако всегда следует следить за тем, чтобы циклы завершались корректно, т.е. в циклах были установлены такие параметры, которые бы не приводили к «зацикливанию».
Сложноциклические структуры
Циклы могут быть простые и вложенные (кратные, циклы в цикле). Для решения многих задач так же используют структуру вложенных циклов, которую и называют сложноциклической. Вложенными могут  быть циклы любых типов : for, while, repeat … until.
Пример :
			…
			for x:=1 to 10 do
				begin
				….
				for  y:=1 to 5 do
					begin
					…
					end;
				…
				end;
			…

Сложноциклические структуры

           i=NI;KI

Операторы тела цикла
1 уровня

            J=NJ;KJ

Операторы тела цикла
2 уровня

          K=NK;KK

Операторы тела цикла
3 уровня

3
2
1
начало

            i=1;N

Bs=0

            j=1;5

Bs=Bs+B

G=Sbg/N

N

Sbg=0
B

Sbg=Sbg+Bs
Bs

G

конец

Задача 5. Подсчитать рейтинг (суммарный балл)
каждого студента по информатике при решении
5 задач. Определить средний балл группы из
N студентов.

Сложноциклические структуры
Var
	 i, j, n: integer;
	b, bs, sbg, g: real;
Begin
writeln (‘Введите количество учеников : ‘);
read (n);
sbg:=0;
for  i:=1  to n do
	begin
	writeln (‘ Введите баллы ‘,i ,-го ученика’);
	bs:=0;
	for  j:=1 to 5 do
		begin
		printf (‘ Количество баллов за решение ‘,j, ‘–й задачи:  ‘);
		read (b);
		bs:=bs+b;
		end;

	writeln (‘----------------------------------------------------------------’);
	writeln (‘ Суммарный балл ‘, i , ‘-го ученика равен ‘ ,bs:6:2);
	writeln (‘----------------------------------------------------------------’);
	sbg:=sbg+bs;
	end;
g:=sbg/n;
writeln (‘*************************************’);
writeln (‘ Средний балл группы равен ‘,g:6:2,’ балла’);
writeln (‘*************************************’);
End.
Решение задач
Задача 6.
Вычислить                  , где xi - i-тый член суммы.
		Var
		s, i, n : integer;
		Begin
		read (n);
		s:=0;
		for i:=1 to n do
			begin
			read (x);
			s:=s+x;
			end;
		write (s);
		End.

Решение задач
Задача 7.
Вычислить знакопеременную сумму
		Var
		 i, p : integer;
		s: real;
		Begin
		s:=0;
		p:=-1;
		for i:=1 to 20 do
			begin
			p:=p*(-1);
			s:=s+p/i;
			end;
		write (s);
		End.

p=p*(-1)

S=0      P=-1
s=s+p/i

   i=1;20

Решение задач
Задача 8.
Вычислить
		Var
		p, i, n : integer;
		Begin
		read (n);
		p:=1;
		for i:=1 to n do
			begin
			read (x);
			p:=p*x;
			end;
		write (p);
		End.

Решение задач
Задача 9.
Вычислить
		Var
		i, j : integer;
		p: real;
		Begin
		p:=1;
		j:=23;
		for i:=1 to 12 do
			begin
			p:=p* i / j;
			j:=j-2;
			end;
		write (p);
		End.

p=p*i/j

J=23
j=j-2

   i=1;12
P=1

Решение задач
Задача 10.
Напишите программу табулирования функции для получения таблицы функции y=x*sin(x) при изменении х на отрезке от - π   до  π с шагом π /5 .
		Var
		x,y: real;
		Begin
		x:=-3.14;
		repeat
			y:=x*sin(x);
			writeln (x:6:2, ‘ | ‘ , y:6:2);
			x:=x+pi/5;
		until x>3.14;
		End.

y=x*sin x

x,y

x=- π; π ; π /5

Решение задач
Задача 11.
Вычислить приближенно площадь фигуры, ограниченной функцией y=x2  и прямой y=25, разбивая отрезок изменения х на 10 частей и суммируя        площади прямоугольников с основаниями равными 1/10 отрезка изменения х, и высотой, определяемой значением функции в середине основания.

y
x
0
y=x2
y=25
y= 25     		 x=±5
y=x2


Т.к. высота определяется в
середине основания прямо-
угольника, тогда x должен
изменяться от -4.5 до 4.5
вследствие того, что h=1
h=|-5 – 5|/10=1
Высота прямоугольника L=25-x2
Площадь прямоугольника
P=h*L=(25-x2)*1
Решение задач
Задача 11.
Вычислить приближенно площадь фигуры, ограниченной функцией y=x2  и прямой y=25, разбивая отрезок изменения х на 10 частей и суммируя        площади прямоугольников с основаниями равными 1/10 отрезка изменения х, и высотой, определяемой значением функции в середине основания.

		Var
			s, x, p : real;
		Begin
		s:=0;
		x:=-4.5;
		while x<=4.5 do
			begin
			p:=25-sqr(x);
			s:=s+p;
			x:=x+1;
			end;
		writeln (s);
		End.

p=(25-x2 )*1

S=0
S=S+p

x=-4.5;4.5;1

Решение задач
Задача 12.
 Одноклеточная амеба каждые 3 часа делится на 2 клетки. Определить  сколько клеток будет через 3,6,9,12, ... , 24 часа.
		Var
		a,t : integer;
		Begin
		t:=0;
		a:=1;
		while t<=24 do
			begin
			t:=t+3;
			a:=a*2;
			writeln (‘через ‘,t,’час. будет ‘,a,’амеб’) ;
			end;
		End.

T=T+3

A=1
A=A*2

    T<=24
T=0

T, A
-
+

Решение задач
Задача 13.
 Начав тренировки, спортсмен в первый день пробежал 5 км. Каждый следующий день он увеличивал дневную норму на 10% от нормы предыдущего дня. Через сколько дней он будет пробегать в день более 20 км. ?
    		Var
			d : word;
			s : real;
		Begin
		d:=1;
		s:=5;
		repeat
			inc (d);
			s:=s*1.1;
		until s>20;
		writeln (d) ;
		End.

D=D+1

S=5
S=S*1.1

    S>20
D=1

D
-
+
Решение задач
Задача 14.
 Определить m – количество трехзначных натуральных чисел, сумма цифр которых равна n(1<n<27). Операции деления (/, div, mod) не использовать.
    		Var
			m, n, i, j, k: byte;
		Begin
		readln (n);
		m:=0;
		for  i:=1 to 9 do
			for j:=0 to 9 do
				for k:=0 to 9 do
					if (i+j+k)=n then
						inc(m);
		writeln (m);
		End.

Решение задач
Задача 15.
 Вычислить
    		Var
			i, j, n : integer;
			p, s : real;
		Begin
		read (n);
		p:=1;
		for i:=1 to n do
			begin
			s:=0;
			for j:= 1 to 2*n do
				s:=s+i/(2*i*i+1);
			p:=p*s;
			end;
		writeln (p) ;
		End.

            i=1;N

S=0

            j=1;2*N

s=s+i/(2i2+1)

N

p=1

p=p*s

P


title: Презентация на тему: Язык программирования QBasic. Циклический алгоритм

text:
Циклический алгоритм
Цикл ДО и ПОКА
Циклический алгоритм

	Циклом называется программа (или часть программы), многократно выполняемая при заданном условии.

	Основные виды циклов: ДО и ПОКА.
Цикл со счетчиком (ДО)
	Если нужно выполнить много раз одно и тоже действие, то на помощь приходит оператор цикла FOR…NEXT.
	Для работы с оператором цикла FOR…NEXT нужно соблюдать некоторые правила:
 рассмотреть повторяющиеся действия и выделить в них равномерно изменяющуюся величину (параметр);
Правила для цикла FOR…NEXT
 дать параметру имя;
определить для параметра начальное значение, конечное значение и шаг изменения, т.е. насколько за один раз увеличивается (или уменьшается) параметр.

Правила для цикла FOR…NEXT
Написать оператор цикла, состоящий из трех частей:
	Заголовок цикла
FOR параметр=нач_значение TO кон_значение STEP шаг
	Тело цикла
	В теле цикла указываются один или несколько операторов, предназначенных для повторяющихся действий, причем вместо конкретных значений изменяющейся величины указывают имя параметра.
	NEXT параметр
Пример с мишенью
Линейный алгоритм
	SCREEN 12:CLS
	CIRCLE (320, 240), 20, 15
	CIRCLE (320, 240), 40, 15
	CIRCLE (320, 240), 60, 15
	CIRCLE (320, 240), 80, 15
	CIRCLE (320, 240), 100, 15
	END
	В результате работы этой программы на экран будет выведена мишень, состоящая из пяти колец.

Пример с мишенью
Решение той же задачи, но с использованием цикла.
	     SCREEN 12:CLS
	    FOR R = 20 TO 100 STEP 20			   CIRCLE (320, 240), R, 15
	    NEXT R
	    END

Задача
	Написать программу, подсчитывающую значения функции из промежутка [-5 ; 1] с шагом 0,1, где f(x)=x3+1.
Решение.
Для решения задачи используем цикл FOR…NEXT. Постоянно изменяющаяся величина – значение аргумента функции.
Имя параметра цикла – X.

Определить начальное значение параметра – (-5); конечное значение параметра – 1; шаг изменения – 0,1.
Приступаем к составлению программы:
	CLS
	FOR X = –5 TO 1 STEP .1
		Y=X^3+1
		PRINT "f(x)= "Y " при X= "X
	NEXT X
	END

Еще задача.

	Написать программу проверки таблицы умножения, содержащую 5 вопросов и выставляющую оценку.
Решение
RANDOMIZE TIMER
FOR  Х=1 TO 5
   B=INT(RND*10+1)
   С=INT(RND*10+1)
   PRINT "СКОЛЬКО БУДЕТ" B "*" C
   INPUT S
   IF B*C<>S THEN N=N+1
NEXT
L=5-N
PRINT "Ваша оценка:" L "Вы сделали" N "ошибок"
END
Цикл ПОКА
	Цикл WHILE - WEND позволяет сочетать свойства условного оператора и оператора цикла. С их помощью можно выполнять повторяющиеся действия с заранее неизвестным количеством повторений.
	WHILE <условие>
		...…….
		...…….
		...…….  	 ТЕЛО ЦИКЛА
		..……..
	WEND

С начала идет оператор WHILE с условием, при котором цикл выполняется.
Ключевое слово WEND аналогично по своему назначению слову NEXT
Цикл ПОКА
	В условии используются логические выражения, например: A=B, A>=B+1, A<B, A<>B и т.д.
	Значения переменных могут быть подсчитаны до цикла, почти всегда значения переменных изменяются в теле цикла.
	Работа такого цикла начинается с проверки условия на истинность или ложность, записанного в WHILE. Если условие истинно (ответ: Да), то начинается выполнение тела цикла, после чего оператор WEND вновь возвращает нас на начало цикла WHILE. Если в теле цикла происходят какие-то изменения, влияющие на результат проверки условия, то может наступить момент, когда это условие становится ложным, и управление из WHILE будет передано на оператор, следующий за WEND. В противном  случае цикл будет бесконечным.

Пример
		CLS
		WHILE WORD$<>”TERMINATOR”
			INPUT”ВВЕДИТЕ ПАРОЛЬ”; WORD$
		WEND
		?”ПРАВИЛЬНО! ВЫ ДОПУЩЕНЫ К 			ПРОДОЛЖЕНИЮ РАБОТЫ”
		END

ДА

НЕТ

Задача

	Написать программу игры, в которой пользователю предлагается угадать задуманное ЭВМ число из промежутка [1;100]. За каждый неправильный ответ начисляется по три штрафных очка.
Решение
CLS
RANDOMIZE TIMER
X=INT(RND*100+1)
K=0
INPUT "Отгадайте задуманное число от 1 до 100"; N
WHILE X<>N
	IF N>X THEN
          		PRINT "Ваше число больше задуманного"
       	ELSE
          		PRINT "Ваше число меньше задуманного"
	END IF
	K=K+3
	INPUT "Введите новое число"; N
WEND
PRINT "Вы угадали число"
PRINT "Сумма штрафных очков равна" K
END
Домашняя работа

	Вычислить сумму чётных чисел, не равных нулю, из промежутка [a;b] и назвать их количество.


title: Презентация на тему: Язык программирования QBasic. Блок выбора по ключу

text:
Блок выбора по ключу
	Для организации меню, т.е. выбора из нескольких возможностей, применяется оператор выбора, который позволяет, в зависимости от значения переменной, делать те или иные действия.
	SELECT CASE выражение для проверки
	CASE <условие>
	  операторы 1
	CASE <условие>
	  операторы 2
	CASE ELSE
	  операторы 3
	END SELECT

SELECT CASE ... END SELECT
Выражение для проверки - любое числовое или символьное выражение.

	<Условие> - одно или несколько логических выражений, разделенными запятыми. Параметры <условие> - списки выражений, соответствующие своему ключевому слову CASE и имеющее одну из трех следующих форм:
	1)    выражение [,выражение]
	2)   выражение TO выражение
	3)   IS оператор_отношения выражение

SELECT CASE ... END SELECT
	Параметр выражение - любые числовые или символьные выражения, тип которого должен совпадать с типом проверяемого выражения.
	Если задан диапазон величин для сравнения, то используется вторая форма с ключевым словом TO, причем меньшая величина должна стоять слева от слова TO.
	Знак отношения – один из знаков отношения <, <=, >, >=, <> , =.
	Операторы 1, операторы 2, ... - блоки, которые могут содержать любое число операторов.

SELECT CASE ... END SELECT
Задача 1. Дано число. Сообщить отрицательное оно или нет.
 	CLS
	INPUT "Введите число",NUMBER
	SELECT CASE NUMBER
	  CASE IS < 0
		PRINT "Вы ввели отрицательное число"
	  CASE IS > 0
		PRINT "Вы ввели положительное число"
	  CASE ELSE
		PRINT "Вы ввели ноль"
	END SELECT
	END

SELECT CASE ... END SELECT
Еще пример.
    CLS
    INPUT “Введите уровень риска (1-5)”; RISK
    SELECT CASE  RICK
    CASE  IS>=5
        PRINT “Максимальный риск, шансов на возвращение практически нет”
        PRINT” Пишите завещание”
    CASE 2 TO 4
        PRINT “Высокий риск, шансов на возвращение немного,”
        PRINT “проверьте снаряжение, оружие и припасы!!!”
    CASE  1
        PRINT “Риск отсутствует, возврат гарантирован. ”
        PRINT “В вас отсутствует дух авантюризма, это слишком скучно.”
END SELECT
END

SELECT CASE ... END SELECT
Еще пример.
    CLS
    INPUT “Введите номер недели”; N
    SELECT CASE  N
    CASE  1
        PRINT “Понедельник”
CASE 2
        PRINT “Вторник”
CASE  3
        PRINT “Среда”
………………………
        END SELECT
END

SELECT CASE ... END SELECT

Задание выполняются на отдельных листках!!!

По введенной цифровой оценке, выставите ученику отметку
(5 – «отлично», 4 – «хорошо» и т.д.).

Домашнее задание на оценку «3»

Задание выполняются на отдельных листках!!!

По введенному номеру месяца определить его название и время года. Надо использовать  два CASE: один для определения названия месяца, другой – для времени года.

Домашнее задание на оценку «4»

Задание выполняются на отдельных листках!!!

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

Домашнее задание на оценку «5»


title: Презентация на тему: Язык программирования Pascal. Линейные алгоритмы

text:
Язык программирования Pascal Линейные алгоритмы
А. Жидков
Выражение
Выражение – совокупность операндов и операций.
Операнды – константы, переменные, функции.
Арифметические операции –
бинарные операции + - * / , (* - умножение / - деление)
унарные операции + и - .
бинарные операции div и mod определены только для целых чисел, переменных типа integer.
div – деление нацело                   5 div 2 = 2
mod – остаток от деления         43 mod 10 = 3
Приоритет операций
Приоритет - порядок выполнения операций в выражении.
Операции, имеющие одинаковый приоритет, выполняются слева направо.
Для изменения порядка операций используют скобки (), скобки обладают наивысшим приоритетом.

Таблица приоритетов операций
     вычисление функций                 0
not                                               1 (высший)
*, /, div, mod, and,                      2
+, -, or, xor                                  3
=, <>, <, >, <=, >=, in                   4 (низший)
Правила записи выражений
Все записи в одну строку.
Знаки умножения опускать нельзя.
Главный критерий правильности записи выражения - совпадение порядка выполнения операций с принятым в математике.
Арифметические выражения
Какие из приведенных выражений правильно записаны на языке ПАСКАЛЬ?
1    (A+B+C)/2
2    A^ 2C
3    SIN(X+2)*2
4    2COS(A+2)-A
5    X^.Y+Z-5.1
6    (X+Y*3.2-A)B
7    X+Y/(Z*Z)
8    X*X+Y*Y=R*R
9    SQRT(A*2+B*B)
1  3  7  9

Оператор присваивания :=
Выполняет изменение значения переменной
Синтаксис
<имя переменной> := <выражение>;
Семантика
Вычисляется <выражение> в правой части,
Результат записывается в <переменную> .
Ограничение. Тип выражения должен быть совместим по присваиванию с переменной. Например:
Одинаковые типы совместимы.
Выражение типа integer можно присвоить переменной типа real.
 Обратное неверно.

Пример использования оператора присваивания.

a := (3 + 5) * 8;
b := a + 2;
Оператор присваивания
Среди приведенных выражений указать правильные операторы присваивания
1   X:=X+5 			5   X+2:=Y
2   Y:=7 				6   K+5:=X+Y
3   WRITE(“C=”,C:6:2) 	7   WRITE(“A+B”)
4   Z:=SQR(Z)+5.3*X 	8   X:=X*X+A*X+B
1   2    4    8
Оператор присваивания
Какое значение получит переменная Y после выполнения следующей программы?
Х:= 5;
A:= 2;
В:= -1;
У:= A*X+B;
9
Оператор присваивания
Какое значение получит переменная Y после выполнения следующей
программы?
А:=12;
В:=14;
А:=10;
В:=В+5;
У:=А+В;
END.
29
Оператор присваивания
Какое значение получит переменная X после выполнения следующей программы?
A:= 3;
B:= 4;
A:=(A+B)/2+A*2;
X:=SQRT(A+B*B-0.5);
END.
5
Оператор присваивания
Какое значение получит переменная S после выполнения программы?
A:=5;
B:=6;
S:=A*B;
A:=-1;
B:=3;
S:=S+A*B
27
Оператор ввода read, readln
Синтаксис
read(<список переменных>);
readln(<список переменных>);
Семантика
Происходит считывание данных с клавиатуры и запись их в переменные из <списка переменных> по порядку.
Вводить данные нужно через пробел или по нажатию <Enter>.
Программа продолжится, когда будут считаны все данные.
Readln – вызывает переход к следущей строке.
С процедурой ввода связан ряд ошибок (например, если должно быть получено целое число, а вводится 'ABC').
Пример:      read (a,b)
                   readln (x,y,z)
Вывод write, writeln.
Вывод в окно вывода
Синтаксис:
Write (<список выражений>);
writeln(<список выражений>);
Параметры в списке перечисляются через запятую.
Семантика:
Вычисление значений выражений.
Вывод значений.
Процедура writeln после вывода своих параметров осуществляет переход на следующую строку.
Пустой writeln вызывает пропуск строки.
Вывод write writeln. Форматы вывода.
В процедурах вывода write и writeln  можно указать формат вывода, в виде :m:n, где m и n - целые значения. .
:m - ширина поля вывода.
:n  - количество знаков после десятичной точки
Если длина выводимого значения меньше ширины поля вывода, то выводимый текст слева дополняется пробелами. Выравнивание по правому краю.
Если длина выводимого значения больше ширины поля вывода, то формат игнорируется.
Значения с форматом вывода вида :m будутпредставлены в экспоненциальной форме.

Например, если a, b - целые переменные, то при выполнении операторов
     a:=-2437; b:=13555;writeln(a:6,'Привет!':9);writeln(b:1);
в окно вывода будет выведен следующий текст:

 -2437  Привет!13555
Например:
     writeln(-14.859:10:3); // ___-14.859writeln(-14.859:10:5); // _-14.85900writeln(-14.859:10:2); // ____-14.86writeln(-14.859:10:0); // _______-15writeln(-14.859:10:7); // -14.8590000writeln((0,1):10:1);   // _(0.0,1.0) (здесь символом _ изображены пробелы).

Оператор write, writeln
1 write (' A=',A:5:2) 	5 write(x:6:3,f:7:4)
2 write(a,b,c) 		6 write(s,d)
3 writeln 			7 write(‘s= ‘, s:6:3, ‘ ‘,’w=’,w:8:4)
4 write (‘ x=', x: 10:5)         8 write(sqrt(25)+5)

1. Какие из операторов вывода, приведенные в таблице, выводят только значения переменных?
2. Какие из приведенных операторов вывода выводят имена переменных и их значения?
3. Какой оператор определяет пропуск строки?
2 5 6
1  4 7
Примеры использования :=
Program swap1;
var x, y,v: integer;
begin
read(x,y);
writeln(‘x=‘,x, ' y=', y);
v := x;
x := y;
y := v;
writeln(‘x=‘,x, ' y=', y); end.
Program swap2;
var x, y: integer;
begin
read(x, y);
writeln(‘x=‘,x, ' y=', y);
x := x + y;
y := x - y;
x := x - y;
writeln(‘x=‘,x, ' y=', y); end.
Пример 1. Перемена местами двух целых значений. Дано: x, y;
Задания на линейные алгоритмы
Разработать математическую модель. Составить блок-схему алгоритма и тест. Написать программу на языке Pascal.
Задача 1. Даны  катеты  прямоугольного  треугольника  a и  b. Найти его  гипотенузу c, периметр P и площадь S. (begin12)
Задача 2. Найти длину окружности L и площадь круга S заданного  радиуса R.(L=2πR; S= πR2; считать, что π=3,14). (begin 7)
Задача 3. Скорость первого автомобиля V1 км/ч, второго — V2 км /ч, расстояние между  ними  S км. Определить расстояние между ними  через T часов, если автомобили удаляются друг  от друга. (begin 36)
Задача 4. (begin 20) Найти  расстояние  между   двумя  точками  с  заданными  координатами (x1, y1) и (x2, y2) на плоскости. Расстояние вычисляется по формуле
Задача 5. (begin 21) Даны координаты трех вершин треугольника: (x1, y1),(x2, y2), (x3, y3). Найти его периметр P и площадь S. Для нахождения площади треугольника со сторонами a, b, c использовать формулу Герона
73. Написать программу, которая преобразует введенное с клавиатуры дробное число в денежный формат. Например, число 12.5 должно быть преобразовано к виду 12 руб. 50 коп.
Операции div и mod
ВНИМАНИЕ!!! Операции div и mod определены только для данных типа integer
Целочисленное деление x div y = x / y, округленное до ближайшего целого по направлению к нулю.
Остаток от целочисленного деления x mod y = x - (x div y) * y.
Пример использования 1. Для определения четности числа:
    x mod 2 = 0 <-> x — четное         x mod 2 <> 0 <-> x — нечетное
    2. Для операций с цифрами числа
        Сумма цифр целого трехзначного числа А.
         s:=a div 100+a mod 100 div 10 +a mod 10;
Задачи div и mod
Задачи div и mod
Задачи div и mod


title: Презентация на тему: Язык программирования QBasic. Операторы DATA и READ

text:
Операторы DATA и READ.Метки.

Операторы DATA и READ
	Для ввода большого количества переменных и их значений  применяются операторы DATA и READ. При использовании этих  операторов учитывается следующие:
В операторе DATA перечисляются, через запятую, все значения переменных.
В операторе READ перечисляются, через запятую, все соответствующие имена переменных.
Операторы должны  иметь одинаковое количество  переменных и их значений.
Их расположение в программе произвольно.
Операторы могут находиться в любом месте программы, а также могут использоваться несколько раз.

Операторы DATA и READ
Задача. Тепловоз массой 130 т, приближается со скоростью 2 м/с, к неподвижному составу массой 1170 т. С какой скоростью будет двигаться состав после сцепления с тепловозом.
 	Для решения задачи надо, составить формулу для подсчета скорости состава. Ее можно вывести из формулы m1v1+m2v2=m3v3, отсюда
v3 =                                 , где

	m1 - масса тепловоза;
	v1 - его скорость;
	m2 - масса состава;
	v2 - скорость состава;
          	m3 - масса тепловоза и состава (m3=m1+m2);
	v3 - скорость состава после сцепления с тепловозом.

Операторы DATA и READ
	Переведем данные задачи в систему СИ.
	   m1 = 130 т = 130000 кг
	   m2 = 1170 т = 1170000 кг
	   v1 = 2 м/с
	   v2 = 0 м/с
	Составим программу для решения этой задачи без операторов DATA и READ и с этими операторами.
       CLS                                           			CLS
      M1 = 130000                               			DATA 130000,2,1170000,0,м/с,V3=
      V1 = 2                                         			READ M1,V1,M2,V2,A$,B$
      M2 = 1170000                             			M3=M1+M2
      V2 = 0                                         			V3=(M1*V1+M2*V2)/M3
      M3 = M1+M2                              			PRINT "Скорость состава после сцепления
      V3 = (M1*V1+M2*V2)/M3         			с тепловозом" B$;V3;A$
      PRINT "Скорость состава после сцепления 	END
      с тепловозом равна" V3 "м/с"
      END

Метки
	Прежние версии языка BASIC (GWBASIC) требует, чтобы каждая программы начиналась с номера. В QBASIC это вовсе не обязательно, но вы вольны нумеровать   строки программы, если считаете, что это вам помогает в работе.
 	В QBASIC вы имеете возможность отмечать строки также с помощью меток. Если в вашей программе предусмотрена передача управления оператору, находящемуся в другой части программы, то этому оператору можно дать некоторое дополнительное имя - метку. Можно передавать управление и по номеру строки. Метки могут содержать некоторую дополнительную информацию. Имя метки может содержать от 1 до 40 символов, среди которых не должно быть пробелов. Метка должна оканчиваться двоеточием.
 	Например,
	A:
	Begin:

	Помните, не каждая строка программы нуждается в метке!


title: Презентация на тему: Язык программирования QBasic.Вложенные циклы

text:
Вложенные циклыЦикл DO … LOOP
Вложенные циклы
	Есть задачи когда изменяются несколько независимых величин.
	Приведем пример. Напишем программу заполнения экрана точками с расстоянием между ними по горизонтали и вертикали 10.
	SCREEN 12
	FOR X = 0  TO  640  STEP  10
	  FOR  Y = 0  TO  480  STEP  10
		PSET (X, Y), 4
	  NEXT   Y
	NEXT  X

Вложенные циклы
	Циклы должны быть вложены друг в друга, как матрешки. Параметры, упоминаемые в заголовках циклов, в их окончаниях должны быть перечислены в обратном порядке.
FOR  I= ...
  FOR  J = …
	………
	………	      Тело цикла
	………
  NEXT  J
 NEXT  I

Внутренний цикл

Внешний цикл
Задача. У гусей и кроликов вместе 64 лапы. Сколько могло быть кроликов и гусей (указать все возможные сочетания).
 Решение.
CLS
FOR I=1 TO 64
FOR J=1 TO 64
	IF  I*2+J*4=64 THEN PRINT  “Гусей =“; I, ”Кроликов =”;J
Next J,I
END
Вложенные циклы
Результат работы программы

DO … LOOP
	Оператор DO …LOOP чем-то похож на оператор  WHILE … WEND, но возможности его применения несколько шире – проверяемое и условие может быть использовано не только в начале оператора, но и в конце.
	Поэтому возможно четыре различные формы написания оператора:
DO  UNTIL <условие>
		тело_цикла
	LOOP

DO  WHILE <условие>
		тело_цикла
	LOOP

DO … LOOP
DO
		тело_цикла
	LOOP  UNTIL <условие>
DO
		тело_цикла
	LOOP  WHILE <условие>
	Если используется ключевое слово UNTIL, цикл будет выполняться, только когда условие имеет значение «ложь».
	При указании ключевого WHILE  цикл будет выполняться до тех пор, пока условие будет иметь значение «истина».
DO … LOOP
	Размещение условий в начале или конце цикла приводит к разным результатам: при проверке условия в конце оператора цикла конструкции, составляющие его тело, будут исполняться хотя бы один раз, в то время как при проверке условия в начале возможен вариант, что цикл исполняться вообще не будет. Например,

K=0
?”Значение К в начале цикла равно”;K
DO WHILE K<10
	K=K+1
LOOP
? “Значение К в конце цикла равно”;K

DO … LOOP
Вариант 1
	Написать программу с циклом DO…LOOP WHILE, которая выводит на экран расположенные по диагонали экран круги, закрашенные цветами с 1 по 6. Параметр цикла – номер цвета.
Вариант 2
	Написать программу с циклом DO…LOOP UNTIL, которая выводит на экран расположенные по диагонали экран круги, закрашенные цветами с 1 по 6. Параметр цикла – номер цвета.


title: Презентация на тему: Язык программирования Pascal. Основные понятия

text:
xor
with
while
var
uses
until
unit
type
to
then
string
sizeof
shr
shl
set
repeat
record
public
protected
property
program
procedure
private
or
of
not
mod
is
initialization
inherited
in
if
function
forward
for
finalization
file
externalsync
external
exit
end
else
downto
do
div
destructor
continue
constructor
const
class
case
break
begin
as
array
and
2 3 6 8
3                 7         9
2        5       9
Random
Frac(x)
Int(x)
Power(x,y)
Arctan(x)
Exp(x)
Ln(x)
Cos(x)
Sin(x)
Sqrt(x)
Sqr(x)
Abs(x)


title: Презентация на тему: Язык программирования Pascal. Массивы

text:
B
9
8
7
6
5
4
3
2
1
7
5.0
-3
45.1
0.02
-9.1
-1.3
0.9
1.2
real
real
real
real
real
real
real
real
real
A[9]
A[8]
A[7]
A[6]
A[5]
A[4]
A[3]
A[2]
A[1]
A
-99
56
-8
1
-6
4
0
45
67
13
34
3
21
34
45
12
78
2
9
-7
6
4
1
1
5
4
3
2
1
var A : array[ 1 .. 5 ] of integer ;
Const N=12;
var A: array[1..  N] of integer;
a[1] =
a[2] =
a[3] =
a[4] =
a[5] =
5
12
34
56
13
a[1] =
a[2] =
a[3] =
a[4] =
a[5] =
10
24
68
112
26
10  24  68 112  26


title: Презентация на тему: Язык программирования Pascal. Процедуры и функции

text:
function dline (var x1,y1,x2,y2:real):real;
begin
dline:=sqrt(sqr(x2-x1)+sqr(y2-y1));
end;
function geron (var a,b,c:real):real;
 var p:real;
 begin
 p:=(a+b+c)/2;
 geron:=sqrt(abs(p*(p-a)*(p-b)*(p-c)));
 end;
begin
 input (xa,ya,xb,yb,xc,yc);
 input (xd,yd,xe,ye,xf,yf);
 a:=dline(xb,yb,xc,yc);
 b:=dline(xa,ya,xc,yc);
 c:=dline(xb,yb,xa,ya);
 d:=dline(xe,ye,xf,yf);
 e:=dline(xd,yd,xf,yf);
 f:=dline(xd,yd,xe,ye);
 Sabc:=geron(a,b,c);
 Sdef:=geron(d,e,f);
 writeln ('Sabc=',Sabc,'Sdef=',Sdef);
 Smax:=Sabc;
 if Sdef>Sabc then Smax:=Sdef;
 writeln ('Smax=',Smax);
 end.
PROGRAM Trapec;
Const N=3;
var i:integer;
a,b,h,s: array[1..N] of real;
Procedure STR(a, b, h: real ; var s: real);
begin
s:=(a+b)/2*h;
end;
BEGIN
for i:=1 to N Do
begin
writeln('a=',' b=',' h=');
readln(a[i],b[i],h[i]);
end;
for i:=1 to N Do
begin
STR (a[i],b[i],h[i],s[i]);
Writeln (' a=', a[i]:6:2,' b=', b[i]:6:2,' h=', h[i]:6:2);
Writeln ( ' s=', s [i]:7:3);
end;
END.
Sabc<Sdef
Smax=Sdef
Smax=Sabc
A
B
C
D
E
F