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


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

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



Парадигмы программирования.

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

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

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


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

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

  • Функция: язык программирования предназначен для написания компьютерных программ, которые применяются для передачи компьютеру инструкций по выполнению того или иного вычислительного процесса и организации управления отдельными устройствами.
  • Задача: язык программирования отличается от естественных языков тем, что предназначен для передачи команд и данных от человека к компьютеру, в то время, как естественные языки используются для общения людей между собой. В принципе, можно обобщить определение «языков программирования» — это способ передачи команд, приказов, чёткого руководства к действию; тогда как человеческие языки служат также для обмена информацией.
  • Исполнение: язык программирования может использовать специальные конструкции для определения и манипулирования структурами данных и управления процессом вычислений.

Структура программы на turbo Pascal:

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

{1. заголовок программы}

program Имя_Программы;

{2. раздел указания используемых модулей}

uses Список_Используемых_Модулей;

{3. Раздел описаний}

label Описания_меток;

const Описания_Констант;

type Описания_Типов;

var Описания_Переменных;

procedure Описания_Процедур_и_функций;

function

exports Описания_Экспортируемых_Имен;

{4. Раздел операторов}

begin

Операторы

end.

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

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

• Разделы beginend обязательны. Это раздел является составным оператором и часто встречается в программе более одного раза.

• Раздел var резервирует место переменным в оперативной памяти. Их следует обязательно назвать и перечислить.

• Раздел const объявляет постоянные, хотя их величины есть в библиотеке программы

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

• Команда uses system подключается автоматически.

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

 


Алгоритм и его свойства.

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

Основными свойствами алгоритмов являются:

1. Универсальность (массовость) - применимость алгоритма к различным наборам исходных данных.

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

3. Однозначность - правила и порядок выполнения действий алгоритма имеют единственное толкование.

4. Конечность - каждое из действий и весь алгоритм в целом обязательно завершаются.

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

6. Выполнимость - результата алгоритма достигается за конечное число шагов.

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

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

- вычислительные алгоритмы, работающие со сравнительно простыми видами данных, такими как числа и матрицы, хотя сам процесс вычисления может быть долгим и сложным;

- информационные алгоритмы, представляющие собой набор сравнительно простых процедур, работающих с большими объемами информации (алгоритмы баз данных);

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

 


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

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

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

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

Команды позволяют получать, сохранять и обрабатывать данные различных типов (например, целые числа, символы, строки символов, т.д.). Однако кроме команд в записи программы участвуют еще так называемые "служебные слова". Это и есть элементы формальности, организующие структуру программы. Их не так много, но их значение трудно переоценить. Служебные слова можно использовать только по своему прямому назначению. Переопределять их не разрешается.

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


Строки в языке Pascal.

Строки символов представляют собой последовательности символов и аналогичны массивам с типом CHAR. Их отличием является то, что число символов или длина строки, может меняться в интервале от нуля до заданного верхнего значения. Объявление строки символов осуществляется с помощью зарезервированного слова STRING:

String[максимальная длина строки]; длина строки – целочисленная константа в интервале 1-255.

Var St1: string[30]; s:string;- в данном случае длина строки будет равна максимальной 255 символов. Примеры объявлений:

Type Фамилия = string[15];

Имя = string[10];

Var F: Фамилия;

I: Имя;

Для хранения каждого символа строки обычно требуется 1 байт. Число в нулевом байте определяет в данный момент времени длину строки. Как и к массиву, к отдельным символам строки можно обратится с помощью индексов в квадратных скобках: F[3]; Нулевой индекс определяет позицию в которой содержится длина строки.

Работа со строками.

1. Присваивание: St:=’Pascal’; s:= ‘Дима’;

2. Оператор сцепления (склеивания) +: результатом является строка, длина которой равна сумме длин строк операндов.

3. Операторы отношения (>, <, =, <>, >=, <=,), имеющие более низкий приоритет, чем оператор сцепления, позволяют реализовать сравнение строк. Результат имеет логический тип. Сравнение строк производится посимвольно слева направо.

4. Определение длины строки: n: = length (st); где st – типа string, n – целого типа.

Пример:

for i:=1 to length(st) do

If st[1]=’a’ then K:=k+1;

5. Копия – выделение подстроки длиной n из строки st, начиная с позиции pos:

st1:= copy (st, pos, n);

Пример:

st:=’Pascal’;

St1:=copy(st,3,2);

Write(st1); результат: sc

6. Определение позиции символа: n: = Pos (st1,st) – определяет позицию начала вхождения строки st1 в строку st.

Пример:

st:=’Pascal’;

n: = Pos(’a’, st,); результат: n=2.

7. Удаление подстроки: Delete (st,pos,n), где pos указывает, начиная с какой позиции удаляется n символов.

Пример:

st:=’Формат’;

delete (st,6,1); результат: Форма.

8. Вставка подстроки: Insert (st1,st,pos), где st1 – строка, которая вставляется, st – строка, в которую вставляется подстрока st1, pos – позиция с которой вставляется подстрока.

9. Преобразование числа в сроку: Str (IBR,st)- преобразование числового значения IBR и помещение результата в строку st.

10. Перевод строки в число: Val(St,IBR,Cod) – преобразует значение St в величину целочисленного или вещественного типа и помещает результат в IBR. Cod – целочисленная переменная содержит 0, если преобразование прошло без ошибки, или номер позиции первого символа, на котором произошла ошибка.

Как уже отмечалось, переменная строкового типа (String) может рассматриваться как массив элементов символьного типа (Char). Например, если в программе определены переменные S: string; C: char; и задано S:='Москва', то S[1]='М', S[2]='о' и т. д. и возможно присвоение, например: C:= S[1]; Таким образом строка может рассматриваться как линейный массив символов. Элементы массива, составляющие строку можно переставлять местами и получать новые слова, применять функции работы с символами, например:

for i:= 1 to N div 2 do begin C:= S[i]; S[i]:= S[N-i+1]; S[N-i+1]:= C end; Writeln(S);

{исходное слово выведется справа налево: "авксоМ"}

Здесь N:= ord(S[0]); - число символов в переменной "S" хранится в переменной S[0]. Функция "ord" преобразует символьный тип в целый. N div 2 - количество перестановок для слова из "N" символов. В переменной "C" запоминается значение i-го элемента, который меняется с элементом, симметричным относительно середины строки.

Можно производить поиск и замену заданного символа в строке, например:

for i:=1 to N do if S[i]=' ' then writeln('найден символ пробел');

for i:=1 to N do if S[i]='/' then S[i]:='\'; {замена символа "/" на "\"}

 

Заменяя или переставляя символы в строке по определенной схеме (закону) можно зашифровать строку. Для дешифровки используется, как правило, схема обратной перестановки или замены символов. Например:

for i:=1 to N do S[i]:= chr(ord(S[i])+2); {преобразование исходных символов в символы с кодом большим на две единицы}

Напомним, что все используемые в MS-DOS символы имеют ASCII коды от 0 до 255.

Здесь удобно также использовать функции Pred(C); и Succ(C).

 


Записи в языке Pascal.

Запись – это структура данных, в которой под одним именем объединены переменные одного или различных типов. Компоненты записи называются полями, каждое из которых определяется именем. Поле записи содержит имя поля, вслед за которым через двоеточие указывается тип этого поля. Поля записи могут относиться к любому типу, допустимому в языке Паскаль, за исключением файлового типа. Описание записи в языке Паскаль осуществляется с помощью служебного слова RECORD, вслед за которым описываются компоненты записи. Завершается описание записи служебным словом END:

Type {Объявление типа запись}

Student = record

Fio: string[20]; {Поле Ф.И.О.}

Group: integer; {Поле номера группы}

Ocn: array[1…3]of integer; {Поле массива оценок}

end;

Var

Stud: Student; {Объявление переменной типа запись}

 

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

var Stud: Record

FIO: String[20]; {Поле Ф.И.О.}

Group: integer; {Поле номера группы}

Ocn: array[1…3]of integer; {Поле массива оценок}

End;

F: file;

Ch: char;

St: string;

…….

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

Stud.Fio:= ‘Петров В.П.’; {Внесение данных в поля записи}

Stud.Group:=202;

……

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

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

With Stud do

Begin

Fio:=’Петров.В.П.’;

Group:=202;

End;

Инициализация записей осуществляется с помощью типизированных констант:

type

RecType= Record

x,y: Word;

ch: Char;

dim: Array[1..3] of Byte

end;

const

Rec: RecType= (x: 127; y: 255;ch: ‘A’;dim: (2, 4, 8));

........


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

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

• Разделы beginend обязательны. Это раздел является составным оператором и часто встречается в программе более одного раза.

• Раздел var резервирует место переменным в оперативной памяти. Их следует обязательно назвать и перечислить.

• Раздел const объявляет постоянные, хотя их величины есть в библиотеке программы

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

• Команда uses system подключается автоматически.

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

 

 


Begin

…. {Операторы}

<имя функции>:=…; {Вычисление значения функции}

End;

В отличии от процедуры, для имени функции <имя функции> указан ее тип <тип результата>.

Вызов подпрограммы-процедуры из основной программы производится оператором вида:

………

имяП(<список фактических параметров >);

……..

здесь имяП – имя подпрограммы, а < список фактических параметров > содержит перечисление имен данных в вызывающей программе, которые соответствуют списку формальных параметров. Каждый фактический параметр должен иметь тот же тип, что и соответствующий ему формальный параметр.

Следует отметить, что список формальных параметров может отсутствовать.

Вызов подпрограммы-функции из основной программы может производиться по-разному:

……….

Y: =имяФ(<список фактических параметров >);

………..

здесь переменная y должна иметь тип <тип результата>;

…….

S: =z* имяФ(<список фактических параметров 1>)+x/ имяФ (<список фактических параметров 2 >).............

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

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

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

Если процедура описана в другом файле с именем, например, F_PR. pas, то ее можно подключить к программе, указав в разделе описания директиву: {$I F_PR. pas}.

 


Функции в языке Pascal.

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

  1. Function имя (параметры): Тип результата;
  2. раздел описаний
  3. begin
  4. команды
  5. имя функции:=выражение
  6. end;

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

Затем идёт слово begin - начало программы. После идут исполняемые команды. Дальше имени функции присваиваем конечное выражение, то есть возвращаем результат функции, чтобы в дальнейшем можно было бы какой-то переменной присвоить результат выполнения функции. И в конце идёт слово end c точкой запятой.

Типы результата:

Результат функции может быть числом, символом, строкой, логическим выражением. Значение функции не может быть массивом.

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

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

Преимущества функции:

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

2. - Сокращение объёма исходного текста и исполняемого файла.

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

Недостатки функции:

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

2. - Требуется внимательное отношение к использованию переменных программы внутри функции.

Локальные (внутренние) переменные функции:

1. - Создаются в специальной области памяти (стеке) только на время работы функции. Из основной программы недоступны.

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

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

Параметры - Значения функции:

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

Параметры - Переменные

1. - Функция может получать на вход переменную, выражение или значение соответствующего (или совместимого) типа. (Никаких выражений и явного указания значений)

2. - Функция работает непосредственно с данными, может изменять их.

3. - Так как копия данных не создаётся, то для экономии времени и памяти рекомендуется объёмные параметры (например, массив) делать параметрами-переменными.

Параметр переменная отличается от параметра значение тем, что перед параметром переменной ставится слово var.


Алгоритмы сортировки.

Сортировка массива – это упорядочение его элементов по возрастанию или по убыванию. Общеприняты два метода: метод выбора и метод обмена (пузырька).

Метод выбора.

Ищем минимальный элемент в массиве и меняем его местами с первым элементом.

Рассматриваем массив со второго элемента … и т.д.

{Программа сортировки массива из 10-ти чисел методом выбора}

program massort;

uses crt;

var

i,j,n,min,buf:integer;

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

begin

clrscr;

writeln('Введите 10 чисел через пробел, затем "Inter"');

for i:=1 to 10 do read (a[i]);

for i:=1 to 10 do

begin

min:=i;

for j:=i+1 to 10 do

if a[j]<a[min] then

min:=j;

buf:=a[i];

a[i]:=a[min];

a[min]:=buf;

end;

writeln(' Упорядоченный массив ');

for i:= 1 to 10 do write(a[i]:4);

repeat {цикл для остановки программы }

until keypressed; {и показа результата}

end.

Наберите программу и запустите ее на выполнение. Убедитесь в работе программы.

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

 


Ветвления в Pascal.

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

В программе условие – это выражение логического типа (Boolean), которое может принимать одно из двух значений: True (истина) или False (ложь). Простое условие состоит из двух операндов и оператора сравнения:

a=b

В данном случае:

a – первый операнд;

b – второй операнд;

= – оператор сравнения.

 

ОПЕРАТОРЫ СРАВНЕНИЯ
Оператор Описание
> Больше
< Меньше
= Равно
<> Неравно
>= Больше или равно
<= Меньше или равно

 

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

Из простых условий при помощи логических операторов: and – ‘И’, or – ‘ИЛИ’, xor – ‘Исключающее ИЛИ’, not – ‘Отрицание’ можно строить сложные условия.

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

(s>0) and (t<60)

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

Инструкция if позволяет выбрать один из двух возможных вариантов развития программы. Выбор осуществляется в зависимости от выполнения условия.

 

If < условие > then

begin

< оператор 1 >;

< оператор 2 >;

….

< оператор n >; { что нужно делать, если условие истинно}

end

Else

begin

< оператор 1 >;

< оператор 2 >;

….

< оператор n’ >; { что нужно делать, если условие ложно}

end;

 

Ветвь Else может отсутствовать. Тогда если условие ложно, то будут выполнятся команды, находящиеся после условного оператора. Если в инструкции If между словами begin и end находится только одна инструкция программы, то слова begin и end можно не писать.

If x>0 then

y:=sqrt(x)

else

y:=sqrt(abs(x));

Оператор выбора case позволяет сделать выбор из произвольного числа имеющихся вариантов. Он организует разветвления в зависимости от значения некоторой переменной перечисляемого типа. Например, если as: integer в программе

Case as of

0: u=x+y;

1: u=y-x;

2: u=x*y

else u=0;

end;

в соответствии со значением as вычисляется u. Если as=0, то u=x+y, as=1, то u=y-x, as=2, то u=x*y.

При всех других значениях as u=0.

Общий вид записывается следующим образом:

Case < селектор > of

список1: begin

< инструкции1 >

end;

список2: begin

< инструкции2 >

end;

списокn: begin

< инструкцииn >

end

Else

begin

< инструкции >

end;

end;

 

Селектор – выражение, значение которого определяет дальнейший ход выполнения программы (т.е последовательность инструкций, которая будет выполнена);

Список1 – список констант. Если константы представляют диапазон чисел, то вместо списка можно указать первую и последнюю константу диапазона, разделив их двумя точками.

Ветвь Else тоже может отсутствовать. Операторные скобки begin и end могут отсутствовать, если инструкции состоят только из одного оператора:

Uses Crt;

Var

Age, i: integer;

Begin

Clrscr;

i:=0;

writeln(‘Введите Ваш возраст:’);

readln(Age);

Case Age of

0,1,2: writeln(‘Вы слишком юны’);

3..7: writeln(‘Вы должны посещать детский сад’);

100: writeln(‘Вы долгожитель’)

else

writeln(‘O..O..O!!!!’);

end;

readln;

End.

Тип констант должен совпадать с типом селектора. Селектор может относиться к целочисленному, булевскому, литерному или пользовательскому типам. Дополните данную программу для возрастов 8 – 99 лет и запустите на выполнение. Проверьте работу программы.

 


Циклы в Pascal.

Цикл – это организованное повторение некоторой последовательности операторов. Реализовать его в Pascal можно следующим образом:

…..

Label Me1,Me2;

….

Me1: P1;

P2;

.

.

Pn;

Goto Me1;

….

Me2: Pk;

Me1 и Me2 – метки, которые описываются в разделе объявлений программы. Оператор перехода Goto Me1; передает управление на оператор, перед которым стоит метка Me1:. Для того, чтобы приведенный алгоритм не длился бесконечно, требуется с помощью одного из повторяемых операторов организовать условие выхода из цикла. Для данного примера, можно записать оператор Pn, как:

If <условие> Goto Me2;

Такой способ организации циклов характерен для языков Бейсик и Фортран. В языке Pascal для организации циклов и выхода из них используются операторы While, Repeat, For, а использование оператора Goto считается дурным тоном.

Оператор Repeat …Until (цикл с постусловием).

Этот оператор организует проверку выхода из цикла после каждого выполнения всех повторяемых операторов:

…..

Repeat

P1:

P2;

.

Pn;

Until B1;

…..

Здесь B1 – условие, записанное с помощью оператора логического типа.

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

Оператор While …do (цикл с предусловием).

Иногда удобнее организовать проверку условия выхода из цикла перед выполнением первого повторяемого оператора. Это осуществляется с помощью оператора цикла While …do:

While B1 do

Begin

P1;

P2;

Pn;

End;

……

Если повторяется только один оператор, то скобки begin …end; можно не писать. Как и в операторе Repeat, хотя бы один повторяемый оператор должен влиять на значение условия B1.

Оператор for …do (цикл с параметром).

Часто встречается ситуация, когда переменная цикла относится к целому типу и ее значение изменяется на единицу. В таком случае используется оператор for …do:

…..

for i:=m to n do

begin

P1;

P2;

….

Pn;

end;

……

Здесь переменные i,m,nцелого типа (m и n могут быть арифметическими выражениями целого типа). При m>n операторы P1,P2,...,Pn не выполняются ни разу. Если повторяется только один оператор, то скобки begin …end можно опустить.

Для организации цикла, в котором переменная уменьшается на единицу, существует разновидность оператора for:

For i:=m downto n do

Где m>=n.

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

Используем Repeat

s:=0;

i:=1;

repeat

s:=s+i;

inc(i);

until i>10;

Используем While

s:=0;i:=1;

while (i<=10) do

begin

s:=s+i;

inc(i);

end;

3. Используем For

s:=0;

for i:=1 to 10 do s:=s+i;

В данном случае использование оператора For является предпочтительным, но так бывает не всегда. Оператор For всегда можно заменить операторами Repeat и While, в то время как заменить операторы Repea t и While на For в некоторых случаях достаточно проблематично (приходится использовать специальные конструкции прерывающие работу цикла).

Массивы Pascal.

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

Массив объявляется в следующей общей форме:

ARRAY [тип индексов 1,…тип индексов n] of <тип элементов массива>; n – число измерений массива. Например, одномерный массив из десяти элементов может быть объявлен одним из двух способов:

TYPE R = ARRAY[1..9] of integer;

VAR MAS1:R;

Или

VAR MAS1: ARRAY[1..9] of integer;

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

Имя массива[индекс элемента]:=заданное значение; MAS1[4]:=8;

Над целым массивом можно выполнять только две операции - присваивание и сравнение:

A:=B; if A<>B; If A=B;

Все остальные операции выполняются над массивом поэлементно и допустимы все операции разрешенные для данного типа элементов.

{ заполнение массива с клавиатуры }

......

begin

for i:=1 to 5 do readln (A[i]);

....

{ вывод элементов массива на монитор }

……

for i:= 1 to 5 do write (A[i]); {или writeln(A[i]) для вывода в столбик}

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

Двумерный массив (матрица, таблица) состоит из строк и столбцов. Количество строк и столбцов определяют размер массива (NxM), где N – кол-во строк, M – кол-во столбцов:

A:Array[1..3,1..4] of byte;

где 1..3 – индексы строк, 1..4 – индексы столбцов.

Значения двумерного массива вводятся с помощью вложенного оператора for:

for i:=1 to 3 do

for i:=1 to 4 do

read (A[i,j]); (или оператор readln(A[i,j])).

Вывод матрицы размерностью NxM на экран.

...........

for i:=1 to n do begin

for j:=1 to m do

write(A[i,j]:7:2);

writeln;

end;

……..

Сортировка массива – это упорядочение его элементов по возрастанию или по убыванию. Общеприняты два метода: метод выбора и метод обмена (пузырька).

Метод выбора.

Ищем минимальный элемент в массиве и меняем его местами с первым элементом.

Рассматриваем массив со второго элемента … и т.д.

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


Работа со строками.

1. Присваивание: St:=’Pascal’; s:= ‘Дима’;

2. Оператор сцепления (склеивания) +: результатом является строка, длина которой равна сумме длин строк операндов.

3. Операторы отношения (>, <, =, <>, >=, <=,), имеющие более низкий приоритет, чем оператор сцепления, позволяют реализовать сравнение строк. Результат имеет логический тип. Сравнение строк производится посимвольно слева направо.

4. Определение длины строки: n: = length (st); где st – типа string, n – целого типа.

Пример:

for i:=1 to length(st) do

If st[1]=’a’ then K:=k+1;

5. Копия – выделение подстроки длиной n из строки st, начиная с позиции pos:

st1:= copy (st, pos, n);

Пример:

st:=’Pascal’;

St1:=copy(st,3,2);

Write(st1); результат: sc

6. Определение позиции символа:



Поделиться:


Последнее изменение этой страницы: 2016-08-15; просмотров: 1008; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.133.131.168 (0.353 с.)