Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

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

Содержание:

Введение

Для чего нам вообще нужно программирование и какую пользу оно приносит обществу? Как и в повседневных делах мы обдумываем алгоритм[1] их решения. После того, как алгоритм уже нами обработан и запомнен, мы выполняем задачи постепенно, пошагово. Можно сказать, что мы являемся исполнителями, действуя определенной инструкции. Но в роли исполнителя лучше подходит компьютер, железо, в который вкладывается алгоритм, написанный человеком. Задачи на нем будут выполнены строго по инструкциям и в разы быстрее. Сам по себе компьютер, пока что, ничего не понимает и работает исключительно так, как его запрограммировали, вложив в него ту или иную задачу или программу. Без основных знаний (например, математики, информационных технологий или предметной области и т.д.) придумать и описать алгоритм будет практически невозможной задачей, и если даже такие знания присутствуют, то это не полностью, но частично облегчат задачу, ведь это очень трудоемкий и творческий процесс, который занимает не мало времени, но это того стоит.

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

Что касается моего мнения по выбранной теме, мне нравиться программировать, и я имею в этом может и не большой, но опыт. Я уже умею легко ориентироваться в строчках кода и хороша знаю синтаксис таких языков как: Java SE, Java, C, C++, C#, Python, HTTP и собственно Pascal. На языке Java, мной уже написана лёгонькая 2D игра (ее внешний вид я прикреплю в приложении), на которую я потратил 1.5 месяца непосильного труда, исписал множество черновиков с целью достигнуть лучшего алгоритма для функционирования моего приложения, но результат конечно же радует, ведь ты знаешь, что написал его сам и полностью понимаешь, как работает каждая кнопка и каждое действие, происходящее в игре. С языком Pascal я знаком еще со школьной скамьи, и это был первый язык, которому меня обучали. И ты радуешься каждой строчке, выведенной в командной строке, потому что написанный тобою код функционирует, согласно поставленной учителем задаче.

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

1.Знакомство с языком программирования Pascal

1.1. История Pascal

Язык программирования Pascal является одним из самых популярных, и широко используется в школах и в вузах. Данный язык, можно сказать, является основой для других языков.

Свое название язык Pascal получил  в честь французского математика, физика, литератора и философа Блеза Паскаля, который создал вычислительное устройство(паскалевое колесо), которое производила операции над числами. Сам язык был создан Никлаусом Виртом, швейцарский ученый, на тот момент доцент факультета информатики Стэнфордского университета, в 1968-1969 после его участия в разработке языка Алгол-68[2].

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

Стандарты языка Pascal:

  1.  Unextended Pascal был разработан в 1983 году. Совпадает с описанием языка по Вирту.
  2. Extended Pascal содержит расширения для модульного программирования и имеет прямой доступ к файлам, возможность работы со строками и др.
  3. Object Pascal принят в 1993 г. Он поддерживает объектно-ориентированное программирование.

1.2. Установка среды программирования

Для реализации какого - либо проекта, написанного на языке программирования, необходима среда разработки, позволяющая упростить работу и помочь программисту в некоторых моментах, например, существуют горячие клавиши, кнопки, команды, с помощью которых написание кода будет в разы быстрее и приятнее. Так же, возможность скомпилировать код (перевести, нами привычный, для понимания код, в понятный, для компьютера, язык), т.к. в операционной системе Windows, нет заранее установленных компиляторов[3], как в Linux.

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

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

1. Переходим по этой ссылке, на сайт, который предоставляет бесплатную установку PascalABC.NET - http://pascalabc.net

2. Переходим на другую страницу, для выбора нужной версии:

3. В зависимости от вашей операционной системы, выбираем нужную нам версию (я работаю на Windows), и начнётся автоматическая установка:

4. После загрузки, нажимаем на только что установленный нами файл с расширением .exe и должно открыться окно установки. Выделяем все предложенные компоненты для установки и нажимаем далее:

6. Выбираем место, куда будут установлены все необходимые файлы и нажимаем далее:

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

Вот и все! Среда разработки установлена и готова к работе. Если вы проделали все те шаги, которые я обозначил выше, то у вас должно было открыться вот это:

1.3. Инструкция к пользованию среды PascalABC

В данном разделе я покажу и объясню, как пользоваться программой PascalABC, какие основные моменты необходимо знать, для того чтобы начать, обучение.

Как и в многих пособиях по изучению языков программирования, автор начинает с вывода в консоль приветственного сообщения Hello world!, но для этого настроим рабочее окно:

Переходим в раздел Файл и нажимаем Новый проект, после этого даем ему название и выбираем тип проекта – Консольное приложение и нажимаем Ок.

Создастся новый проект с расширением .pas, с котором мы и будем работать.

В открывшемся окне уже подготовлен «чистый лист» в которое сейчас нужно написать эти команды (разбор и их смысл мы рассмотрим в следующей части):

begin

writeln('Hello world!');

end.

Для запуска компиляции и выполнения инструкций, нужно нажать зеленую кнопку Play в верней части панели или такая же можно нажать в сочетании клавиш Fn + F9. В результате выполнения программы в консольном окне появляется следующее сообщение - Hello world!, что означает, что код был успешно скомпилирован, запущен и в нем не было обнаружено ошибок.

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

Можно сказать, что все уже готово и этого минимума вполне достаточно, чтобы начать «кодить». У среды не так много различных настроек, и, я думаю, каждый бы мог разобраться в ней сам, но мне бы хотелось показать вам все сразу, чтобы в дальнейшем легко ориентироваться в данном приложении:

1. Создание нового файла

2. Открыть уже имеющийся файл или проект

3. Сохранить

4. Компиляция и запуск программы

5. Рабочее окно

6. Консольное окно, для вывода результата выполнения программы, списка ошибок и сообщения компилятора

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

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

1.4. Компиляция

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

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

Вот что выписывает нам компилятор в консоль:

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

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

program r (input, output, x, y,…);

Где r – название программы, input –файл ввода, output – файл вывода, x, y, … - внешние файлы, которые используются в программе.

Что касается блока, то он состоит из 6 разделов, которые должны быть размешены в программе в строгом порядке.

  1. раздел label
  2. раздел const
  3. раздел type
  4. раздел var
  5. раздел процедур и функций
  6. раздел операторов

1. Любой оператор в программе может быть помечен меткой label, имеющий максимум 4 цифры. Пример использования метки label:

label 10, 20, 59;

10: a := b;

Операция (в данном случае, присваивание) a := b будет иметь метку 10.

2. Допустим, что для выполнения программы нам необходимо какое-то неизменное значение, которое мы будем использовать. Пусть это будет, например, число Пи или ускорение свободного падения (насколько я помню из физики, в разных условиях используют число 10 или 9,8). Так при описании констант, необходимо выполнить следующее:

const pi = 3,14; accOfGrav1 = 10; accOfGrav1 = 9,8;

3. Если в программе необходимо использовать тип, отличный от стандартных, то можно это указать в разделе type:

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

4. Все переменные должны быть описаны до ее использования в одном месте, в разделе var:

var a, b,…: integer;

a1, b1,…: real;

Где a, b, a1, b1 – название переменных, integer, real – тип переменных

5. Описание функций и процедур.

6. В этой части программы все начинается со слова begin и заканчивается словом end, после которой ставят точку. Эти слова не являются операторами, а знаками пунктуации. В таких языках, как Java и вместо begin end используются фигурные скобки

public static void main (String args[]) {

// …

}

, как бы по выделяя начало и конец какого-либо процесса:

begin

t := a;

a := b;

b := t

end;

Существуют некоторые зарезервированные слова, которые выполняют какую-нибудь функцию, такие как program, const, var, begin, end. Создание переменные, функций, программ идентичных с этими словами или расширение эти слова, как например const – constant, приведет к ошибке. Использовать в программном коде можно прописные и строчные буквы, только между ними существует разница. А так же каждая переменная или функция не может начинаться с цифры или знаков:

var 1a: integer;

begin

1a := 34;

writeln(1a);

end.

// Ошибка! Встречено ‘1’, а ожидался идентификатор.

Небольшой вывод по пройденной главе.

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

2. Данные и их типы, операции, циклы, конструкторы, операторы

2.1 Операторы

Оператор подразумевает определенное действие. После каждого выражения с оператором, необходимо поставить точку с запятой, которая будет давать компилятору понять, что действие закончено. Если перед выражениями с оператором стоит end, until, else, то точку с запятой ставить не обязательно.

Пример использования оператора присваивания:

var a: integer;

begin

a := 34;

end.

Здесь а – переменная типа integer, := - оператор присваивания, 34 – выражение, которое было присвоено переменной а.

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

f := 3 * C + 2 * sin(x);

Существует определенная последовательность выполнения операторов. Действия выполняются слева на права с соблюдением последовательности, действия в скобках выполняются первыми:

  1. not;
  2. *, /, div, mod, and;
  3. +, -, or;
  4. =, <, >, <>, <=, >=, in.

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

Пример:

var a: integer;

b: integer;

begin

b := 3;

a := b/2;

writeln(a);

end.

//Ошибка! Нельзя преобразовать тип real к integer.

Составной оператор.

Составной оператор выполняет роль скобок. Необходимость выполнения составляющих операторов в том порядке, в которых они расположены. Вид:

begin

b := 3;

end;

Отличие от тела программы только в том, что вместо точки стоит точка с запятой.

Пример составного оператора:

var a: integer;

begin

begin

a := 34;

writeln(a);

writeln(1<2);

end;

end.

// Результат выполнения программы – 34

True

2.2 Ввод-вывод

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

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

Команды write(), writeln() на Паскаль производят вывод данных в консоль. Отличие команды write() от writeln() только в концовке ln, что означает, что после выполнение этой команды будет произведен переход на новую строку.

Пример вывода данных в консоль:

var a: integer;

begin

a := 34;

writeln(a);

writeln(1<2);

write('Hi!');

writeln(1234)

end.

// Результат выполнения программы - 34

True

Hi!1234

Как можем заметить, числа 1234 вывелись в том же ряду, что и «Hi!», так как, когда мы использовали команду write('Hi!');, отсутствовало окончание ln, которое бы нас перебросило на другую строчку.

Команды read() и readln() на Паскаль производят ввод данных в программу через консоль. Отличие между этими двумя командами такое же как и в командах вывода данных.

Пример ввода данных в консоль:

var name:string;

begin

write('Здравствуйте! Задайте свое имя: ');

readln(name);

writeln('Добрый день, ' + name + '!');

end.

// Результат выполнения программы - Здравствуйте! Задайте свое имя: Рубен

Добрый день, Рубен!

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

2.3 Переменные, константы

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

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

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

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

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

В примере ниже, я создаю переменную, которая имеет имя а и тип данных integer. Изначально она будет содержать значение 5, но походу выполнения программы, мы присвоим в нее другое значение, с помощью ввода. В нее мы сможем вложить любое значение в диапазоне от -32768 и до 32767, но если мы попытаемся вложить в нее, например, символ, то получим ошибку:

var

a: integer;

begin

a:=5;

write(a);

readln(a);

write(a);

end.

Пример работы программы:

5

8 – ввод

8

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

Ниже приставлен код с использованием константы Pi, которая имеет значение 3,14. Не забываем, что константы описываются выше обычных переменных:

const

конст1: тип=значение;

конст2: тип=значение;

const

Pi: real=3.14;

var

a: integer;

begin

a:=5;

write(a*Pi);

end.

2.4 Типы данных.

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

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

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

Тип integer – переменные этого типа могут содержать только целые числа в диапазоне от -32768 до 32767 (подобные типы byte, longint).

Тип real - переменные этого типа могут содержать вещественные числа.

Тип boolean - переменные этого типа содержат только два значения: true(правда) и false(лож).

Тип char - переменные этого типа содержат символы.

Массив – это структура, которая содержит определенное количество компонентов одного типа.

Строки - представляют собой последовательность символов, размер которой не превышает 255 включительно.

2.5 Логические выражения и операции.

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

Выполнение логических выражений является результат (true или false) сравнения двух операндов. В примерах мы будем использовать 2 операнда y и x. Операндами могут числа, символы и другие типы данных.

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

  • меньше: x < y
  • больше: x > y
  • равно: x = y
  • не равно: x <> y
  • меньше или равно: x <= y
  • больше или равно: x >= y

Пример работы с логическими выражениями:

var

x, y: integer;

b1, b2, b3, b4, b5, b6: boolean;

begin

write('Введите 2 числа для сравнения: ');

readln(x, y);

b1 := x < y;

b2 := x > y;

b3 := x = y;

b4 := x <> y;

b5 := x <= y;

b6 := x >= y;

writeln('х меньше y: ', b1);

writeln('x больше y: ', b2);

writeln('x равно y: ', b3);

writeln('x не равно y: ', b4);

writeln('x меньше или равно y: ', b5);

writeln('x болье или равно y: ', b6);

end.

Результат выполнения программы:

Введите 2 числа для сравнения: 4 5

х меньше y: True

x больше y: False

x равно y: False

x не равно y: True

x меньше или равно y: True

x болье или равно y: False

Логические операции:

And – конъюнкция. Выдает значение true только когда оба значения являются правдивыми, в остальных случаях – лож:

true and true = true

true and false = false

false and true = false

false and false = false

Or – дизъюнкция. Выдает значение true, если хотя бы одно значение правда:

true or true = true

true or false = true

false or true = true

false or false = false

Отрицание – меняет true на false и false на true:

not true = false

not false = true

Важным моментом использования логических операторов и операторов значения. Вначале выполняются (and, or, xor, not) а потом (>, >=, <, <=, <>, =), так что не нужно забывать заранее расставлять скобки.

Стандартные boolean функции:

  • odd(x) = true, если x нечетный (x целый тип);
  • eoln(x) = true, если встретился конец строки текстового файла x;
  • eof(x) = true, если встретился конец файла x.

2.6 Операции с битами.

В языке Pascal над целочисленными типами, как byte, shortint, word, integer, longint допустимы побитовые операции.

Логические операции над битами:

Над битами операндов можно выполнять следующие логические операции and, or, not, xor. Отличие над работой с битами заключается в том, что побитовые операции выполняются над каждым битом операндов, а не над их значениями в десятичном представлении.

Пример:

Имеем число 5 и 3 (в двоичной системе число 5 расписывается, как 00000101, а число три, как 00000011), операция not над этим числом выдаст значение 11111010 (все нули заменились на единицы, а единицы на нули), что в десятичном представлении равно 250, операция or над числами 5(00000101) и 3(00000011) выдаст 7(00000111).

Операции циклического сдвига:

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

Пример работы этих операций:

var

x, y :byte;

begin

x := 6; {00000110}

y := 11; {00001011}

writeln(x shr 2); {00000001}

writeln(y shl 1); {00010110}

end.

2.7 Конструкции if-else.

Бывает такое, что в ходе выполнения программы, нужно что-то проверить и получить одобрения на выполнение определенных действий, или же если одобрения не было, то выполнить другую последовательность программы, дабы избежать ошибки. В языках программирования этого можно достигнуть с помощью условных операторов, которые проверяют условие к выполнению определенных действий. Чаще всего используется условный оператор if else, но так же есть и оператор case, который отличается оператора if else, и по моему даже удобнее, но не везде подойдет.

Рассмотрим каждый оператор в действии:

1) if else

var n: integer;

begin

write ('Введите целое число: ');

readln (n);

if n mod 2 = 0 then

write ('Число ', n, ' четное')

else

write ('Число ', n, ' нечетное');

readln

end.

Данная программа проверяет, четное или нечетное число мы ввели. Первым действием мы введем число и после этого оператор if с условием, если введенное число n без остатка делиться на два, и если это правда, то выполняется блок действием под if, но если это не правда, то выполниться блок, который находиться под else и потом программа продолжается дальше.

Так же можно использовать этот оператор без else, но для этого ; должна стоять в последней команде блока под if.

var n: integer;

var

a,b,c: integer;

begin

write('a=');

readln(a);

write('b=');

readln(b);

if a <> b then begin

c := a;

a := b;

b := c;

writeln('a=',a,'; b=',b);

end

else

writeln('Введены одинаковые числа');

readln;

end.

В данной программе мы меняем местами значения у двух введенных нами переменных, с условием, что они не равны. И правда, зачем менять местами два одинаковых значения и в таком случае команда выведет на экран сообщение о том, что элементы равны. Как вы могли заметить, то что блок под условием if заключен в операторные скобки begin-end, так нужно, так как в блоке if больше одной команды.

2)case

Данный условный оператор удобен в том случае, если у нас большое количество ответов. Его формат выглядит так:

case селектор of

значение1: оператор1;

значение2: оператор2;

значение3: оператор3;

...

else операторN

end;

В селектор вкладываем какое-нибудь значение, и оператор просматривает весь список, находящийся под case и если селектор будет совпадать, например, со значением «значение 2», то выполниться оператор2, в случае, когда такого значения не будет, то будет выполнен оператор else. Приведем пример работы с case:

var n: integer;

begin

write ('Введите класс школы: ');

readln (n);

case n of

1..4: writeln ('Младшие классы.');

5..8: writeln ('Средняя школа.');

9,11: writeln ('Старшие классы. Выпускной.');

10: writeln ('Старшие классы.');

else writeln ('Извини, но ты издеваешься…')

end;

readln

end.

Данная программа определяет к какому типу классов относиться введенное число. Вначале мы вводим число n и оператор case проверит все ответы, которые у него есть. Допустим мы введи число 14 и мы понимаем, что классы ограничены до 11, но это надо дать понять компьютеру, и когда он просмотрит весь список ответов, он убедится, ни одно значение оператора case не равно числу 14 и он выведет сообщение, которое подготовлено нами в else, но если мы введем число 3, он найдет в первой строчке, что тройка принадлежит интервалу от 1 до 4 и выведется сообщение 'Младшие классы.'.

2.8 Циклы.

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

На языке Pascal существуют 3 вида циклических конструкций, это циклы while, for и repeat. Каждый подробнее рассмотрим:

1) Цикл for

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

Он бывает двух типов:

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

тело_цикла;

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

тело_цикла;

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

Во втором случае все подобно, только тут мы идем от большего к меньшему. Допустим, мы начинаем со 100 и до 0. В этом случае от первого значения будет вычитываться один, до момента, пока не станет нулем.

Пример работы цикла for:

var

i, n: integer;

begin

for i := 1 to 100 do

if i < 100 then

write (i, ' ')

else

write (i);

end.

Результат выполнения программы:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100

2) Цикл while:

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

Рассмотрим пример с работой цикла while:

var

i, n: integer;

begin

i := 1;

while i <= 100 do begin

if i < 100 then

write (i, ' ')

else

write (i);

i := i + 1

end;

end.

Здесь переменная i меняется не автоматически в заголовке цикла, как это было в цикле for, а мы сами прописали действие, которое после каждого захода в тело цикла будет увеличиваться на один до того момента пока значение не будет <= 100.

Результатом выполнения работы будет то же самое, что и в предыдущем примере.

3) цикл repeat

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

Рассмотрим пример работы с циклом repeat:

var

i, n: integer;

begin

i := 1;

n := 100;

repeat

if i < 100 then

write (i, ' ')

else

write (i);

i := i + 1

until i > n;

end.

Странно, но в логической проверке until п изначально видно, что вернется значение false, так как i изначально равно 1 и она не больше ста. Это отличие проверки условия у цикла repeat. Цикл будет выполнен до тех пор, пока в условии не вернет значение true. Результатом будет то же, что и в предыдущих двух примерах, но, если даже переменной n было присвоено значение 0, вывелось бы 1.

2.9 Операторы goto, break, continue, прекращение программы.

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

Оператор goto обеспечивает переход от одного места кода в другое, которое помечено меткой, чтобы использовать эту метку, необходимо ее описать в разделе меток и описательно части программы, который начинается со слова label.

Рассмотрим пример работы оператора перехода goto:

label goback;

var num: real;

begin

goback:

write ('Введите число: ');

readln (num);

if num < 0 then

goto goback;

num := sqrt (num);

write ('Квадратный корень: ', num);

end.

Разберем по подробнее, что происходит в этой программе. Эта программа выполняет нахождение квадратного корня из под числа, которое мы ввели, но мы знаем, что найти корень из под отрицательного числа нельзя и это приведет к ошибке, по этому мы создали условие, что если введенное число num меньше 0 , то мы вернемся в начало кода и нам снова будет выведено сообщение о 'Введите число: ' , и программа будет ожидать следующего ввода, до тех пор пока не будет введено положительно число, в теле условного оператора if находиться команда, которая вернет нас в то место, где мы поставили метку goback.

Операторы break и continue.

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

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

Рассмотрим пример работы оператора break.

var

i,n: integer;

begin

n := 100;

for i := 1 to n do begin

if i = 39 then begin

write ('Найдено число 39!');

break

end;

end;

end.

Данная программа перебирает все числа от 1 до 100 и ищет число 39, и как только она будет найдено, выпишется положительное сообщение и цикл прекратится.

Без оператора break мы бы заставили наш цикл for проделать еще лишних 61 шаг, что бы могло значительно сделать программу медленнее, если бы значение n было куда больше ста.

Рассмотрим пример работы оператора continue:

var

i, sum: integer;

begin

sum := 0;

for i := 1 to 5 do begin

if i mod 2 = 0 then begin

writeln('Найдено четное число: ', i);

continue

end;

sum := sum + i

end;

write (sum);

end.

Суть этой программы в том, что мы хотим посчитать сумму всех нечетных чисел от 0 до 5 (1, 3, 5) и вывести ее, помимо этого наша программа будет нам выводить сообщение о найденных четных числах, которые не будут входить в сумму. Оператором continue мы этого избежим, потому что как только условный оператор определит четное число, он пропустит все те операции, которые находятся ниже его.

Небольшой вывод по пройденной главе.

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

3. Более интереснее.

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

3.1 Функции.

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

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

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

procedure имя (параметры);

function имя (параметры): тип результата;

Каждая функция должна быть как-то названа, на английском и чаще всего иметь смысл ее работы. Так же в функции можно передать параметры из главной функции, чтобы она их обработала, но это вовсе не обязательно. Перед тем, как передать ей значения, необходимо их описать в скобках после имени функции. Например, мы передаем в функцию число 4, и чтобы программа правильно работала нужно в скобке указать имя_переменной: тип переменной. Если функция возвращает значение, после ее вызова нужно указать тип данных, которые должны быть возвращены и их можно будет присвоить переменной в главной части кода, только если типы совпадают.

Приведем пример работы с функциями:

var num, f: integer;

function fact (i:integer): integer;

var n: integer;

begin

n := 1;

while i > 0 do begin

n := n * i;

i := i - 1

end;

fact := n

end;

begin

write ('Введите число: ');

readln (num);

f := fact (num);

writeln ('Факториал числа ', num, ' = ', f);

end.

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

Результат выполнения программы:

Введите число: 4

(вывод) Факториал числа 4 = 24

3.3 Массивы.

Массивы — это структура данных в виде набора компонентов, которые располагаются друг за другом и имеют один тип данных.

Если у нас есть определенное количество элементов, например, дни недели, то не обязательно создавать для каждого дня отдельную переменную, проще будет вложить их всех в одну структуру данных, которая и называется массив, и он будет иметь строчный тип данных. Обращаться к элементам массива можно с помощью индекса. Например, имеем массив arr с размером 11, и обратиться к первому элементу массива arr мы сможем с помощью команды arr[1].

Массивы бывают одномерные, как с примером дней недели, так и двумерные, как например матрицы.

Рассмотрим пример работы с массивами:

var ch: array [1..11] of integer;

i: integer;

begin

for i := 1 to 11 do

ch[i] := i;

for i := 1 to 11 do

writeln(ch[i]);

end.

Данная программа заполняет массив размером 11 элементами, соответствующие своему индексу. После того, как массив будет заполнен, он выведет все его элементы.

3.3 Работа с файлами.

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

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

f: file of integer;

Где f имя переменной типа file, которая принимает значения типа integer.

Операции с файлами подразумевает следующий список действий:

  • установочные и завершающие операции;
  • ввод и вывод;
  • перемещение по файлу;
  • специальные операции.

Рассмотрим пример создания файла и записи в него данных:

var

f: file of char;

ch: char;

i, n: integer;

begin

assign (f, 'C:\Users\Ruben\Desktop\Pascal\file.txt');

rewrite (f);

write ('Количество символов: ');

readln (n);

for i:=1 to n do begin

write ('Введите символ для ввода его в файл: ');

readln (ch);

write (f, ch);

end;

close (f);

end.

В этой программе мы задаем программе количество символов, которые будут вводиться в файл. Для начала объявим переменную типа file и дадим ей имя f, после чего нам необходимо определить где этот файл находиться, или же указать, где он будет находится с помощью команды assign, в которую передается имя переменной с типом файла и месторасположение файла. Если такого файла в указанном месте нет, то он создастся автоматически. После этого мы командой rewrite(f) открываем этот файл в режиме записи, после чего программа будет запрашивать символы, которые в последующем будут записаны в файл с помощью команды write (f, ch), в которую мы передаем имя переменной файла и символ. Если на этом файле было что-то записано, то оно будет удалено и записано то, что мы в него вводим. В конце программы необходимо закрыть файл командой close (f), для того, чтобы содержание файла осталось в целостности и не было ошибок.

Я создал на рабочем столе папку, которая называется Pascal и скопировал ее адрес. Изначально файла file.txt у меня там не было, поэтому он был создан. Вот что получилось у меня в ходе работы программы:

Количество символов: 5

Введите символ для ввода его в файл: H

Введите символ для ввода его в файл: e

Введите символ для ввода его в файл: l

Введите символ для ввода его в файл: l

Введите символ для ввода его в файл: o

Пример работы с чтением данных из файла:

var

f: file of char;

c: char;

begin

assign (f, 'C:\Users\Ruben\Desktop\Pascal\file.txt');

reset (f);

while not eof (f) do begin

read (f, c);

write (c);

end;

close (f);

end.

Эта программа читает содержимое файла и выводит в нашу консоль. Командой reset (f) мы открываем файл в режиме чтения. Цикл while будет посимвольно пробирать содержимое файла до тех пор, пока не наткнется на конец файла с помощью команды eof (f), которая возвращает true, если конец файла был найден. Командой read (f, c) мы записываем в переменную с символы и выводим их на экран. И в конце программы не забываем закрыть файл.

3.4 Записи.

Записи – это структура, которое имеет определенное количество полей. Каждое поле может иметь один тип данных. Общий вид описания типа record:

type t = record

id11, id12, …: type1;

id21, id22, …: type2;

……………….

end;

Эта очень удобная структура, с помощью которой можно сделать код намного удобнее и профессиональнее.

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

Допустим у нас есть телевизор Samsung и Philips , и у каждого есть одинаковое количество характеристик, но они все отличаются и мы сможем в разделе var создать две переменные, которые будут иметь имена телевизоров с типом данных record, которое мы создали изначально и дали ему какое то название. После этого каждой модели телевизора мы сможем присвоить характеристику, например, диагональ, через точку, после которой будет название переменной из записи.

Рассмотрим пример работы с записями:

type birth = record

month: 1..12;

day: 1..31;

year: integer

end;

var

mather: birth;

begin

mather.day := 9;

mather.month := 2;

mather.year := 1973;

writeln ('Дата рождения мамы ', mather);

end.

В этой программе я создал запись, которая называется birth, которая имеет 3 поля: month (от 1 до 12), day (от 1 до 12), year (любое целое число), и после этого в разделе var создал переменную mother с типом данных записи birth. После этого каждой переменной дал значение и выписал целую переменную типа записи, и получил следующее: Дата рождения мамы (2,9,1973). Так я бы мог создать список всех своих родных с помощью этой записи, не создавая для каждого члена своей семьи переменную, которая бы содержала в имени что она означает и имя родственника.

Небольшой вывод по пройденной главе.

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

Заключение

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

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

Список литературы

  • https://ru.wikipedia.org/wiki/Алгол_68 - Википедия
  • https://ru.wikipedia.org/wiki/Паскаль_(язык_программирования) – Википедия
  • https://kvodo.ru/istoriya-yazyka-paskal.html-Kvodo (Computing Science & Discrete Match)
  • https://pandia.ru/text/78/429/80575.php - Pandia
  • https://pas1.ru – Мой основной источник для написания этой курсовой

Приложение

Как я и обещал, я прикрепляю картинки внешнего вида моей 2D игры, написанной на Java

Меню:

Инструкция:

Сама игра:

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

  2.  процедурный императивный высокоуровневый язык программирования, потомок языка Алгол, существенно доработанный. Разрабатывался в период 1964—1968 годов. Позиционировался как универсальный язык для описания произвольных алгоритмов обработки данных высокой сложности. Отличается большим объёмом, богатством возможностей и сложностью синтаксиса.

  3. это программа, которая переводит текст, написанный на языке программирования, в набор машинных кодов.