Программирование Pascal

Автор работы: Пользователь скрыл имя, 26 Апреля 2015 в 20:41, контрольная работа

Краткое описание

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

Содержание

Ответить на вопросы:
1. Последовательность решения задач на ЭВМ.
2. Понятие и свойства алгоритма. Способы его записи.
3. Общая характеристика языка Паскаль. Алфавит языка. Выражения и операции. Стандартные функции.
4. Структура программы на языке Pascal.
5. Типы данных. Их классификация.
6. Операторы языка Паскаль. Оператор присваивания. Составной оператор. Операторы ввода и вывода данных.
7. Оператор безусловного перехода. Условный оператор. Оператор выбора.
8. Операторы цикла: с параметром, с предусловием, с постусловием.
9. Массив данных. Одномерные и двумерные массивы.
10. Запись. Массив записей.
11. Процедуры и функции. Описание подпрограмм. Заголовок. Параметры.
12. Строки.

Прикрепленные файлы: 1 файл

Программирование.docx

— 80.20 Кб (Скачать документ)

Функция.

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

  Первое отличие функции в ее заголовке. Он состоит из слова 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. Разработать программу, выполняющую следующие функции:

  • ввод данного списка в массив записей;
  • вывод массива записей на экран;
  • поиск, удовлетворяющим условиям из таблицы 4 с выводом  найденных записей на экран.

Ф.И.О.    

Домашний адрес 

Номер участка     

Год рождения

строка 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.

 

 


Информация о работе Программирование Pascal