Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

вопрос1,2

.doc
Скачиваний:
7
Добавлен:
10.02.2015
Размер:
631.3 Кб
Скачать

1. Структура программы и простые типы в Паскале.

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

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

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

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

{Заголовок программы}

label

{Описание меток}

const

{Описание констант}

type

{Описание типов переменных}

var

{Описание переменных}

——————————————

{Описание процедур и функций}

begin

{тело программы}

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

end.

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

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

Переменные описываются в разделе описания переменных var по схеме:

Var <список имен переменных>: <тип>;

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

Для порядкового типа определены функции:

ord(x) – номер значения x в списке,

pred(x) – значение в списке, предшествующее x

succ(x) – значение в списке, следующее за x.

К данным такого типа применимы операции отношения <, >, <= (меньше или равно), >= (больше или равно), <> (не равно).

Целые типы данных, длина их внутреннего представления в байтах и диапазон возможных значений

Название

Диапазон

Размер выделяемой памяти

Byte

0 … 255

1 байт

Integer

–32768…+32767

2 байта

Longint

-2 147 483 648 … +2 147 483 647

4 байта

Операции над целыми величинами – сложение (+), вычитание (-), умножение (*), деление нацело (div), вычисление остатка от деления (mod).

Логический тип данных.

Описание – идентификатор boolean;

Значения – false(ложь) и true(истина);

Размер выделяемой памяти – 1 байт.

Пример описания переменных логического типа: Var A,d: boolean;

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

Символьный тип данных.

Описание – идентификатор char;

Значением может быть любой символ – буква, цифра, знак препинания и специальные символы. Каждому символу соответствует целое число от 0 до 255, которое служит кодом внутреннего представления символа, его возвращает функция ord(<символ>). Для кодировки используется код ASCII.

Размер выделяемой памяти – 1 байт.

Пример описания переменных символьного типа

Var char_1,ch: char;

Вещественные типы данных.

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

Тип

Диапазон

Размер выделяемой памяти

Real

2.9*10-39 … 1.7*1038

6 байт

Single

1.5E-45 …3.4E38

4 байт

Double

5.0E-324…1.7E308

8 байт

Пример: var d, a: integer; b: char; c: boolean;

a:= 18+25*d; b:=’*’; c:=true;

Перечисляемые и интервальные типы данных.

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

Описание перечисляемого типа происходит в разделе типов type:

Type имя типа = (список имен);

В списке имен должно быть не более 256 имен.

Пример: type month = (January, February, March, April, May, June, July, August, September, October, November, December);

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

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

Пример:

type month = (January, February, March, April, May, June, July, August, September, October, November, December);

mon = January .. December;

number month = 1..12;

day=1..31;

var m: month; mm: mon; nm: numbermonth; d: day.

Основные этапы разработки программы (этапы решения задач на ЭВМ):

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

2. Запись, с помощью языка программирования конкретного алгоритма

3. Тестирование – выявляются ошибки и проверяются тестовые значения (для того, чтобы проверить ответ)

4. Отладка – исправление ошибок

Основные операторы: присвоение := ; ввод – read/readln; вывод – write/writeln

Program ex1;

Uses crt; – подключение модулей (очистка экрана, задержка экрана)

Var a,s: integer;

Begin ClrScr;

Writeln (‘Введите число’);

Readln (a);

S:= a*a;

Writeln (‘s - ’, s:4); вывод

Readkey. – задержка экрана

End.

2.Базовые алгоритмические структуры: условный оператор, оператор выбора, циклы. Структурная технология программирования.

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

Алгоритм – последовательность действий (правил) однозначно приводящих к решению поставленной задачи.

К основным алгоритмическим структурам относятся: 1)структура следования (линейный алгоритм); 2) развилка (разветвляющийся алгоритм); 3) цикл (циклический алгоритм).

  • линейный, если все его команды исполняются один раз и нет проверки условия. Прим: По заданному радиусу R вычислить длину окружности и площадь круга. L=2**R; S=*R2

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

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

Выделяют три вида циклов:

- с предусловием - «Пока» «Пока» условие истинно повторяет

серию команд;

- с постусловием «До» Выполняет серию команд «До» тех пор,

когда условие станет истинным

- цикл с параметром «Для». «Для» параметра цикла от начального значения до конечного, изменяющегося с заданным шагом, выполняется серия команд.

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

Полный условный оператор If <условие> then <оператор1> else <оператор2>;

Выполнение условного оператора начинается с вычисления значения логического выражения, записанного в условии. Простые условия записываются в виде равенств или неравенств. Сложные условия составляют из простых с помощью логических операций, при этом каждое условие берется в скобки. Если условие истинно, то выполняется <оператор1>, в противном случае - <оператор2>.

Выяснить, принадлежит ли число, введенное с клавиатуры, полуинтервалу [-3, 5).

If (x >= -3) and (x < 5) then Writeln (х,'принадлежит полуинтервалу [-3, 5)')

Else Writeln(x,'нe принадлежит полуинтервалу [-3, 5)');

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

Например, если значение переменной х меньше 0, то заменить х на 5х.

If x < 0 then x:=5*х;Writeln(x);Readkey;End.

Вложенные операторы условия.

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

Организация циклов в Паскале.

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

Цикл с предусловием.

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

Оператор цикла с предусловием

While <условие> do <тело цикла>

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

• если тело цикла состоит из нескольких операторов, то они объединяются операторными скобками.

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

Begin z:=10; While z>0 do z:=x-3; WriteLn(z); End.

Составить программу, подсчитывающую сумму всех натуральных чисел от 1 до N.

Write(‘ Введите натуральное число n’); read (n); { присвоение}

S:=0; I:=1; { начальное значение суммы}

While I<=n do {цикл подсчета суммы}

begin

S:=S+I;

I:=I+1;

end;

Writeln (‘Сумма =’ , S); {вывод результата}

Цикл с постусловием.

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

Оператор цикла с постусловием

Repeat

<Оператор 1>; (действия)

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

<Оператор n>;

Until <условие>;

где Repeat (повторять). Until (до тех пор пока).

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

Обратите внимание на то, что данный оператор цикла предполагает наличие нескольких операторов в теле цикла, поэтому служебные слова Begin и End не нужны.

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

При описании циклов с постусловием необходимо принимать во внимание следующее:

• перед первым выполнением цикла условие его окончания (или продолжения) должно быть определено;

• тело цикла должно содержать хотя бы один оператор, влияющий на условие окончания (продолжения), иначе цикл будет бесконечным;

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

Составить программу, подсчитывающую сумму всех натуральных чисел от 1 до N.

Write(‘ Введите натуральное число n’); read (n);

S:=0; I:=1; { начальное значение суммы}

Repeat {цикл подсчета суммы}

S:=S+I;

I:=I+1;

Until i>n; Writeln (‘Сумма =’ , S); {вывод результата}

Цикл с параметром.

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

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

For <параметр>:= <выражение 1> to <выражение 2> do <тело цикла (оператор) >;

Где <выражение 1>- нач знач параметра (а),

<выражение 2> - конеч знач параметра (b).

Нач и конеч значение параметра цикла могут быть представлены const, переменными или арифм-ми выражениями. Сначала вычисляются значения выражений а и b. Если а<=b, то параметр последовательно принимает значения, равные а, а+1, ..., b-1, b, и для каждого из них выполняется тело цикла. Если а>b, то тело цикла не будет выполнено ни разу.

Вычислить п! == 1*2*3*... *п.

Program fact;

Uses crt;

Var i, n: integer; f: longint;

Begin Clrscr;

Writeln ('Введите натуральное число: ');

Readln(n);

If n < 0 then writeln('Ваше число не является натуральным!')

Else

Begin

f:=i;

for i:=l to n do f:=f*i;

writeln(n,'! =', f);

end;

Readkey;

End.