вопрос1,2
.doc
1. Структура программы и простые типы в Паскале. Язы́к программи́рования — формальная знаковая система, предназначенная для записи компьютерных программ. Язык программирования определяет набор лексических, синтаксических и семантических правил, задающих внешний вид программы и действия, которые выполнит исполнитель (компьютер) под её управлением. Язык Паскаль, начиная с момента своего создания Н.Виртом в 1971 г., играет особую роль и в практическом программировании, и в его изучении. Паскаль стал первым языком, с которым знакомится большинство будущих программистов в мире. Любая Паскаль-программа является текстовым файлом с собственным именем и с расширением .pas. Паскаль-программа имеет вид последовательности символов латинских и русских букв, арабских цифр, знаков операций, скобок, знаков препинания и некоторых дополнительных символов. Структура программы: program <имя программы>; {Заголовок программы} label {Описание меток} const {Описание констант} type {Описание типов переменных} var {Описание переменных} —————————————— {Описание процедур и функций} begin {тело программы} {Раздел операторов} end. Заметим, что в имени программы не должно быть пробелов, оно должно начинаться с буквы, состоять только из латинских букв, цифр и некоторых символов, не допускается использование символов точки и запятой. В разделе описаний должны быть описаны все идентификаторы (константы, переменные, типы, метки, процедуры и функции), которые будут использованы в разделе операторов. Операторы в разделе операторов отделяются друг от друга точкой с запятой. Обязательным разделом программы является только раздел операторов. Комментарии (пояснения) к программе записываются в фигурных скобках: {комментарий}. Данные, обрабатываемые программой, могут быть разных типов (числа, символы, строки, массивы и т. д.). Тип определяет область допустимых значений, а также операции и функции, применяемые к величинам этого типа. Переменные описываются в разделе описания переменных var по схеме: Var <список имен переменных>: <тип>; Порядковые типы отличаются тем, что каждый из них имеет конечное число возможных значений. Эти значения можно определенным образом упорядочить, следовательно, с каждым из них можно сопоставить некоторое целое число – порядковый номер значения. Для порядкового типа определены функции: ord(x) – номер значения x в списке, pred(x) – значение в списке, предшествующее x succ(x) – значение в списке, следующее за x. К данным такого типа применимы операции отношения <, >, <= (меньше или равно), >= (больше или равно), <> (не равно). Целые типы данных, длина их внутреннего представления в байтах и диапазон возможных значений
Операции над целыми величинами – сложение (+), вычитание (-), умножение (*), деление нацело (div), вычисление остатка от деления (mod). Логический тип данных. Описание – идентификатор boolean; Значения – false(ложь) и true(истина); Размер выделяемой памяти – 1 байт. Пример описания переменных логического типа: Var A,d: boolean; Свои значения переменные логического типа получают обычно в результате выполнения операций сравнения (отношения): «<»(меньше), «>»(больше), «<=»(меньше или равно), «>=»(больше или равно), «<>»(не равно), «=»(равно). Результат отношения равен true, если отношение удовлетворяется для значений входящих в него операндов, а false в противном случае. Символьный тип данных. Описание – идентификатор char; Значением может быть любой символ – буква, цифра, знак препинания и специальные символы. Каждому символу соответствует целое число от 0 до 255, которое служит кодом внутреннего представления символа, его возвращает функция ord(<символ>). Для кодировки используется код ASCII. Размер выделяемой памяти – 1 байт. Пример описания переменных символьного типа Var char_1,ch: char; Вещественные типы данных. В отличие от порядковых типов, значения которых всегда сопоставляются с рядом целых чисел, и, следовательно, представляются в ПК абсолютно точно, значения вещественных типов определяют произвольное число лишь с некоторой конечной точностью, зависящей от внутреннего формата вещественного числа.
Пример: 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) цикл (циклический алгоритм).
Выделяют три вида циклов: - с предусловием - «Пока» «Пока» условие истинно повторяет серию команд; - с постусловием «До» Выполняет серию команд «До» тех пор, когда условие станет истинным - цикл с параметром «Для». «Для» параметра цикла от начального значения до конечного, изменяющегося с заданным шагом, выполняется серия команд.
Для реализации развилки в Паскале предусмотрены два оператора: условный оператор и вложенный. Они предназначены для выделения из составляющих их операторов одного, который и выполняется. Полный условный оператор 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.
|