Паскаль и алгоритмизация. базовый уровень.

      Комментарии к записи Паскаль и алгоритмизация. базовый уровень. отключены

Согласно определениям критериев качества программного обеспечения эффективность – это отношение уровня услуг, предоставляемых программным продуктом пользователю при заданных условиях, к объему используемых ресурсов (времени или памяти).
Мобильность – способность программного обеспечения работать на различных аппаратных платформах или под управлением различных операционных систем.
Надежность – способность программного продукта безотказно выполнять определенные функции при заданных условиях в течение заданного периода времени с достаточно большой вероятностью.
Сопровождаемость – характеристика программного продукта, позволяющая минимизировать усилия по внесению в него изменений для устранения ошибок или модификации в соответствии с изменяющимися потребностями пользователей.

Использование ЯПВУ не требует знания возможностей конкретной ЭВМ. В программах, созданных на языках высокого уровня, особенности компьютерных систем не учитываются, перенос программ на уровне исходных текстов на другие платформы не создает трудностей, если в них есть транслятор для этого языка. Большие прикладные программы разрабатывать на языках высокого уровня проще, а ошибок допускается при этом меньше.

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

Слово «алгоритм» происходит от имени ученогоAль-Хорезми (Абу Абдуллах Мухаммед ибн Муса). Около 825 года он написал сочинение, в котором впервые дал описание придуманной в Индии позиционной десятичной системы счисления – Китаб аль-джебр валь-мукабала («Книга о сложении и вычитании»), от названия которого, кстати, происходит слово «алгебра».

В алгоритмической структуре «ветвление» сначала проверяется условие(вычисляется отношение, логическое выражение). Если условие истинно, то выполняется последовательность команд, на которую указывает стрелка с надписью «да» (положительная ветвь). В противном случае выполняется последовательность команд, на которую указывает стрелка с надписью «нет» (отрицательная ветвь).

8. При выполнении следующего алгоритма вводится последовательность:
5, 5, 2, 7, 8, 7, 8, 2, 2, 3.
В результате будет выведено …

Решение. В результате выполнения алгоритма из последовательности длины n удаляется каждое число, равное предыдущему. Переменная kобозначает длину преобразованной последовательности. Члены исходной последовательности с индексами, большими k, не изменяются. Для данной последовательностиk = 6, a7 = 2.

Операторы do () while (a1 + a2) и do (a:= b + 3;c:= 2*b;) while (a*c – b) записаны правильно.
В операторе do n:= n + 3; while (nk) часть конструкции между do и while не заключена в круглые скобки.
В операторе do (n:= n + 3; k:= k – 1) while (nk) нет точки с запятой после второго оператора присваивания.

Константы в языках программирования делятся на две группы: константы-литералы и именованные константы. Тип и значение константы-литерала определяется по ее виду. Именованная константа – это идентификатор. Тип и значение именованной константы определяется по ее описанию в разделе описания констант, он совпадает с типом и значением выражения, которое присваивается этой константе.
Константами-литералами в таблице являются: $165 (целое 16-ричное число), 32.768 (вещественное число), ‘A’ (символ), –1 (десятичное целое), ‘real’ (строка). #65 является символьным литералом, это альтернативная запись символа ‘A’ (65 – кодсимвола ‘A’).
False – именованная логическая константа, 1,5 – недопустимая запись числа. Таким образом, в таблице правильно описаны 6 констант-литералов.

Прописные латинские буквы в таблице ASCII,также как и строчные, имеют последовательные коды. Следовательно,
ord(‘C’) – ord(‘A’) = 2, chr(2) = #2 (символ с кодом 2).
succ(1) = 2, chr(2) = #2.
Выражение #10 – #8 недопустимо, так как над символьным типом не определены арифметические операции.
Выражение chr(ord(‘0’) + 2) = ‘2’, но ‘2’ ? #2.

Выражения not a or b и not(a and not b)эквивалентны, что следует из закона де Моргана.Поэтому выражения not a or b xor c иnot(a and not b) xor c являются эквивалентными.
Заменив операнды операции xor в выраженииnot(a and not b) xor c их отрицаниями, что никак не изменит результаты операции xor, получим эквивалентное ему выражениеa and not b xor not c.
Две оставшиеся формулы не эквивалентныданному в задании выражению.
Например, значение not a and с xor b на наборе a = 0, b = 0, c = 0 равно 0, а исходное выражение равно 1.
Для выражения not a xor c or bможно рассмотреть набор a = 1, b = 1, c = 1, на котором выражение равно 1, а исходное равно 0.

Параметры процедуры read должны быть данными следующих типов: числового, символьного или строкового. Тип переменной c – перечисляемый и определяемый пользователем. Поэтому оператор read(c) содержит ошибку.
Параметрами процедуры write должны быть выражения символьного, строкового, логического или числовых типов. Этим условиям удовлетворяют параметры всех приведенных процедур write. Формат вывода типа «:4:2» используется только для вывода вещественных чисел, поэтому оператор write(b:4:2) недопустим.

Фрагмент программы

является правильным. Фактическим параметром-значением является выражение, которое может быть присвоено соответствующему формальному параметру. Фактические параметры-константы передаются в подпрограмму по адресу и должны быть переменными типа, тождественного типу формального параметра, поэтому вызов pr(0.5, n, b) недопустим.
Вызов pr(r, n, 255) недопустим, так как фактическим параметром-переменной не может быть число.
Вызов pr(12.7 + 1, 20, b) недопустим, так как фактическим параметром-константой не может быть выражение.

1. В процедуре, соответствующей заголовку 1:
procedure pr1(var a: byte; b: integer; c: real),
параметр a является выходным параметром и принимает только целые неотрицательные значения типа byte. Этому условию удовлетворяет только
.
В остальных случаях a может принимать и отрицательные значения.
2. В процедуре, соответствующей заголовку 2:
procedure pr2(a: integer; var b: integer; c: real),
параметр b является выходным параметром, который принимает значения типа integer. Этому условию удовлетворяет ответ
.
3. В процедуре, соответствующей заголовку 3:
procedure pr3(var a: integer; var b, c: real),
все три параметра являются выходными. Причемa – параметр целого типа, b и c – вещественные. Этому условию удовлетворяет ответ
.
Операторы

не могут быть телом ни одной из процедур, соответствующих заголовкам 1, 2, 3. В первых двух тип параметра b – целый. И только в заголовке 3 параметр b – вещественного типа. Но целочисленному параметру a присваивается вещественное значение, а это недопустимо.

Аргумент a функции f является открытым параметром-массивом. Функция f возвращает значение 0, если массив упорядочен по возрастанию. Если массив не упорядочен по возрастанию, то функция возвращает номер последней пары, нарушающей упорядоченность.

При вводе строки процедурой read символы из буфера ввода считываются в строку вплоть до символа перехода к новой строке. Следующее считывание начинается с символа перехода к новой строке. До тех пор пока указатель в буфере ввода не перейдет к началу новой строки, в строковые переменные будут считываться пустые строки. Процедура readln после ввода значений в переменные списка параметров переносит указатель ввода к началу новой строки.
Оператор write(s1,‘,’,s2,‘,’,s3,‘,’,s4) выводит строки, разделяя их запятыми. При вводеreadln(s1,s2); readln(s3,s4); строки s2 и s4 будут пустыми, поэтому будет выведено «Сессия,,закончилась,».
При вводе read(s1,s2); readln(s3); read(s4); строкиs2 и s3 будут пустыми, поэтому будет выведено «Сессия,,,закончилась».
При вводе readln(s1); read(s2); readln(s3, s4); строкиs3 и s4 будут пустыми, поэтому будет выведено «Сессия,закончилась,,».

Базовым типом множества должен быть однобайтовый перечисляемый тип или его диапазон. Перечисляемым типом в Паскале является упорядоченный тип, код минимального значения которого равен нулю. Такими типами из приведенных являются типы char и (a, b, c, d).

Функция возвращает значение TRUE, если числоn после перевода его в 8-ричную систему счисления является палиндромом (читается одинаково справа налево и слева направо).
В функции f(n) восьмеричные цифры числа n(триады) записываются в переменную k в обратном порядке. Переменная bинициализируется значением n, а переменная k:= 0. В цикле (пока b0) биты k сдвигаются на 3 влево, и в младшие 3 бита записывается последняя восьмеричная цифра числа b, которая является значением выражения b and 7. После этого b:= b shr 3, что соответствует делению b на 8, то есть вычеркивается последняя восьмеричная цифра b.
Если полученное значение k равно n, то число n, записанное в восьмеричной системе, является палиндромом. Из приведенных ответов только число 186 в восьмеричной системе счисления представлено палиндромом (186 = 2728). В этом случае функция f(n) возвращает значение TRUE.

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

Функция с именем Pos возвращает номер позиции подстроки в строке. Как и все подпрограммы для работы со строками, она находится в модулеSystem. Логическая функция KeyPressed описана в модуле CRT.
Lst: text – файловая переменная, которая описана в модуле Printer.

В программе матрица считывается из нетипизированного файла с помощью одного оператора. Размер буфера файла fr равен 40 байтам. Матрица a занимает 6 * 50 * 20 = 6000 байтов. Значит, из файла должно быть считано 6000 / 40 = 150 блоков.

p – массив указателей на записи типа t_rec. При вызове процедуры New(p[i]) в динамической памяти выделяется 5 байтов для размещения записи p[i]^. Далее в теле оператора присоединения вводится значение поля n этой записи и выделяется память размера n * sizeof(real) для последовательности из n вещественных чисел. Начальный адрес последовательности записывается в поле p записи. Общий объем выделенной памяти равен 5 * 5 + 6 * (7 + 8 + 9 + 6 + 10) = 265.

В секции реализации при описании функции, заголовок которой есть в секции интерфейса, заголовок можно описывать сокращенно: только ключевое слово function и имя функции. Но если заголовок описывается полностью, это описание должно совпадать с описанием в интерфейсе. Правильно описаны заголовки функций: function f(a, b: array of real): boolean; и function f;.

Принимая документы абитуриентов, вводят результаты ЕГЭ (b1, b2, b3 ? 100) по трем предметам. N – план набора. Число зачисленных абитуриентов равно числу, наиболее близкому к N, но не превышающему N, при этом суммарный балл каждого зачисленного больше суммарного балла любого из непоступивших. Минимальный балл по каждому предмету должен быть больше 30.
Описан фрагмент программы:

Выражение, значение которого после выполнения процедуры pr(a, k1, k2, d, c) равно количеству абитуриентов, имеющих максимальный суммарный балл, имеет вид …

Решение. После выполнения процедуры pr(a, k1, k2, d, c)значение a[i] равно количеству абитуриентов с суммарным баллом i, a значение k2 равно максимальному из суммарных баллов абитуриентов. Значение a[k2]определяет количество таких абитуриентов.

Принимая документы абитуриентов, вводят результаты ЕГЭ (b1, b2, b3 ? 100) по трем предметам. N – план набора. Число зачисленных абитуриентов равно числу, наиболее близкому к N, но не превышающему N, при этом суммарный балл каждого зачисленного больше суммарного балла любого из непоступивших. Минимальный балл по каждому предмету должен быть больше 30.
Описан фрагмент программы:

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

Решение. После выполнения фрагмента программы значениесравно количеству принятых заявлений, m – количество зачисленных. Таким образом, количество непоступивших абитуриентов равно с – m.

Принимая документы абитуриентов, вводят результаты ЕГЭ (b1, b2, b3 ? 100) по трем предметам. N – план набора. Число зачисленных абитуриентов равно числу, наиболее близкому к N, но не превышающему N, при этом суммарный балл каждого зачисленного больше суммарного балла любого из непоступивших. Минимальный балл по каждому предмету должен быть больше 30.
Описан фрагмент программы:

Выполнен фрагмент программы.
Установите соответствие между незаконченными предложениями и выражениями, которыми они завершаются.
1. Средний балл участвующих в конкурсе равен …
2. Средний балл поступивших равен …
3. Средний балл непоступивших равен …

Решение. После выполнения фрагмента программы имеем:
d – сумма баллов участвующих в конкурсе,
с – количество участвующих в конкурсе,
d/c – средний балл участвующих в конкурсе,
m – количество поступивших,
b – сумма баллов поступивших,
b/m – средний балл поступивших,
c – m – количество непоступивших абитуриентов,
d – b – сумма баллов непоступивших абитуриентов,
(d – b)/(c – m)– средний балл непоступивших абитуриентов.

Даны описания:

В результате выполнения следующего фрагмента программы будет выведено …

Решение. Словом будем называть последовательность символов, не содержащую пробелов. Функцияget_w(s2, i) возвращает ближайшее слово строкиs2справа от i-го символа. Если s2[i]не пробел, тоs2[i] – первый символ считываемого слова. Еслиs2[i]пробел, то первым символом считываемого слова является первый не пробельный символ справа от s2[i]. Переменной i присваивается номер символа после считанного слова. Во фрагменте программы в цикле считываются слова из строки s2, и последние символы этих слов дописываются в строку s1. Получаемs1 = ‘tneeu?’.

Даны описания:

В результате выполнения следующего фрагмента программы

будет выведено …
(В ответе введите строку без апострофов.)

Решение. Функция g(s1, s2) возвращает первое из слов, которое есть в строках s1 и s2. Таким словом является ‘are’. Прописные и строчные буквы различаются.

Даны описания:

В результате выполнения следующего фрагмента программы значение k будет равно …

Решение. Значение k равно количеству слов из строки s1, которые есть в строке s2. Таких слов 4.

Языки программирования (ЯП) можно классифицировать по различным критериям.
В зависимости от специфических возможностей конкретного типа ЭВМ выделяют машинно-независимые и машинно-зависимые ЯП.
По степени детализации алгоритма выделяют языки низкого и высокого уровня.
По степени ориентации на решение задач определенного класса выделяют универсальные и проблемно-ориентированные языки.
По способу написания программ выделяют процедурные и непроцедурные языки.

Логические значения выводятся прописными буквами (TRUE, FALSE).

Статьи к прочтению:

Основы алгоритмизации и программирование на языке Pascal


Похожие статьи: