О САЙТЕ
Добро пожаловать!

Теперь вы можете поделиться своей работой!

Просто нажмите на значок
O2 Design Template

ФЭА / Информатика / КУРСОВАЯ РАБОТА ПО ДИСЦИПЛИНЕ «ИНФОРМАТИКА» РАЗДЕЛ: АЛГОРИТМИЧЕСКИЙ ЯЗЫК PASCAL НА ТЕМУ: №15 РАЗРАБОТКА В СРЕДЕ TURBO PASCAL ПРОГРАММЫ, РЕАЛИЗУЮЩЕЙ СОЗДАНИЕ ОДНОГО МАССИВА ИЗ ДВУХ

(автор - student, добавлено - 15-05-2014, 14:39)

 СКАЧАТЬ:  prog29.zip [109,01 Kb] (cкачиваний: 30)

 

 

КУРСОВАЯ РАБОТА

ПО ДИСЦИПЛИНЕ «ИНФОРМАТИКА»

РАЗДЕЛ: АЛГОРИТМИЧЕСКИЙ ЯЗЫК PASCAL

НА ТЕМУ: №15

РАЗРАБОТКА В СРЕДЕ TURBO PASCAL ПРОГРАММЫ, РЕАЛИЗУЮЩЕЙ СОЗДАНИЕ ОДНОГО МАССИВА ИЗ ДВУХ

 

 

 

Оглавление

Оглавление. 2

Введение. 3

Постановка задачи. 6

Описание основных операторов и используемых модулей. 7

Контрольная задача. 16

Задача 5. 19

Задача 17. 22

Задача 29. 25

Приложение. 27

Список использованной литературы.. 29

 


Введение

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

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

Язык программирования Паскаль (назван в честь выдающегося французского математика и философа   Блеза Паскаля (1623 — 1662)), разработан в 1968 — 1971 гг. Николаусом Виртом, профессором, директором Института информатики Швей­царской высшей политехнической школы. Язык Паскаль, созданный первоначально для обучения программированию как систематической дисциплине, скоро стал широко использоваться для разработки программных средств в профессиональном программировании.

Широкой популярности Паскаля среди программистов способствовали сле­дующие причины:

–    Благодаря своей компактности, удачному первоначальному описанию Пас­каль оказался достаточно легким для изучения.

–    Язык программирования Паскаль отражает фундаментальные и наиболее важные концепции (идеи) алгоритмов в очевидной и легко воспринимаемой фор­ме, что предоставляет программисту средства, помогающие проектировать про­граммы.

–    Язык Паскаль позволяет четко реализовать идеи структурного программиро­вания и структурной организации данных.

–    Язык Паскаль сыграл большую роль в развитии методов аналитического до­казательства правильности программ и позволил реально перейти от методов от­ладки программ к системам автоматической проверки правильности программ.

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

–    Использование в Паскале простых и гибких структур управления: ветвлений, циклов.

Трансляторы

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

Существует три вида трансляторов: интерпретаторы, компиляторы и ассембле­ры.

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

Компилятор преобразует (транслирует) всю программу в модуль на машин­ном языке, после этого программа записывается в память компьютера и лишь по­том исполняется.

Ассемблеры переводят программу, записанную на языке ассемблера (автоко­да), в программу на машинном языке.

Любой транслятор решает следующие основные задачи:

анализирует транслируемую программу, в частности определяет, содержит ли она синтаксические ошибки;

генерирует выходную программу (ее часто называют объектной или рабочей) на языке команд ЭВМ (в некоторых случаях транслятор генерирует выходную про­грамму на промежуточном языке, например, на языке ассемблера);

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

 


Постановка задачи

Разработка в среде Turbo Pascal программы, реализующей создание одного массива из двух.

Задания:

1)                        Изучить работу с массивами и элементами массивов. Решить контрольные задачи: № 5, 17, 29.

2)                        Проанализировать методы создания массива. Решить контрольную задачу:

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

Задача 5. Массив состоит из элементов, соответствующих количеству учеников разных классов школы. Найти:

–    среднее количество учеников в классе;

–    классы с максимальным и минимальным количеством учеников;

–    количество классов, имеющих учеников больше среднего количества;

–    на сколько процентов увеличилось бы количество учеников школы, если бы все классы имели столько же учеников, что и в классе с максимальным количеством.

Задача 17. Написать программу, определяющую сумму положительных и количество отрицательных элементов среди элементов, расположенных между первым по порядку максимальным и последним по порядку минимальным элементами массива.

Задача 29. Составить программу вывода на экран всех натуральных чисел, не превосходящих N и делящихся на каждую из своих цифр.


Описание основных операторов и используемых модулей

Основные символы

   Основные символы языка-буквы,  цифры и специальные символы составляют его   алфавит.   ТУРБО ПАСКАЛЬ включает следующий набор основных символов:

   1) 26 латинских строчных и 26 латинских прописных букв:

     A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

     a b c d e f g h i j k l m n o p q r s t u v w x y z

   2) _ подчеркивание

   3) 10 цифр:

     0 1 2 3 4 5 6 7 8 9

   4) знаки операций:

     +   -   *   /   =   <>   <   >   <=   >=   :=  @

   5) ограничители:

     .   ,   '   (   )   [   ]   (.  .)   {  }  (*  *)   ..   :   ;

   6) спецификаторы:

     ^  #  $

   7) служебные (зарезервированные) слова (например array, if, then, do, begin, end)

Идентификаторы

   Имена (идентификаторы) называют элементы языка - константы, метки, типы, переменные, процедуры, функции, модули, объекты. Имя – это последовательность букв и цифр, начинающаяся с буквы. В именах может использоваться символ _ подчеркивание. Имя может содержать произвольное количество символов, но значащими являются 63 символа. Не разрешается  в  языке ПАСКАЛЬ использовать в качестве имен служебные слова и стандартные имена,  которыми названы стандартные константы, типы, процедуры, функции и файлы.

     Примеры имен языка ПАСКАЛЬ:

    A    b12    r1m    SIGMA    gamma    I80_86

   Числа в языке ПАСКАЛЬ обычно  записываются  в  десятичной  системе счисления. Они    могут быть целыми и действительными.  Положительный знак числа может быть опущен.  Целые числа записываются в  форме  без десятичной точки.

Стандартные типы данных

К стандартным  относятся  целые,    действительные,    логические, символьный и адресный типы. ЦЕЛЫЕ типы  определяют константы,  переменные и функции,  значения которых реализуются множеством целых чисел,  допустимых в данной ЭВМ.

 Тип           диапазон значений                  требуемая память

Shortint      -128 .. 127                                 1 байт

Integer        -32768 .. 32767                         2 байта

Longint      -2147483648 .. 2147483647    4 байта

Byte           0 .. 255                                       1 байт

Word          0 .. 65535                                   2 байта

__________________________________________________________

       Над целыми операндами  можно  выполнять  следующие  арифметические операции: сложение,  вычитание, умножение, деление, получение остатка от деления.

   Операции отношения,  примененные к целым операндам, дают результат логического типа TRUE или FALSE ( истина  или  ложь ). В языке ПАСКАЛЬ имеются следующие операции отношения: равенство =, неравенство <>, больше или равно >=,  меньше или равно <=,  больше >, меньше < .

   ДЕЙСТВИТЕЛЬНЫЕ типы  определяет  те  данные,   которые реализуются подмножеством действительных чисел, допустимых в данной ЭВМ.

   К аргументам действительного типа применимы также функции         Trunc(X) и Round(X), дающие целый  результат.  Первая из них выделяет целую часть действительного  аргумента  путем  отсечения дробной части, вторая округляет аргумент до ближайшего целого.

Константы

Тип констант  в  языке ПАСКАЛЬ определяется по их виду:  константы целого типа - это целые числа,  не содержащие десятичной точки, константы действительного  типа - действительные числа,  логические константы - логические значения TRUE и FALSE, символьные константы – либо строки длиной в один символ.

Для этого используется конструкция

    имя переменной: тип = значение;

которая должна быть размещена в разделе описания констант, например:

    const W = 0.4;

Выражения

Выражение состоит  из  констант,  переменных,  указателей функций, знаков операций и скобок. Выражение задает правило вычисления некоторого значения.  Порядок вычисления определяется старшинством (приоритетом) содержащихся  в нем операций. В языке ПАСКАЛЬ принят следующий приоритет операций:

  1. операции типа умножения  *  /  div  mod  and  shl  shr

  2. операции типа сложения  +  -  or  xor

  3. операции отношения  =   <>   <    >   <=    >=  in

Выражения входят в состав многих операторов языка ПАСКАЛЬ, а также могут быть аргументами встроенных функций.

Оператор присваивания

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

Формат: <переменная> := <значение_или_переменная>;

Операторы ввода и вывода

Для ввода исходных данных используются операторы процедур ввода:

 

         Read(A1,A2,...AK);

         ReadLn(A1,A2,...AK);

         ReadLn;

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

Для вывода результатов работы программы на экран используются операторы:

         Write(A1,A2,...AK);

         WriteLn(A1,A2,...AK);

         WriteLn;

Оператор вывода  позволяет  задать  ширину поля вывода для каждого элемента списка вывода.  В этом случае элемент списка вывода имеет вид А:К, где А - выражение или строка,  К - выражение либо константа целого  типа. Если выводимое значение занимает в поле вывода меньше позиций, чем К, то перед этим значением располагаются пробелы.  Если выводимое значение не помещается в ширину поля К,  то для этого значения будет отведено необходимое количество позиций. Для величин действительного типа элемент списка вывода может иметь вид А:К:М, где А - переменная или выражение действительного типа,  К - ширина поля вывода,  М  -  число  цифр дробной части   выводимого значения.  К и М - выражения или константы целого типа.  В этом случае действительные значения выводятся в форме десятичного числа с фиксированной точкой.

    Пример записи операторов вывода:

        WriteLn(rA, rB:10:2);

        WriteLn(iP, iQ:8);

 

Структура программы

Программа на языке ПАСКАЛЬ состоит из заголовка, разделов описаний и раздела операторов.

   Заголовок программы содержит имя программы, например:

      Program PRIM;

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

   Раздел описания  модулей  определяется служебным словом USES и содержит имена подключаемых модулей (библиотек)  как входящих в состав системы TURBO PASCAL, так и написанных пользователем. Раздел описания модулей должен быть первым среди разделов описаний. Имена модулей отделяются друг от друга запятыми:

    uses  CRT, Graph;

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

label 3, 471, 29, Quit;

Описание констант  позволяет использовать имена как синонимы констант, их необходимо определить в разделе описаний констант:

const K= 1024;   MAX= 16384;

В разделе описания переменных необходимо определить тип всех переменных, используемых в программе:

var P,Q,R: Integer;

A,B:   Char;

F1,F2: Boolean;

Описание типов,  процедур и функций будет рассмотрено ниже. Отдельные разделы описаний могут отсутствовать,  но следует помнить,  что в ПАСКАЛЬ - программе   должны  быть обязательно описаны все компоненты программы.

   Раздел операторов  представляет собой составной оператор,  который содержит между служебными словами

begin.......end

последовательность  операторов.  Операторы  отделяются  друг от друга символом ;.

   Текст программы заканчивается символом точка.

   Кроме описаний  и  операторов  ПАСКАЛЬ - программа может содержать комментарии, которые  представляют собой произвольную  последовательность символов,  расположенную между открывающей скобкой комментариев { и закрывающей скобкой комментариев }.

 

Пример записи простой программы:

 

         Program TRIANG;

          var A, B, C, S, P: Real;

          begin

           Read(A,B,C);

           WriteLn(A,B,C);

            P:=(A+B+C)/2;

            S:=Sqrt(P*(P-A)*(P-B)*(P-C));

           WriteLn('S=',S:8:3)

          end.

Условный оператор IF.

Условный оператор позволяет проверить некоторое условие и в зависимости от результата выполнить тот или иной оператор или группу операторов. С помощью условных операторов программируются алгоритмы разветвляющейся структуры. 

Формат:

if <условие> then < оператор1> else < оператор2>;

где if, then, else – зарезервированные слова (обозначают если, то, иначе соответственно);

<условие> - произвольное выражение логического типа;

<оператор1>, <оператор2> - любые операторы языка Паскаль.

Условный оператор работает по следующему алгоритму: вначале  вычисляется выражение <условие>. Если результат - true (истина), то выполняется <оператор1>, а <оператор2> пропускается. Если результат - false (ложь), наоборот <оператор1> пропускается, а выполняется <оператор2>.

Часть оператора, стоящая после служебного слова else, может отсутствовать. Тогда при значении true условного выражения выполняется <оператор1>, в противном случае этот оператор пропускается.

Формат:

If < условие > then < оператор>;

Один оператор if может входить в состав другого оператора if. В этом случае говорят о вложенности операторов.

Пример:

if  Условие1  then   if  Условие2  then  Оператор1  else  Оператор2;

Оператор цикла For.

Оператор повтора for часто называют оператором цикла с параметром, так как число повторений задается переменной, называемой параметром цикла, или управляющей переменной, которая на каждом шаге цикла автоматически изменяет свое значение ровно на единицу – поэтому ее и называют счетчиком.

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

Оператор повтора for состоит из заголовка (строка, содержащая for…do ) и тела цикла.

Формат:

for < параметр цикла >:=А to B do < оператор >;

где for, do – зарезервированные слова (обозначают "для", "выполняй" соответственно);

А и В – выражения, определяющие соответственно начальное и конечное значение параметров цикла;

< оператор > - тело цикла.

Если требуется выполнить после do несколько операторов, они обрамляются операторными скобками begin и end, образуя тем самым составной оператор.

Цикл while 

В отличие от цикла for, в цикле while заранее неизвестно сколько раз проработает цикл. Вместо задания параметров счетчика, там задается условие, при котором цикл будет продолжать работать. Если условие будет равно false, то цикл прекратит свою работу.

 

 

 

 

 

 

Контрольная задача

Блок-схема


Программа

program prog_k;

uses Crt;

var

  m : array[1..20] of integer;

  m1, m2 : array[1..10] of integer;

  i, j : integer;

  max : integer;

  mn, k : byte;

begin

  ClrScr;

  Randomize;

  for i := 1 to 10 do

  begin

    m1[i] := Random(20);

    write(m1[i]:3);

  end;

  writeln;

  for i := 1 to 10 do

  begin

    m2[i] := Random(20);

    write(m2[i]:3);

  end;

  writeln;

  max := -1;

  for i := 20 downto 1 do

  begin

    for j := 1 to 10 do

    begin

      if m1[j] > max then

      begin

        max := m1[j];

        k := j;

        mn := 1;

      end;

      if m2[j] > max then

      begin

        max := m2[j];

        k := j;

        mn := 2;

      end;

    end;

    m[i] := max;

    max := 0;

    if mn = 1 then

      m1[k] := -1

    else

      m2[k] := -1;

  end;

  for i := 1 to 20 do

    write(m[i]:3);

  readln;

end.

 

Задача 5

Блок-схема

 

 


Программа

program prog5;

uses Crt;

var

  a : array[1..11] of byte;

  i     : integer;

  sr   : byte;   { Среднее количество учеников }

  min   : byte;   { Минимальное количество учеников }

  max   : byte;   { Максимальное количество учеников }

  Nmin  : byte;   { Класс с минимальным количеством учеников }

  Nmax  : byte;   { Класс с максимальным количеством учеников }

  vsego : byte;   { Всего учеников в классе }

  bs: byte;  { Количество классов с количеством учеников больше среднего }

  incr  : real;

begin

  ClrScr;   Randomize;

  for i := 1 to 11 do

  begin

    a[i] := 15 + random(10);

    writeln('Учеников в ', i, '-м классе: ', a[i]);

  end;

  writeln;

  min   := a[1];

  Nmin  := 1;

  for i := 1 to 11 do

  begin

    sr := sr + a[i];

    if max < a[i] then

    begin

      max   := a[i];

      Nmax  := i;

    end;

    if min > a[i] then

    begin

      min   := a[i];

      Nmin  := i;

    end;

  end;

  vsego := sr;

  sr := Round( sr/11 );

  incr := (11*max*100)/vsego-100;

  for i := 1 to 11 do

    if a[i] > sr then

      bs := bs + 1;

  writeln('В среднем учеников в классах: ', sr);

  writeln('Максимальное число учеников: ', max, ' в ', Nmax, '-м классе');

  writeln('Минимальное число учеников: ', min, ' в ', Nmin, '-м классе');

  writeln('Классов с количеством учеников больше среднего: ', bs);

  writeln('Всего учеников: ', vsego);

  writeln('Если бы во всех классах было учеников как в максимальном: ', incr:8:2);

  readln;

end.

 

Задача 17

Блок-схема

 


Программа

program prog17;

uses Crt;

const N = 20;

var

  a: array[1..N] of integer;

  min, max : integer;

  minI, maxI : byte; { Позиции минимального и максимального элементов в массиве}

  i : integer;

  sum, kol : integer;  { Сумма положительных и кол-во отрицательных элементов }

begin

  ClrScr;

  Randomize;

  for i := 1 to N do

  begin

    a[i] := Random(20)-5;

    write(a[i]:3);

  end;

  writeln;

  min := a[1];

  for i := 1 to N do

    if a[i] <= min then

    begin

      min := a[i];

      minI := i;

    end;

  for i := N downto 1 do

    if a[i] >= max then

    begin

      max := a[i];

      maxI := i;

    end;

  if maxI > minI then

  begin

    i := maxI;

    maxI := minI;

    minI := i;

  end;

  for i := maxI+1 to minI-1 do

    if a[i] < 0 then

      kol := kol+1

    else

      sum := sum+a[i];

  writeln('Последний минимальный элемент: ', min, ' в позиции: ', minI);

  writeln('Первый максимальный элемент: ', max, ' в позиции: ', maxI);

  writeln('Сумма положительных элементов: ', sum);

  writeln('Количество отрицательных элементов: ', kol);

  readln;

end.

 

Задача 29

Блок-схема

 


Программа

 

program prog29;

uses Crt;

var

  i,j,n ,k: integer;

  a : array[1..4] of byte;

begin

  ClrScr;

  write('Введите n(1...9999): ');

  readln(n);

  for i := 1 to N do

  begin

     if i > 999 then k := 4

      else if i > 99 then k := 3

       else if i > 9 then k := 2

        else k := 1;

    a[1] := i div 1000;

    a[2] := (i - a[1]*1000) div 100;

    a[3] := (i - a[1]*1000 - a[2]*100) div 10;

    a[4] := (i - a[1]*1000 - a[2]*100 - a[3]*10);

    for j := 4 downto 5-k do

      if a[j] <> 0 then

        if i mod a[j] = 0 then k := k - 1;

    if k = 0 then writeln(i:5);

  end;

  readln;

end.

 

Приложение

Контрольная задача

  

Задача 5

  


Задача 17

  

Задача 29

  


Список использованной литературы

  1. Немнюгин С.А., Перколаб Л. Изучаем Turbo Pascal. СПб.: Питер, 2003.
  2. Рапаков Г.Г., Ржеуцкая С.Ю. TURBO PASCAL для студентов и школьников. СПб.: БХВ - Петербург, 2004.
  3. А.Ф.Иванов, О.Н.Потапова, Салихова Г.Л. Методическое пособие по дисциплине «Информатика». Раздел: Основы алгоритмического языка Pascal. Альметьевск: АГНИ, 2007.
  4. Иванов А.Ф., Потапова О.Н., Салихова Г.Л. Информатика. Раздел: Word для начинающих: Лабораторный практикум для студентов вузов. Альметьевск, АлНИ 2003.
  5. Миронова К.В. «Учимся программировать: Turbo Pascal», Киев:  BHV, «Ирина» 2001г.

 

 


Ключевые слова -


ФНГ ФИМ ФЭА ФЭУ Яндекс.Метрика
Copyright 2021. Для правильного отображения сайта рекомендуем обновить Ваш браузер до последней версии!