Автор работы: Пользователь скрыл имя, 26 Апреля 2015 в 20:41, контрольная работа
На первом этапе анализируется условие задачи, определяются исходные данные и результаты, устанавливается зависимость между величинами, рассматриваемыми в задаче. Некоторые задачи имеют множество способов решения, поэтому необходимо выбрать способ решения (сделать постановку задачи, составить модель задачи). Для этого необходимо определить математические соотношения между исходными данными и результатом. Выполнив перевод задачи на язык математики, получают математическую модель.
Ответить на вопросы:
1. Последовательность решения задач на ЭВМ.
2. Понятие и свойства алгоритма. Способы его записи.
3. Общая характеристика языка Паскаль. Алфавит языка. Выражения и операции. Стандартные функции.
4. Структура программы на языке Pascal.
5. Типы данных. Их классификация.
6. Операторы языка Паскаль. Оператор присваивания. Составной оператор. Операторы ввода и вывода данных.
7. Оператор безусловного перехода. Условный оператор. Оператор выбора.
8. Операторы цикла: с параметром, с предусловием, с постусловием.
9. Массив данных. Одномерные и двумерные массивы.
10. Запись. Массив записей.
11. Процедуры и функции. Описание подпрограмм. Заголовок. Параметры.
12. Строки.
Функция.
Подпрограмма-функция предназначена для вычисления какого-либо параметра, у этой подпрограммы два основных отличия от процедуры.
Первое отличие функции в ее заголовке. Он состоит из слова function, за которым следует имя функции, далее в круглых скобках - список формальных параметров, затем через двоеточие записывается тип функции - тип возвращаемого параметра. Функция может возвращать параметры следующих типов: любого порядкового, любого вещественного, стандартного типа string, любого указателя, в том числе и типа PChar.
Второе отличие заключается в том, что в теле функции хотя бы раз имени функции должно быть присвоено значение.
Если имя функции внутри ее описания используется в правой части оператора присваивания, то это означает, что функция вызывает себя рекурсивно. Для вызова функции из основной программы или другой подпрограммы следует в выражении, где необходимо использовать значение функции, указать имя функции со списком фактических параметров, которые должны совпадать по количеству и типам с формальными параметрами функции.
12. Строки.
В Turbo Pascal тип-строка (стандартный тип string) - последовательность символов произвольной длины (до 255 символов). Строку можно рассматривать как массив символов, однако в связи с широким использованием строк и некоторыми особенностями по сравнению со стандартными массивами они выделены в отдельный тип данных. У типа-строки в квадратных скобках может быть указан его размер (от 1 до 255). Если размер строки не указан, он считается равным 255.
Для строк применимы операции конкатенации (+) и сравнения. Операция конкатенации добавляет к первой строке вторую.
Сравнивать можно строки разной длины. Сравнение осуществляется слева направо в соответствии с ASCII-кодами соответствующих символов. Считается, что отсутствующие символы в более короткой строке имеют код меньше кода любого действительного символа.
Фактически строка N символов представляет собой массив из N+1 символа. Нулевой символ предназначен для указания используемого количества символов строки и может изменяться от символа с кодом 0 до символа с кодом N. С ним можно работать как и с остальными символами строки (записывать и читать его значение и т. д.), но не забывая о его основном предназначении.
В версии 7.0 для совместимости с другими языками программирования и средой Windows введен еще один вид строк - строки, оканчивающиеся нулевым байтом - символом с кодом 0 (т. н. ASCIIZ-строки). В отличие от строк типа string у этих строк не накладывается ограничение на их размер (фактически размер может быть до 65535 байтов). Этим строкам дан стандартный тип PChar. Фактически этот тип является указателем на символ.
Задание 2
Составить блок-схему и программу.
Одномерный массив из 70 элементов (элементы массива – случайные целые числа в интервале от -30 до 20) выдать на экран в виде матрицы из 7 строк и 10 столбцов.
Найти норму вектора, координатами которого являются положительные элементы массива.
Блок-схема.
Алгоритм вычисления нормы вектора положительных элементов массива “a”.
Листинг программы.
Program Program1;
const
k = 80; z1 = -30; z2 = 20; n = 10; m = 7;
var
a: array[1..k] of integer;
i, j: integer;
norm: real;
begin
randomize;
for i := 1 to k do
begin
a[i] := random(z1, z2);
end;
for i := 1 to n do
begin
for j := 1 to m do
write(a[i + j]:5);
writeln;
end;
norm := 0;
for i := 1 to k do
begin
if a[i] > 0 then
norm := norm + sqr(a[i]);
end;
writeln;
writeln('Норма вектора: ', sqrt(norm));
readln;
end.
Задание 3
Составить программу.
Наиболее рациональным методом сформировать двумерный массив из 7 строк и 7 столбцов, если элементы массива выражаются формулой: Для данного массива oпределить количество и координаты отрицательных элементов главной диагонали. Поменять местами первый и пятый столбцы матрицы и с помощью процедуры выдать на экран исходную и преобразованную матрицы.
Листинг программы.
Program Program2;
const
n = 7; m = 7;
type
Arr = array [1..n, 1..m] of real;
ind = record
i,
j: integer;
end;
var
a: Arr;
coordinates: array[1..n] of ind;
i, j, num: integer;
c: real;
function format(num: real): real;
begin
format := round(num * 1000) / 1000;
end;
procedure view(mt: Arr);
var
i, j: integer;
begin
for i := 1 to n do
begin
for j := 1 to m do
write(format(mt[i, j]):7);
writeln;
end;
end;
begin
for i := 1 to n do
for j := 1 to m do
a[i, j] := (3 * cos(i)) / (ln(2 * i + j) - 1);
num := 0;
for i := 1 to n do
for j := 1 to m do
begin
if i = j then
if a[i, j] < 0 then
begin
coordinates[i].i := i;
coordinates[i].j := j;
inc(num);
end;
end;
view(a);
writeln(num);
for i := 1 to n do
if coordinates[i].i <> 0 then
write(coordinates[i].i, ',', coordinates[i].j, ' ');
writeln;
for i := 1 to n do
begin
c := a[i, 1];
a[i, 1] := a[i, 5];
a[i, 5] := c;
end;
view(a);
readln;
end.
Задание 4
Составить программу.
Дан список, содержащий не менее 10 записей, каждая из которых имеет структуру, указанную в таблице 3. Разработать программу, выполняющую следующие функции:
Ф.И.О. Домашний адрес Номер участка Год рождения |
строка 15 символов строка 20 символов целое число 1900..2012 |
Условие: поиск всех граждан, родившихся после 1970 года, проживающих по улице Космонавтов.
Листинг программы.
Program Program3;
const
n = 10;
type
dat = 1900.. 2012;
info = record
fio: string[15];
adress: string[20];
i: integer;
year: dat;
end;
var
people: array[1..n] of info;
i: integer;
{=============================
function enter(): info;
var
s: string;
n: integer;
begin
while true do
begin
writeln('Введите Ф.И.О.(не более 15 символов): ');
readln(s);
if (length(s) < 15) and (length(s) <> 0) then
begin
result.fio := s;
break;
end;
writeln('Неверно!');
end;
while true do
begin
writeln('Введите адрес(не более 20 символов): ');
readln(s);
if (length(s) < 20) and (length(s) <> 0) then
begin
result.adress := s;
break;
end;
writeln('Неверно!');
end;
while true do
begin
writeln('Введите номер участка(в числовом формате): ');
try
readln(n);
result.i := n;
break;
except
writeln( 'Неверно!');
end;
end;
while true do
begin
writeln('Введите год рождения: ');
try
readln(n);
if (n >= 1900) and (n <= 2012) then
begin
result.year := n;
break;
end;
writeln('Неверно!');
except
writeln( 'Неверно!');
end;
end;
end;
{=============================
{=============================
procedure view(s: info);
begin
writeln('Ф.И.О. - ':16, s.fio);
writeln('Адрес - ':16, s.adress);
writeln('Номер участка - ':16, s.i);
writeln('Год рождения - ':16, s.year);
end;
{=============================
begin
for i := 1 to n do
begin
writeln(i,')');
people[i] := enter();
end;
writeln;
writeln('---------------------
for i := 1 to n do
begin
writeln(i,')');
view(people[i]);
end;
writeln('---------------------
for i := 1 to n do
begin
writeln;
if (people[i].year > 1970) and
(pos('Космонавтов', people[i].adress) <> 0) then
view(people[i]);
end;
readln;
end.