Введение в программирование. Язык Pascal

Свойство алгоритма, показывающее то, что команды алгоритма входят в систему команд исполнителя, называется.
Варианты ответов
- Понятность алгоритма.
- Конечность алгоритма.
- Дискретность алгоритма.
- Однозначность алгоритма.
Вопрос 3
Существуют три основных типа величин в программировании. Их точное название — это.
Варианты ответов
- Буквенный, цифровой, логический.
- Звуковой, графический, буквенный.
- Большой, маленький, средний.
- Числовой, символьный, логический.
Вопрос 4
Переменная в программировании — это.
Варианты ответов
- Величина, имеющая имя и возможность принимать разные значения в программе.
- Величина, имеющая имя и только одно значение.
- Величина, не имеющая ни имени, ни значения.
Вопрос 5
Раздел описания переменных в программе начинается со слова.
Варианты ответов
- Const
- Var
- Type
- Set
Вопрос 6
В программе используется целочисленная переменная x. Выберите ПРАВИЛЬНОЕ описание этой переменной:
Варианты ответов
- Var x:Real;
- Var x:String;
- Var x:integer
- Var x:integer;
Вопрос 7
Дана строчка:
Var i,j:Real;
Какую функцию она выполняет?
Варианты ответов
- Описывает две переменные целого типа.
- Описывает две константы целого типа.
- Описывает две переменные вещественного типа (не целые числа).
- Описывает две константы вещественного типа.
Вопрос 8
Оператор присваивания в программе на Pascal:
Варианты ответов
- :=
- =
- -=
- 🙂
Вопрос 9
Дана команда:
writeln('Это моя программа');
Что она выполняет?
Варианты ответов
- Запрашивает ввод слов «Это моя программа».
- Выводит на экран строчку «Это моя программа».
- Выводит на экран значение переменной.
- Производит вычисления.
Вопрос 10
Дан фрагмент программы:
a:=8;
b:=16;
c:=b/a;
Writeln(c);
Что происходит при его выполнении?
Варианты ответов
- Программа запрашивает ввод с клавиатуры значения переменной c.
- На экран выводится буква «с».
- Ничего не происходит, т.к. в написании команд есть ошибка.
- На экран выводится число 2.
Вопрос 11
Варианты ответов
- Выводит на экран значение переменной b.
- Приостанавливает программу и запрашивает ввод значения b с клавиатуры.
- Выводит на экран букву b.
Вопрос 12
Дана программа:
Uses Crt;
var a:integer;
b:real;
begin
b:=1.5;
a:=b;
end.
В какой строчке ошибка?
Варианты ответов
- В первой.
- Во второй.
- В третьей
- В четвертой.
- В пятой
- В шестой.
- В седьмой.
Вопрос 13
Переменная k описана как целочисленная. Допустима ли в программе команда:
k:=6/4;
Варианты ответов
- Да
- Нет
Вопрос 14
Выберите ВЕРНОЕ утверждение (их может быть одно или несколько):
Варианты ответов
- Если в программе используется переменная, она должна быть описана в разделе Var.
- Переменной целого типа можно присвоить значение вещественного типа.
- После begin необходима точка с запятой.
- Оператор вывода информации (текста или значения переменной) — Write или Writeln.
Вопрос 15
Дано несколько команд языка Pascal, осуществляющие вывод на экран.
1) Writeln(a);
2) Writeln('x равно:',x);
3) Writeln('Результат равен , Res);
4) Writeln('Привет!');
Отметьте правильно написанные команды:
Варианты ответов
- Первая.
- Вторая.
- Третья.
- Четвертая.
Вопрос 16
В разделе описания программы описаны две переменных:
В самой программе переменной m присваивается значение квадратного корня из 16.
Выберите ПРАВИЛЬНО написанные варианты команд(их может быть один или несколько):
Дана строчка var i j real какую функцию она выполняет
В предыдущей теме мы познакомились со структурой программы на языке Pascal, научились описывать данные, рассмотрели оператор присваивания. Этого достаточно для того, чтобы записать программу преобразования данных. Но результат этих преобразований нам виден не будет.
Для вывода данных из оперативной памяти на экран монитора используется оператор вывода write :
Здесь в круглых скобках помещается список вывода — список выражений, значения которых выводятся на экран. Это могут быть числовые, символьные и логические выражения, в том числе переменные и константы.
Произвольный набор символов, заключённый в апострофы, считается строковой константой. Строковая константа может содержать любые символы, набираемые на клавиатуре.
Пример
Оператор write (‘s= ‘, s) выполняется так:
- на экран выводятся символы, заключённые в апострофы: s=
- на экран выводится значение переменной, хранящееся в ячейке оперативной памяти с именем s .
Если значение переменной s равно 15 и она имеет целочисленный тип, то на экране появится: s=15
Если значение переменной s равно 15, но она имеет вещественный тип, то на экране появится: s=1.5Е+01
При выполнении оператора вывода все элементы списка вывода печатаются непосредственно друг за другом. Так, в результате работы оператора write (1, 20, 300) на экран будет выведена последовательность цифр 120300, которая будет восприниматься нами как число 120300, а не как три отдельные числовые константы. Сделать выводимые данные более доступными для восприятия можно разными способами:
| Вариант организации вывода | Оператор вывода | Результат |
|---|---|---|
| Добавить разделители — запятые | write (1, ‘,’, 20, ‘,’, 300) | 1,20,300 |
| Добавить разделители — пробелы | write (1, ‘ ‘, 20, ‘ ‘, 300) | 1 20 300 |
| Указать формат вывода | write (1:3, 20:4, 300:5) | 1 20 300 |
Формат вывода — это указываемое после двоеточия целое число, определяющее, сколько позиций на экране должна занимать выводимая величина. Если цифр в числе меньше, чем зарезервированных под него позиций на экране, то свободные позиции дополняются пробелами слева от числа. Если указанное в формате вывода после двоеточия число меньше, чем необходимо, то оно автоматически будет увеличено до минимально необходимого.
Для вывода вещественного числа в списке вывода для каждого выражения указываются два параметра: 1) общее количество позиций, отводимых под число; 2) количество позиций в дробной части числа:
| Оператор вывода | Результат выполнения оператора |
|---|---|
| write (‘s=’, s:2:0); | s=15 |
| write (‘s=’, s:3:1); | s= 15.0 |
| write (‘s=’, s:5:1); | s= 15.0 |
При выполнении нового оператора write вывод продолжается в той же строке. Чтобы осуществить переход к новой строке, используется оператор writeln . Других различий между операторами write и writeln нет.
Первая программа на языке Pascal
Пользуясь рассмотренными операторами, составим программу, вычисляющую длину окружности и площадь круга радиуса 5,4 см.
Исходным данным в этой задаче является радиус: r = 5,4 см. Результатом работы программы должны быть величины c — длина окружности и s — площадь круга. c, s и r — величины вещественного типа.
Исходные данные и результаты связаны соотношениями, известными из курса математики: c=2πr, s = πr 2 . Программа, реализующая вычисления по этим формулам, будет иметь вид:
Эта программа верна и решает поставленную задачу. Запустив её на выполнение, вы получите следующий результат:

Первая программа
И всё-таки составленная нами программа имеет существенный недостаток: она находит длину окружности и площадь круга для единственного значения радиуса (5,4 см).
Для того чтобы вычислить длину окружности и площадь круга для другого значения радиуса, потребуется вносить изменения непосредственно в текст программы, а именно изменять оператор присваивания. Внесение изменений в существующую программу, по меньшей мере, не всегда удобно (например, когда программа большая и операторов присваивания много). Ниже вы познакомитесь с оператором, позволяющим вводить исходные данные в процессе работы программы, не прибегая к изменению текста программы.
Ввод данных с клавиатуры
Для ввода в оперативную память значений переменных используется оператор ввода read :
При выполнении оператора read компьютер переходит в режим ожидания данных: пользователь должен ввести данные с клавиатуры и нажать клавишу Enter . Несколько значений переменных числовых типов могут вводиться через пробел или через запятую. При вводе символьных переменных пробел и запятая воспринимаются как символы, поэтому ставить их нельзя.
Первое введённое пользователем значение переменной помещается в ячейку памяти, имя которой расположено первым в списке ввода, и т.д. Поэтому типы вводимых значений (входного потока) должны соответствовать типам переменных, указанных в разделе описания переменных.
Пример
var i, j: integer; x: real; a: char;
Присвоим переменным i, j, x, а значения 1, 0, 2.5 и ‘А’. Для этого воспользуемся оператором
и организуем входной поток одним из следующих способов:

Пример ввода
Здесь мы не только использовали различные разделители (пробел, запятая), но и представляли входной поток в виде одной, двух и четырёх строк.
Для ввода данных с клавиатуры можно также использовать оператор readln . Отличие состоит в том, что после выполнения readln осуществляется автоматический переход на новую строку входного потока, даже если в текущей строке остались невведённые символы. Таким образом, readln позволяет считать лишь начальную часть введённой пользователем строки и, проигнорировав её окончание, перейти к следующей строке.
Усовершенствуем программу p_1, организовав в ней ввод данных с помощью оператора read . А чтобы пользователь знал, для чего предназначена программа, и понимал, какое именно действие ожидает от него компьютер, выведем соответствующие текстовые сообщения с помощью оператора writeln :

Результат работы усовершенствованной программы
Теперь наша программа может вычислить длину окружности и площадь круга для любого значения r. Иначе говоря, она решает не единичную задачу, а целый класс задач. Кроме того, в программе понятно и удобно организован ввод исходных данных и вывод получаемых результатов. Это обеспечивает дружественность пользовательского интерфейса.
САМОЕ ГЛАВНОЕ
Для ввода в оперативную память значений переменных используются операторы ввода read и readln .
Для вывода данных из оперативной памяти на экран монитора используются операторы вывода write и writeln .
Ввод исходных данных и вывод результатов должны быть организованы понятно и удобно; это обеспечивает дружественность пользовательского интерфейса.
Организация ввода и вывода данных
Организация ввода и вывода данных
- оператор вывода print
- формат вывода
- оператор ввода input
Вывод данных
В предыдущей теме мы познакомились со структурой программы на языке Python, научились описывать данные, рассмотрели оператор присваивания. Этого достаточно для того, чтобы записать программу преобразования данных. Но результат этих преобразований нам виден не будет.
Для вывода данных из оперативной памяти на экран монитора используется оператор вывода print :
Здесь в круглых скобках помещается список вывода — список выражений, значения которых выводятся на экран. Это могут быть числовые, символьные и логические выражения, в том числе переменные и константы.
Произвольный набор символов, заключённый в апострофы, считается строковой константой. Строковая константа может содержать любые символы, набираемые на клавиатуре.
Пример
Оператор print (‘s= ‘, s) выполняется так:
- на экран выводятся символы, заключённые в апострофы: s=
- на экран выводится значение переменной, хранящееся в ячейке оперативной памяти с именем s .
Если значение переменной s равно 15, и она имеет целочисленный тип, то на экране появится: s=15
Оператор print вставляет между выводимыми значениями так называемый разделитель (или сепаратор, англ. separator). По умолчанию разделитель — это пробел, но мы можем его изменить, указав новый разделитель после слова sep
| Вариант организации вывода | Оператор вывода | Результат |
|---|---|---|
| По умолчанию | print (1, 20, 300) | 1 20 300 |
| Убрать разделители — пробелы | print (1, 20, 300, sep=») | 120300 |
| Добавить другой разделитель | print (1, 20, 300, sep=’,’) | 1,20,300 |
Формат вывода — это указываемое после двоеточия целое число, определяющее, сколько позиций на экране должна занимать выводимая величина. Если цифр в числе меньше, чем зарезервированных под него позиций на экране, то свободные позиции дополняются пробелами слева от числа. Если указанное в формате вывода после двоеточия число меньше, чем необходимо, то оно автоматически будет увеличено до минимально необходимого.
Для вывода вещественного числа в списке вывода для каждого выражения указываются два параметра: 1) общее количество позиций, отводимых под число; 2) количество позиций в дробной части числа: (◦ — обозначение пробела)
| Оператор вывода | Результат выполнения оператора |
|---|---|
| a = 4 print (‘a=’, ‘<:5d><:5d>‘.format(a, a * a)) |
a= ◦◦◦◦4◦◦◦16 |
| a = 1 / 3 b = 1 / 9 print («<:7.3f><:7.3f>«.format(a, b)) |
◦◦0.333◦◦0.111 |
| a = 1 / 3 b = 1 / 9 print (‘<:10.3e><:10.3e>‘.format(a, b)) |
◦3.333e-0.1◦◦1.111e-01 |
При выполнении нового оператора print вывод продолжается в новой строке. Чтобы убрать переход к новой строке, используется параметр end .
Первая программа на языке Python
Пользуясь рассмотренными операторами, составим программу, вычисляющую длину окружности и площадь круга радиуса 5,4 см.
Исходным данным в этой задаче является радиус: r = 5,4 см. Результатом работы программы должны быть величины c — длина окружности и s — площадь круга. c, s и r — величины вещественного типа.
Исходные данные и результаты связаны соотношениями, известными из курса математики: c=2πr, s = πr 2 . Программа, реализующая вычисления по этим формулам, будет иметь вид:
Эта программа верна и решает поставленную задачу. Запустив её на выполнение, вы получите следующий результат:

Первая программа
Вывод по формату:

Первая программа с выводом по формату
И всё-таки составленная нами программа имеет существенный недостаток: она находит длину окружности и площадь круга для единственного значения радиуса (5,4 см).
Для того чтобы вычислить длину окружности и площадь круга для другого значения радиуса, потребуется вносить изменения непосредственно в текст программы, а именно изменять оператор присваивания. Внесение изменений в существующую программу, по меньшей мере, не всегда удобно (например, когда программа большая и операторов присваивания много). Ниже вы познакомитесь с оператором, позволяющим вводить исходные данные в процессе работы программы, не прибегая к изменению текста программы.
Ввод данных с клавиатуры
Для ввода в оперативную память значений переменных используется оператор ввода input . Каждая функция input() захватывает только ОДНУ строку данных и воспринимает ее как ТЕКСТ (строковый тип):
-
Тип переменной можно преобразовать налету:
- для целых: a = int (input())
- для вещественных: a = float (input())
При выполнении функции input компьютер переходит в режим ожидания данных: пользователь должен ввести данные с клавиатуры и нажать клавишу Enter , система запишет это значение в переменную.
Есть задачи, в которых вводимые данные заданы в одной строке, например, 10 20. Чтобы была возможность работать с такими данными, их надо разделить.
Для этого нужно применить следующий синтаксис:
Здесь есть правило: количество данных должно соответствовать количеству переменных. В примере выше в одной строке передаются два целых числа, разделенных пробелом. Соответственно, нужно эти данные передать также двум переменным. Осталось не забыть, что определенные таким образом переменные имеют строковый тип. Для арифметического сложения их нужно привести к типу целого числа.
Теперь рассмотрим ситуацию, когда входные данные заданы в одной строке, но разделены особыми разделителями, отличными от пробела. Классическим примером таких входных данных является показания времени — 10:33.
В таких случаях надо для split() указывать конкретный символ разделителя. Разделителем будет символ ‘:’ , взятый в кавычки или апострофы.
Также добавим, что если в одной строке введены данные одного единственного типа (только целые числа, вещественные числа или строки), то определение переменных и задание им одного и того же типа можно выполнить одной строкой кода, используя следующий синтаксис:
При вызове функции input в скобках можно записать сообщение-подсказку:
Усовершенствуем программу 1, организовав в ней ввод данных с помощью оператора input , включив строку с приглашением для ввода:

Результат работы усовершенствованной программы
Теперь наша программа может вычислить длину окружности и площадь круга для любого значения r. Иначе говоря, она решает не единичную задачу, а целый класс задач. Кроме того, в программе понятно и удобно организован ввод исходных данных и вывод получаемых результатов. Это обеспечивает дружественность пользовательского интерфейса.
САМОЕ ГЛАВНОЕ
Для ввода в оперативную память значений переменных используются оператор ввода input .
Для вывода данных из оперативной памяти на экран монитора используются оператор вывода print .
Ввод исходных данных и вывод результатов должны быть организованы понятно и удобно; это обеспечивает дружественность пользовательского интерфейса.
Дана строчка var i j real какую функцию она выполняет
Дана строчка var i j real какую функцию она выполняет
В предыдущей теме мы познакомились со структурой программы на языке Pascal, научились описывать данные, рассмотрели оператор присваивания. Этого достаточно для того, чтобы записать программу преобразования данных. Но результат этих преобразований нам виден не будет.
Для вывода данных из оперативной памяти на экран монитора используется оператор вывода write :
Здесь в круглых скобках помещается список вывода — список выражений, значения которых выводятся на экран. Это могут быть числовые, символьные и логические выражения, в том числе переменные и константы.
Произвольный набор символов, заключённый в апострофы, считается строковой константой. Строковая константа может содержать любые символы, набираемые на клавиатуре.
Пример
Оператор write (‘s= ‘, s) выполняется так:
- на экран выводятся символы, заключённые в апострофы: s=
- на экран выводится значение переменной, хранящееся в ячейке оперативной памяти с именем s .
Если значение переменной s равно 15 и она имеет целочисленный тип, то на экране появится: s=15
Если значение переменной s равно 15, но она имеет вещественный тип, то на экране появится: s=1.5Е+01
При выполнении оператора вывода все элементы списка вывода печатаются непосредственно друг за другом. Так, в результате работы оператора write (1, 20, 300) на экран будет выведена последовательность цифр 120300, которая будет восприниматься нами как число 120300, а не как три отдельные числовые константы. Сделать выводимые данные более доступными для восприятия можно разными способами:
| sum:=0; for i:=1 to 4 do for j:=1to 4 do if i=j then sum:=sum + a[i, j]; | Другой вариант: sum:=0; for i:=1 to 4 do sum:=sum + a[i, i]; |
Задача 2. Найти сумму элементов матрицы а, расположенных выше ее главной диагонали.
for i:=1 to 4 do
for j:=1 to 4 do
if i < j then sum:=sum + a[i, j];
Задача 3. Найти сумму элементов побочной диагонали матрицы a.
| sum:=0; for i:=1 to 4 do for j:=1to 4 do if i+=5j then sum:=sum + a[i, j]; | Другой вариант: sum:=0; for i:=1 to 4 do sum:=sum + a[i, 5-i]; |
for i : = 1 to 4 do
sum : = sum + a[i, 5 – i];
Задача 4. Найти сумму элементов матрицы a, лежащих выше ее побочной диагонали.
for i:=1 to 4 do
for j:=1 to 4 do
if i+j<5 then sum:=sum + a[i, j];
Пример выполнения задания 6
Дана матрица a(4, 4). Получить матрицу b(4, 4) по правилу:
а также произведение элементов строки, содержащей наименьший элемент матрицы.
var к, i, j : integer;
b, a : array [1 .. 4, 1 .. 4] of real;
p, min : real;
writeln (¢введите матрицу d¢);
for i:=1 to 4 do
for j:=1 to 4 do read (a[i, j]);
min:=a[l,1]; k:=1;
в которой он находится>
for i:=1 to 4 do
for j:=1 to 4 do
if a[i, j] > 0 then b[i, j]:=2*a[i, j] else
b[i, j]:=0;
if a[i, j] < min then
begin min:=a[i, j];
for j:=1 to 4 do
writeln (¢вывод b(4, 4)¢);
for i:=1 to 4 do
for j:=1 to 4 do write(b[i, j]:8:2);
writeln (¢минимальный элемент = ¢, min :8:2);
writeln (¢произведение элементов ¢, k,¢ строки =¢, p:5:2)
Тема 7
Организация программ
С использованием функций
В алгоритмических языках, в отличии от математического понятия функции, рассматриваются только такие функции, для которых можно задать алгоритм определения их значений. Самостоятельный алгоритм можно оформить как функцию в том случае, если в результате получается одно единственное значение простого типа. Функция, как и процедура, может содержать несколько операторов, несколько входных параметров, но результат ее выполнения только один. Этот единственный результат обозначается именем функции и передается в основную программу.
Описание функции содержится в главной программе после раздела описания переменных (var) и перед началом (begin) программы.
В общем виде функция записывается следующим образом:
function имя(формальные параметры) :тип результата;
Раздел описаний
Begin
Раздел операторов
end;
Формальные параметры – это наименования переменных (аргументы описываемой функции), через которые передаются входные данные из программы в функцию. Формальными параметрами функции, как правило, являются параметры – значения.
Само имя функции представляет собой идентификаторпараметр, значение которого после окончания работы функции равно результату вычисления. Тип результата (функции) указывается следом за списком параметров – после закрывающей скобки этого списка и двоеточия.
В разделе операторов функции обязательно должен присутствовать хотя бы один оператор присваивания, в котором переменной с именем, совпадающим с именем функции, присваивается определенное значение, тип которого совпадает с типом результата (функции). Если такого присваивание в разделе операторов функции не выполнено, то функция не возвращает никакого результата (точнее, возвратит произвольный результат).
Например, описания вычисления функции тангенса угла:
function tg(x:real): real;
tg := sin(x)/cos(x)
Вызов и выполнение функции производится при вычислении указателя функции:
имя функции(фактические параметры ).
При этом вызов функции необходимо делать непосредственно внутри выражения, подобно тому, как используются стандартные встроенные функции, например синус sin(x). Фактические и формальные параметры должны согласовываться
¾ по порядку следования,
Например, вызов ранее описанной функции tg можно произвести так:
a := tg(y);
После выполнения функции выработанный ею результат используется в качестве значения указателя функции в том выражении, в котороe входит этот указатель. При вызове функции передача фактических параметров производится так же, как и при вызове процедуры.
Пример. Заданы стороны двух треугольников MNK (стороны m, n, k) и PLF (стороны p, l, f ). Переменной s присвоить значение –1, если площадь треугольника MNK меньше или равнa площади треугольника PLF, и значение 1 в противном случае.
Вычисление площади треугольников по формуле Герона оформить в виде функции pl.
Примечание. Формула Герона для вычисления площади треугольника со сторонами a, b, c:
где , где p – полупериметр треугольника.
var m, n, k, l, p, f, h, q: real;
s : integer;
function pl(a, b, c: real): real;
var r : real;
r:= ( a + b + c ) / 2;
pl:= sqrt (r*(r – a)*(r – b)*(r – c));
writeln(‘Введите стороны m, n, k, p, l, f’);
readln(m, n, k, p, l, f );
h := pl(m, n, k);
q := pl(p, l, f );
if h > q then s := 1 else s := –1;
При передаче в функцию массива фактическим параметром является имя массива. Обратим внимание на то, что в заголовке функции для указания типов формальных параметров могут использоваться только имена типов, но не их описания.
Нельзя записать так:
function sum(a: array[1..5] of real; var : real):real;
Пример. Пусть заданы два вектора а(8) и b(12). Вычислить для каждого вектора произведение его элементов.
type vect = array [ 1 .. 12 ] of real;
var a, b: vect;
ta, tb : real;
function prl(var x: vect; n: integer): real;
var i: integer;
begin p := 1;
for i:= 1 to n do
p := p * x[ i ];
pr := p
ta:= pr(a, 8);
tb:= pr(b, 12);
Пример выполнения задания 7
Дана матрица А(4,4).
где Xk – наибольшее из значений элементов K – го столбца матрицы A.
Вычисление наибольшего значения оформить в виде функции.
type matr = array[1..4,1..4] of real;
var a: matr; z: real;
x: array[1..4] of real;
i, j: integer;
function max(y:matr; k: integer): real;
var m: real; i: integer;
m: = a[1,k];
for i:= 2 to 4 do
if a[i,k]> m then m:= a[i,k];
writeln(‘введите матрицу a(4,4)’);
for i:= 1 to 4 do
for j:= 1 to 4 do read(a[i,j]);
for i:= 1 to 4 do x[i] :=max(a,i);
for i:= 1 to 4 do
z := z + x[i] * x[5 – i];
Тема 8
Организация программ
С использованием процедур
Довольно часто, уже на этапе разработки алгоритма программы, можно обнаружить, что некоторые одинаковые или очень похожие действия в программе должны выполняться несколько раз. Текст программы, реализующей такой алгоритм, будет содержать последовательность одинаковых операторов.
Избежать дублирования операторов можно, если оформить повторяющуюся последовательность как процедуру и в том месте программы, где надо выполнить эти инструкции, указать ее имя.
В Турбо Паскале процедурой называется часть программы, имеющая имя и предназначенная для решения определенной задачи (вместо термина «процедура», часто используют термин подпрограмма).
Описание процедуры включает заголовок и тело процедуры. Заголовок состоит из зарезервированного слова procedure, идентификатора (имени) процедуры и заключенного в круглые скобки списка формальных параметров с указанием типа каждого параметра.
В общем виде описание процедуры выглядит так:
procedure имя (формальные параметры);
Имя процедуры должно быть уникальным и не должно встречаться в разделе операторов данной процедуры.
Нетрудно заметить, что структура процедуры копирует структуру программы в целом, т. е. состоит из заголовка, раздела описаний и раздела операторов. Различия лишь в заголовках и в том, что в конце процедуры ставится точка с запятой вместо точки в конце программы. Процедура помещается в основной программе после раздела описания переменных и перед разделом операторов основной программы.
Все переменные, представленные в разделе описаний основной программы, называются глобальными. Они действуют как в разделе операторов основной программы, так и в любой процедуре. Переменные, представленные в разделе описаний процедуры, называются локальными. Они действуют только в рамках процедуры и недоступны операторам основной программы.
Формальные параметры – это наименование фиктивных переменных, через которые передается информация из программы в процедуру (входные параметры) либо из процедуры в программу (выходные параметры). Выходным параметрам присваиваются результаты вычислений.
Описание процедуры, расположенное в описательной части программы, само по себе никакого действия не производит. Выполнение программы начинается с выполнения раздела операторов основной программы. Для обращения к процедуре применяется оператор вызова процедуры, который имеет вид:
Имя процедуры(список фактических параметров).
Фактические параметры отделяются друг от друга запятыми и являются реальными объектами программы, замещающими в разделе операторов процедуры формальные параметры. Описание фактических параметров содержится в разделе описаний переменных основной программы.
При вызове процедуры компьютер производит следующие действия. Сначала устанавливает взаимно однозначное соответствие между фактическими и формальными параметрами.
Соответствие между фактическими и формальными параметрами должно быть следующим:
– число фактических параметров должно быть равно числу формальных параметров;
– соответствующие фактические и формальные параметры должны совпадать по порядку следования и по типу.
Данные из основной программы поступают в процедуру. Затем управление передается процедуре. Результаты выполнения процедуры передаются в основную программу и управление передается на оператор, следующий за вызовом процедуры. Соответствующие формальные и фактические параметры во избежание путаницы обычно обозначают разными буквами.
Параметры
Параметры, перед которыми отсутствует зарезервированное слово var и за которыми следует тип, называются параметрами-значениями. Например, в описании
procedure korrect (s, к : real; x : integer);
s, k, x –параметры-значения. Фактический параметр, соответствующий параметру-значению, может быть выражением соответствующего типа, например:
korrect (2.5, (х + 2)/5, 1);
Изменение формальных параметров-значений не влияет на значения соответствующих фактических параметров.
Параметры, перед которыми следует ключевое слово var и за которым следует тип, называются параметрами-переменными. Например, в описании
procedure obr(var s, k: real; var x : integer);
s, k, x – параметры-переменные. Фактический параметр, соответствующий параметру-переменной, может быть только переменной, например:
obr(a, b, k);
где а, b – переменные вещественного типа, а k –целого типа.
Любые изменения в значении формального параметра-переменной отражаются на фактическом параметре.
Параметр-переменная используется в том случае, если значение должно быть передано из процедуры в вызывающий блок.
Пример. Решить два квадратных уравнения и ,
считая, что его дискриминант неотрицателен.
var y1, y2, zl, z2 : real;
procedure sq( a, b, с : real; var xl, x2: real);
var d : real;
d:=b*b – 4*a*c;
x1:=(–b + sqrt(d))/(2*a);
х2:=(–b – sqrt(d))/(2*a);
sq(5.7, –1.2, –8.3, y1, y2);
sq(2.4, 3.4, –8.4, zl, z2);
writeln(¢корни y1, y2 =¢, yl : 6 : 2, y2 : 6 : 2);
writeln(¢корни zl, z2 =¢, zl : 6 : 2, z2 : 6 : 2);
Если в процедуру необходимо передать массив, то в этом случае фактическим параметром является имя массива. Обратим внимание на то, что в заголовке процедуры для указания типов формальных параметров могут использоваться только имена типов.
Нельзя (!) записать так:
procedure sum(a : array[l ..5] of real; var s : real);
Как же написать одну процедуру для обработки двух массивов одного типа, имеющих разное число элементов?
Пример. Вычислить z = (s + к)*(s1+ k1), где s, k – сумма и количество отрицательных элементов a(10), s1, k1 – сумма и количество отрицательных элементов массива b(8).
program primer2;
type vect = array [1..10] of real;
var а, b : vect; i, k, k1: integer; s, s1: real;
procedure sumcol (x:vect; n:integer; var sum:real;
var col:integer);
var i:integer;
begin sum := 0; col := 0;
for i:=1 to n do
if x[i]< 0 then
begin sum := sum + x[i];
соl:=соl + 1;
writeln(¢ввeдитe массив а(10)¢);
for i := 1to 10 do read(a[i]);
writeln(¢введите массив b(8)¢);
for i := 1 to 8 do read(b[i]);
sumcol(a, 10, s, к);
sumcol(b, 8, sl, k1);
z := (s + k)*(sl + kl);
Такой подход можно применить и для двумерных массивов.
Пример выполнения задания 8
Даны две вещественные матрицы a(7, 7) и b(5, 5). Из отрицательных элементов матрицы а сформировать одномерный массив с, а из отрицательных элементов матрицы b сформировать одномерныймассив d.
В программе использовать три процедуры:
– для ввода матриц,
– для формирования одномерных массивов,
– для вывода одномерных массивов.
type matr=array [1..n, 1..n] of real;
vect = array[l..n*n] of real;
var a, b:matr; c, d:vect; t, q:integer;
procedure vvod (var x:matr; k:integer);
var i, j:integer:
for i:=1 to k do
for j:=1 to k do read(x[i, j]);
procedure vyvod (y:vect; m:integer);
var i:integer:
for i := 1to m do write(y[i]:6:2);
procedure form (x:matr; k:integer; var у:vect; var m:integer);
for i:=1 to k do
for j:=1 to k do
if x [i, j] <0 then
begin m:=m + 1;
y[m]:=x[i, j]
writeln (¢введите элементы матрицы а(7, 7)¢);
writeln (¢введите элементы матрицы b(5, 5)¢);
form(a, 7, с, t);
writeln (¢вывод одномерного массива с длиной t
vyvod(c, t);
form (b, 5, d, q);
writeln (¢вывод одномерного массива d длиной
q элементов¢);
Тема 9
Текстовые файлы
Файловый тип данных, т. е. файл, является в Турбо Паскале единственным типом, посредством которого данные, обрабатываемые программой, могут быть получены из внешней памяти (например, с жесткого диска), а результаты могут быть переданы во внешнюю память. Файл связывает программу с внешними устройствами компьютера.
Текстовым файлом называется упорядоченная совокупность произвольного числа однотипных элементов с последовательным методом доступа. Элементами текстового файла являются символы, которые могут быть разделены на строки разной длины, причем в конце каждой стоит символ конца строки.
Бытовые примеры текстовых файлов просты. Если файл можно вывести на экран в текстовом режиме и прочитать его, то это – текстовый файл.
Для работы с текстовыми файлами необходимо определить файловую переменную:
type textfile = text;
var f:textfile;
var f:text;
Заметим, что слово text является не зарезервированным словом, а идентификатором стандартного типа, наряду с real, integer и т. п.
Любой файл имеет три характерные особенности.
Во-первых, у него есть имя, что даст возможность работать одновременно с несколькими файлами.
Во-вторых, он содержит элементы одного типа.
В-третьих, длина вновь создаваемого файла никак не оговаривается при его объявлении и ограничивается только емкостью устройства внешней памяти. Так как число элементов файла заранее неизвестно, поэтому в конце файла автоматически формируется признак конца файла.
Последовательный доступ состоит в том, что по файлу можно двигаться только последовательно, начиная с первого его элемента, и кроме этого всегда существует возможность начать просмотр файла с его начала. Таким образом, всегда доступен лишь очередной его элемент. Если в процессе решения задачи необходим какой-либо из предыдущих элементов, то необходимо вернуться в начало файла и последовательно пройти все элементы до нужного.
Все операции могут производиться лишь с элементами файлов. Нет таких операций, которые бы работали с целыми файлами, в том числе операций сравнения и операций присваивания значения одной файловой переменной другой файловой переменной. Обработку текстового файла с символьной информацией можно производить посимвольно или построчно.
Символьный тип данных
Набор символов в компьютере достаточно велик. Все символы упорядочены, т.е. каждый символ имеет свой порядковый номер (код символа).
Символьная константа (литера) – это символ, заключенный в апострофы, например: ¢А¢,¢+¢, ¢7¢. Символьная константа занимает один байт памяти. Ее можно обозначать именем и задавать в разделе констант, например:
Символьная переменная принимает значение одного символа. Она должна быть объявлена в разделе описания переменных так:
где имя – имя переменной символьного типа; char – ключевое слово обозначения символьного типа, например:
var s1, s2:char;
Переменная символьного типа может получить значение в результате выполнения оператора присваивания или ввода (read, readln) и значение переменной можно вывести (write, writeln).
Если переменная типа char получает значение в результате выполнения операции присваивания, то справа от знака = должно стоять выражение символьного типа, напрмер: s1:= s2; ch := ¢K¢;
К символьным данным можно применить встроенные функции:
| ord(x:char): byte; | – определяет порядковый номер символа х в кодовой таблице, например: ord(¢R¢)=82; |
| chr(n:integer): char; | – по порядковому номеру п в кодовой таблице определяет символ, например: chr(68) = ¢D¢; |
| pred(x:char): char; | – определяет предыдущий символ по отношению к х, например: pred(¢N¢) = ¢М¢; |
| succ(x:char): char;– | – определяет последующий символ по отношению к х, например: succ(¢R¢) = ¢S¢; |
Переменную типа char можно сравнить с другой переменной типа char или с символьной константой. Отношение sl > s2будет иметь значение истина (true), если ord(sl) > ord(s2), и ложь (false) при ord(s1) < ord(s2), например: ¢0¢ < ¢1¢ — истина, так как код символа ¢0¢ 48 < 49 – кода символа ¢1¢.
Код строчной буквы больше кода прописной. Ниже приведен фрагмента программы, которая преобразует строчную русскую букву в прописную:
case s1of
¢p¢.. ¢я¢ : s1 := chr(ord(sl) – 80);
Операции над строками
Строка – это последовательность символов кодовой таблицы компьютера. При использовании в выражениях строка заключается в апострофы. Количество символов в строке (длина строки) может динамически изменяться от 0 до 255. Для определения данных строкового типа используется идентификатор string, за которым следует заключенное в квадратные скобки значение максимально допустимой длины строки данного типа. Если это значение не указывается, то по умолчанию длина строки равна 255 символам.
Переменную строкового типа можно определить через описание типа в разделе описания типов type или непосредственно в разделе описания переменных. Строковые данные могут использоваться в программе также в качестве констант.
Определение строкового типа устанавливает максимальное количество символов, которое может содержать строка.
Дана строчка var i j real какую функцию она выполняет
Введение в программирование. Язык Pascal

- Понятность алгоритма.
- Конечность алгоритма.
- Дискретность алгоритма.
- Однозначность алгоритма.
- Буквенный, цифровой, логический.
- Звуковой, графический, буквенный.
- Большой, маленький, средний.
- Числовой, символьный, логический.
- Величина, имеющая имя и возможность принимать разные значения в программе.
- Величина, имеющая имя и только одно значение.
- Величина, не имеющая ни имени, ни значения.
- Const
- Var
- Type
- Set
- Var x:Real;
- Var x:String;
- Var x:integer
- Var x:integer;
- Описывает две переменные целого типа.
- Описывает две константы целого типа.
- Описывает две переменные вещественного типа (не целые числа).
- Описывает две константы вещественного типа.
- :=
- =
- -=
- 🙂
- Запрашивает ввод слов «Это моя программа».
- Выводит на экран строчку «Это моя программа».
- Выводит на экран значение переменной.
- Производит вычисления.
- Программа запрашивает ввод с клавиатуры значения переменной c.
- На экран выводится буква «с».
- Ничего не происходит, т.к. в написании команд есть ошибка.
- На экран выводится число 2.
- Выводит на экран значение переменной b.
- Приостанавливает программу и запрашивает ввод значения b с клавиатуры.
- Выводит на экран букву b.
- В первой.
- Во второй.
- В третьей
- В четвертой.
- В пятой
- В шестой.
- В седьмой.
- Да
- Нет
- Если в программе используется переменная, она должна быть описана в разделе Var.
- Переменной целого типа можно присвоить значение вещественного типа.
- После begin необходима точка с запятой.
- Оператор вывода информации (текста или значения переменной) — Write или Writeln.
- Первая.
- Вторая.
- Третья.
- Четвертая.
Дана строчка var i j real какую функцию она выполняет
9. В программе используется целочисленная переменная x. Выберите ПРАВИЛЬНОЕ описание этой переменной:
А) Var x:integer; Б) Var x:Real; В) Var x:integer
10. Дана строчка: Var i,j:Real; Какую функцию она выполняет?
А) Описывает две переменные вещественного типа (не целые числа).
Б) Описывает две переменные целого типа. В) Описывает две константы вещественного типа.
11. Оператор присваивания в программе на Pascal:
А) := Б) -= В) =
12. Дана команда: writeln(`Это моя программа`); Что она выполняет?
А) Выводит на экран строчку «Это моя программа».
Б) Запрашивает ввод слов «Это моя программа». В) Выводит на экран значение переменной.
13. Дан фрагмент программы:
a:=8;
b:=16;
c:=b/a;
Writeln(c);
Что происходит при его выполнении?
А) На экран выводится число 2.
Б) Программа запрашивает ввод с клавиатуры значения переменной c.
В) На экран выводится буква «с».
14. Команда: Readln(b);
А) Приостанавливает программу и запрашивает ввод значения b с клавиатуры.
Б) Выводит на экран значение переменной b. В) Выводит на экран букву b.
15. Дана программа: В какой строчке ошибка?
Program User;
var a:integer;
b:real;
begin
b:=1.5;
a:=b;
end. А) В первой.
Б) Во второй.
В) В третьей.
Г) В четвертой.
Д) В пятой.
Е) В шестой.
Ж) В седьмой.
16. Дано несколько команд языка Pascal, осуществляющие вывод на экран информации.
1) Writeln(a);
2) Writeln(`x равно:`,x);
3) Writeln(`Результат равен , Res);
4) Writeln(`Привет!`);
Отметьте все правильно написанные команды:
А) Первая. Б) Вторая. В) Третья. Г) Четвертая.
Д) Нет правильно написанной команды. Е) Все команды правильно написаны.
17. Полный оператор ветвления IF … THEN … ELSE переводится как.
А) Если … то … иначе. Б) Если … тогда … условие. В) Пока … тогда … иначе.
18. Оператором цикла не является оператор:
А) Repeat. Б) While. В) For. Г) Case. Д) Нет верного ответа
19.Запишите на языке Pascal: задан массив из 12 элементов.
20. Запишите, какое число выводится на экран после выполнения фрагмента программы:
a:=32;
b:=16;
c:=(a + b)/2;
d:=a + b – c/4;
writeln(d);

Если речь идет об отображении изображения на мониторе, то минимальным элементом будет пиксель

Using namespace std;

Красным цветом это изменение формата
function POWER (FACTOR: real; EXP: integer): real;
var COUNT: integer; TFACTOR: real;
if EXP = 0 then POWER := 1
for COUNT := 2 to ABS (EXP) do
if EXP < 0 then POWER := 1/TFACTOR
else POWER := TFACTOR
б) WRITELN («D tgx-vbf» data-vbf-id=»7413″ data-vbf-exp=»1″ data-vbf-hide=»0″ data-vbf-loop=»10″>
Выдает ошибку " Нельзя преобразовать тип real к integer"