Программирование в Паскале. Одномерные массивы

Школа №1 Л.М. Поземского

 

 

                                    

 

Реферат по информатике

 

«Программирование в Паскале. Одномерные массивы»

                       

                        

 

 

 

 

Шепилёв Данила Александрович

                                                                                                  9 «А» класс

                                                                

 

 

 

 

 

 

Псков, 2012 г.

Оглавление

Введение 3

Глава 1. Язык программирования Free Pascal 5

§1.1 История языка программирования Паскаль 5

§1.2 Язык Free Pascal и его особенности 7

§1.3 Структура и синтаксис программ в паскале 8

§1.4 Операторы в программе Free Pascal 12

§1.5 Цикл For в паскале. 14

Глава 2. Одномерные массивы в Паскале 16

§2.1 Понятие массива. 16

§2.2 Описание одномерного массива. 17

§2.3 Практическая часть. 18

Заключение 21

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

Введение

 

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

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

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

Цель  работы: рассмотреть использование одномерных массивов в языке программирования Паскаль.

Для достижения цели работы были поставлены следующие задачи:

  1. Обосновать актуальность данной темы.
  2. Рассмотреть дополнительную литературу по данной теме
  3. Рассмотреть особенности программирования в программе Free Pascal

Реферат состоит из введения, двух глав, заключения, списка литературы:

Во  введении обоснована актуальность работы, также определены цели и задачи работы.

Первая  глава содержит особенности языка программирования Free Pascal.

Во  второй главе  рассмотрены особенности работы с одномерными массивами в программе Free Pascal.

В заключении приведены общие выводы по работе.

      

               

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Глава 1. Язык программирования Free Pascal

§1.1 История языка программирования Паскаль

 

Pascal разрабатывался с 1968 по 1970 г. Николаусом Виртом. Цель заключалась в том, чтобы создать язык, лишенный многочисленных недостатков ALGOL. Pascal был назван в честь французского математика Блеза Паскаля, который еще в 1642 г. изобрел цифровой калькулятор. С конца 70-х до конца 80-х гг. этот язык доминировал среди языков, используемых на начальном этапе обучения программированию; позже его заменили С и C++, а затем Java.

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

В 1965 г., во время работы в  Стенфордском университете (Stanford University), Вирт разработал новую, расширенную версию ALGOL 60 для компьютеров серии IBM 360, в которую вошло определение указателей и структур данных. Этот язык, известный как ALGOLW, использовался в нескольких университетах, но его реализация ограничивалась только компьютерами IBM 360. Для выполнения программ на этом языке требовался значительный по размерам пакет программ поддержки обработки строк, вещественных чисел двойной точности и других сложных типов данных. Таким образом, ALGOL W в качестве системного языка программирования оказался малоэффективным.

В 1968 г. Вирт вернулся в Швейцарию  и начал работу над преемником ALGOL W - языком, который мог бы компилироваться  за один проход. Для создания исходного  компилятора был использован  алгоритм рекурсивного спуска. Этот компилятор выполнялся на компьютере Control Data. Также был разработан широко известный теперь интерпретатор Р-кода. Компилятор языка Pascal сначала транслировал исходную программу в программу на языке гипотетической машины со стековой архитектурой. Благодаря такой своей организации Pascal легко переносился на компьютеры других систем.

Язык Pascal развивался и совершенствовался, включал в себя новые возможности. Производились новые компиляторы и среды разработки для Pascal.

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

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

 

 

 

 

 

 

§1.2 Язык Free Pascal и его особенности

Free Pascal  - это свободно распространяемый компилятор языка Паскаль с открытыми исходными кодами

Достоинств языка программирование Free Pascal можно отметить следующее:

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

 

 

 

 

 

 

 

 

 

 

 

 

 

§1.3 Структура и синтаксис программ в паскале

 

Структура программ на языке  Pascal напоминает программы на С. Тем не менее в Pascal предусмотрена возможность описания внутренних локальных процедур и создания вложенной иерархии имен. Программа на Pascal представляет собой единый программный блок, в котором содержатся определения используемых подпрограмм. Программа на языке PASCAL состоит из: Заголовка и Блока программы.

Блок содержит: Раздел описания и Раздел операторов. 

Программы на Паскале начинаются с ключевого слова program и следующего за ним имени программы с точкой с запятой (в некоторых диалектах является необязательным), за именем может в скобках следовать список внешних файловых дескрипторов в качестве параметров; за ним следует тело программы, состоящее из секций описания переменных, типов и констант, объявлений процедур и функций и следующего за ними блока операторов, являющегося точкой входа в программу. В языке Паскаль блок ограничивается ключевыми словами begin и end. Операторы разделяются точками с запятой, после тела помещается точка, служащая признаком конца программы. Регистр символов в Паскале не имеет значения.

Таким образом, простейшая программа  на Паскале будет выглядеть следующим  образом:

program <имя программы>;

const …;{константы}

var …; {типов переменных}

begin

 … {основная программа}

end.

Программа не выполняет никаких  действий и содержит пустой блок операторов.

Пример программы, выводящей  строку «Hello, World!»:

program HelloWorld;

begin

writeln('Hello, World!')  { оператор вывода строки }

end.

Блок программы состоит  из шести разделов, следующих в  строго определенном порядке:

  • раздел меток (label)
  • раздел констант (const)
  • раздел типов (type)
  • раздел переменных (var)
  • раздел процедур и функций
  • раздел действий (операторов).

Раздел действий должен присутствовать всегда, остальные разделы могут  отсутствовать.

Каждый из первых четырех  разделов начинается с соответствующего ключевого слова (label, const, type, var), которое записывается один раз в начале раздела и отделяется от последующей информации только пробелом, либо концом строки, либо комментарием.

Раздел меток (label)

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

Общий вид:

label l1, l2, l3…;

здесь l1, l2, l3 – метки.

Пример. label 5, 10, 100;

Метка отделяется от оператора  двоеточием.

Пример. Пусть оператор a := b имеет метку 20. Тогда этот оператор выглядит так:

20: a := b;

Раздел констант (const)

Если в программе используются константы, имеющие достаточно громоздкую запись (например, число пи с 8-ю знаками), либо сменные константы (для задания  варианта программы), то такие константы  обычно обозначаются какими-либо именами  и описываются в разделе const, а в программе используются только имена констант. Это делает программу более наглядной и удобной при отладке и внесении изменений.

Общий вид:

const a1 = c1; a2 = c2; …

здесь a1 – имя константы, c1 – значение константы.

Пример. const pi = 3.14; c = 2.7531;

Раздел типов (type). Если в программе вводится тип, отличный от стандартного, то этот тип описывается в разделе type:

type t1 = вид_типа;

t2 = вид_типа;

где t1 и t2 – идентификаторы вводимых типов.

Пример. type color = (red, yellow, green, blue);

Здесь описан тип color, задаваемый перечислением значений.

Раздел переменных (var)

Пусть в программе встречаются  переменные v11, v12,…; все они должны быть описаны следующим образом:

var v11, v12,…: type1;

v21, v22,…: type2; …

здесь v11, v12,… - имена переменных; type1 – тип переменных v11, v12,…; type2 – тип переменных v21, v22,….

Пример. var k, i, j: integer; a, b: real;

Каждая переменная должна быть описана до ее использования  в программе и отнесена к одному и только одному типу. Названия разделов (const, type, var…) указываются только один раз.

Пример.

var a: real;

      b: real;

Таким образом, в разделе  var вводится имя каждой переменной и указывается, к какому типу эта переменная принадлежит. Тип переменной можно задать двумя способами: указать имя типа (например, real, color и т.д.), либо описать сам тип, например: array[1..16] of char

Раздел процедур и функций

Здесь присутствуют заголовки  и тела пользовательских процедур и  функций.

Раздел действий (операторов)

Эта часть программы начинается с ключевого слова begin и заканчивается словом end, после которого должна стоять точка. Раздел действий есть выполняемая часть программы, состоящая из операторов.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

§1.4 Операторы в программе Free Pascal

 

Рассмотрим несколько  групп операторов в Паскале:

  • Оператор присваивания;
  • Операторы ввода и вывода;
  • Условный оператор;

Оператор  присваивания служит для изменения значения переменной. В Паскале знак присваивания выглядит так :=

Оператор присваивания записывается в соответствии с общим правилом: <имя переменной> := <выражение>;

Например: Х:=А, где X —переменная, А — выражение.

Арифметическое выражение  может включать:

    • константы
    • имена переменных
    • знаки арифметических операций
    • вызовы функций
    • круглые скобки ( )

 

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

 Процедура чтения READ. Обеспечивает ввод числовых данных, символов, строк и т.п. для последующей обработки программой. Формат:

Read (x1, x2, ..., xN);

Readln (x1, x2, ..., xN);

Где х1, х2, ... - переменные допустимых типов данных. Эти значения вводятся   с клавиатуры и отображаются на экране. Значения должны вводится в строгом соответствии с синтаксисом языка Паскаль.

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

Процедура записи WRITE.  Производит вывод числовых данных, символов, строк и т.п. Формат:

Write (y1, y2, ...,yN);

Writeln (y1, y2, ..., yN);

Например: writeln ( 'Привет!' ); выведет на сообщение Привет!

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

Если условие выполняется, то будет выполнена инструкция "1", если нет, то - инструкция "2". Несмотря на то, что в схеме присутствуют два действия, выполнено будет  только одно, так как условие либо ложно, либо истинно. Третьего не дано. Такая схема позволяет решать задачи, в которых в зависимости  от сложившихся обстоятельств требуется совершить то или иное действие.

Формат условного оператора  на языке Паскаль: 
If <условие>  Then <оператор 1> 
Else <оператор 2>;

Например: if a>0 then a:=a+1

Else read(a);

 

 

 

 

 

 

 

§1.5 Цикл For в паскале.

 

При решении задач может возникнуть необходимость повторить одни и  те же действия несколько или множество  раз. В программировании блоки кода, которые требуется повторять  не единожды, оборачиваются в специальные  конструкции – циклы. У циклов выделяют заголовок и тело. Заголовок определяет, до каких пор или сколько раз тело цикла будет выполняться. Тело содержит выражения, которые выполняются, если в заголовке цикла выражение вернуло логическую истину (True, не ноль). После того как достигнута последняя инструкция тела, поток выполнения снова возвращается к заголовку цикла. Снова проверяется условие выполнения цикла. В зависимости от результата тело цикла либо повторяется, либо поток выполнения переходит к следующему выражению после всего цикла.

Цикл for. Часто цикл for называют циклом со счетчиком. Этот цикл используется, когда число повторений не связано с тем, что происходит в теле цикла. Т.е. количество повторений может быть вычислено заранее (хотя оно не вычисляется).

В заголовке цикла указываются  два значения. Первое значение присваивается  так называемой переменной-счетчику, от этого значения начинается отсчет количества итераций (повторений). Отсчет идет всегда с шагом равным единице. Второе значение указывает, при каком  значении счетчика цикл должен остановиться. Другими словами, количество итераций цикла определяется разностью между  вторым и первым значением плюс единица. В Pascal тело цикла не должно содержать выражений, изменяющих счетчик.

Цикл for существует в двух формах:

for счетчик:=значение to конечное_значение do

     тело_цикла;

 

for счетчик:=значение downto конечное_значение do

     тело_цикла;

Если между начальным  и конечным выражением указано слово to, то на каждом шаге цикла значение параметра будет увеличиваться на единицу. Если же указано downto, то значение параметра будет уменьшаться на единицу.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Глава 2. Одномерные массивы в Паскале

§2.1 Понятие массива.

 

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

Массив – структура  однотипных данных с индексированным  доступом. Каждый элемент массива  получает один или несколько номеров, называемых индексами. Индексы записываются в квадратных скобках через запятую.

Массивы бывают следующих  видов:

  1. Одномерные – каждый элемент массива получает два индекса.
  2. Многомерные – каждый элемент получает более 2-х индексов.

Одномерным массивом называется упорядоченная совокупность однотипных элементов, обозначенных каждая одним  и тем же именем с различными целочисленными индексами, изменяющимися по порядку. Представим что у нас есть переменные a,b,c,d,e,f и все они одного типа integer. Довольно нерационально прописывать каждую переменную в отдельности, тем более ,если их например больше 100. Гораздо удобнее взять один массив, который и будет содержать в себе все эти элементы. Одномерный массив по сути является такой же переменной, только содержащей в себе вложения в виде других переменных.

§2.2 Описание одномерного массива.

 

Объявляется он также в  разделе var и выглядит так.

var имя массива : Array [диапазон значений] Of базовый тип;

 

Имя массива - здесь любое  имя, как и у переменной, не считая зарезервированных (таких как read, write, for, do, if, then и других). Диапазон значений - тут количество значений ,которое задается например от 1 до 100 
базовый тип - любой тип данных, который будет применен для каждого элемента массива, например integer.

Например var a:array [1..30] of integer;

Порядковый номер элемента массива называется индексом этого элемента.

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

Если индекс массива может  приобретать все допустимые значения определенного перечислимого типа, то при описании массива возможно задание имени типа вместо границ изменения индекса. При этом границами  индекса будут первое и последнее  значения в описании типа индекса. Границы  изменения индексов могут задаваться с помощью ранее объявленных  констант. Рекомендуется предварительно объявлять тип массива в разделе  описания типов.

Обратиться к элементу массива можно используя следующую структуру a[номер в диапазоне массива].

§2.3 Практическая часть.

 

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

Program mas1;

Var i: integer;

    Sum : real;

    M : array [1..10] of Real;

begin

For i:=1 to 10 do  begin

        write (‘введите элемент массива');

         readln(m[i]); end;

sum:=0;

For i:=1 to 10 do

    Sum:=sum+m[i];

Writeln (‘Сумма элементов= ’,sum);

readln;

end.

Пример 2: Написать программу, которая определяет минимальный элемент массива.

Program mas2;

Var i: integer;

    min : real;

    M : array [1..10] of Real;

begin

For i:=1 to 10 do  begin

        write (‘введите элемент массива');

         readln(m[i]); end;

min:= m[1];

For i:=2 to 10 do

    If m[i]>min then min:= m[i];

Writeln (‘Минимальный элемент массива= ’,min);

readln;

end.

Пример  3: Подсчитать количество положительных элементов одномерного массива.

Program mas3;

Var i,j,n: integer;

    M : array [1..10] of Real;

begin

For i:=1 to 10 do  begin

        write (‘введите элемент массива');

         readln(m[i]); end;

n:=0;

For i:=1 to 10 do

        If m[i]>0 then n:=n+1; 

        Writeln (‘Положительных элементов ’, n);

readln;

end.

Пример  4: Сортировка элементов массива. Методом пузырька.

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

Program mas4;

Var i,j,l: integer;

    M : array [1..10] of integer;

Begin

write (‘введите элементы массива');

For i:=1 to 10 do  begin

     readln(m[i]); end;

For i:=1 to 10 do

For j:=10 downto 2 do 

    If m[j-1]>m[j] then begin

    L:= m[j-1];

    m[j-1]:=m[j];

    m[j]:=L; end;

For i:=1 to 10 do Writeln (m[i]);

readln;

end.

 

 

 

 

 

Заключение

 

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

Умение писать программы  — это такое же умение, как  и умение, плавать, танцевать или жонглировать. Несмотря на то, что компьютеры кажутся очень сложными электронными машинами, практически любой может научиться создавать программы, не вдаваясь в подробности о том, как именно работает компьютер.

Рассмотрев  дополнительную литературу,   изучив особенности работы с одномерными массивами на языке программирования Free Pascal, мною был разработан реферат «Программирование в Паскале. Одномерные массивы».

Мною были рассмотрены  такие вопросы как история  языка программирования паскаль, структура  и синтаксис программ, типы переменных на языке Free Pascal, операторы и циклы, а так же тип данных массив, способ задания массива, операции над массивами. Более пристальное внимание было отведено практической части, были рассмотрены различные задачи которые можно легко реализовать, используя одномерные массивы.

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

Проанализировав проделанную  работу, считаю цель работы достигнутой, а поставленные задачи выполнены.

 

 

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

  1. Алексеев Е.Р. Самоучитель по программированию на Free Pascal и Lazarus / Алексеев Е.Р., Чеснокова О.В., Кучер Т.В. - Донецк.: ДонНТУ, Технопарк ДонНТУ УНИТЕХ, 2009. - 503 с.
  2. Моисеев Л.- Полный справочник школьника 5-11 класс, / Моисеев Л., Бедрина Е., Панин Д., – М.: Владис, 2012г. 768 с.: ил.
  3. Потопахин В.В. Turbo Pascal: решение сложных задач. Издательство "БХВ-Петербург", 2006, 208 с.
  4. Угринович Н.Д. Информатика и ИКТ. Учебник для 9 классов. – М.: БИНОМ. Лаборатория знаний, 2009. – 295 с.: ил.
  5. Ускова О.Ф. Программирование на языке Паскаль. Задачник. . – СПб.: Питер, 2009. – 336 с.: ил.
  6. Фаронов В.В. Turbo Pascal 7.0 Начальный курс. – Изд.: "ОМД Групп" 2008, 577 с.
  7. Шпак Ю.А. Turbo Pascal 7.0 на примерах. – Изд. "Юниор", 2008, 498 с.
  8. Freepascal.ru Информационный портал для разработчиков [Электронный ресурс]. – Режим доступа: http://www.freepascal.ru/, свободный. – Загл. с экрана. - Яз. рус.

 


Программирование в Паскале. Одномерные массивы