Скачать 2.97 Mb.
|
Практическое занятие №4. Программирование. Линейные процессы. Ветвления1. Цель занятияЦель занятия – усвоить понятие «алгоритм», представленный средствами программирования. Знать структуру программы, стандартные типы данных, основные операторы Turbo Pascal. Уметь записать алгоритм в виде программы для линейного алгоритма и ветвления. 2. Теоретический материал для практического занятия №4Алгоритмический язык Паскаль был разработан в 1971г. швейцарским математиком Никлаусом Виртом. Язык получил название в честь французского математика и философа Блеза Паскаля (1623–1662). С момента создания и до сегодняшних дней язык играет особую роль в его изучении и в практическом программировании. Автор реализовал в языке принцип структурного программирования. Паскаль стал первым языком, с которым знакомится большинство будущих программистов. Существует много версий языка Паскаль. В 80-е годы на основе Паскаля был разработан Turbo Pascal. Turbo – это торговая марка разработчика фирмы Borland. Turbo Pascal – это система программирования, которая представляет собой единство двух самостоятельных составляющих: 1) Компилятора с языка программирования Паскаль. 2) Инструментальной программной оболочки, предоставляющей разнообразные сервисные услуги, что способствует повышению эффективности создания программ. Таким образом, компилятором реализуется язык программирования Turbo Pascal, а разнообразные сервисные услуги обеспечиваются инструментальной программной оболочкой. Программа – это алгоритм, представленный средствами любого языка (Бейсик, Паскаль и т.д.). 2.1. Конструкция языка Turbo Pascal Под конструкцией любого алгоритмического языка высокого уровня понимают все его составляющие: алфавит, данные, стандартные функции и процедуры, операторы. 2.1.1. Алфавит 1) латинский шрифт; 2) русский шрифт; 3) цифры (0 9); 4) символы: а) знаки арифметических операций (+ – * /), нет возведения в степень; б) знаки логических отношений (<, >, <= вместо , >= вместо , <> вместо ); в) разделители (, . ; :) г) прочие символы. 2.1.2. Данные и типы данных Данные могут быть разделены на: 1) Константы – const. 2) Переменные – var. Константам и переменным даётся имя, которое называется идентификатором. С другой стороны в зависимости от вида данных (число, текст, символ и т.д.) в Паскале имеет значение тип данных. Понятие типа – одно из фундаментальных понятий Turbo Pascal. Паскаль – это типизированный язык, который характеризуется разветвленной структурой типов данных, построен на основе строгого соблюдения типов. Язык Turbo Pascal предоставляет большие возможности создания сложных типов, однако все они строятся на основе элементарных (стандартных) типов. Для начала можно ограничиться стандартными типами данных (4 типа). Соответственно можно выделить следующие данные: числовые, символьные, логические. Числовые данные подразделяются на целые и вещественные: 1) INTEGER – целочисленные данные, во внутреннем представлении занимают два байта; диапазон возможных значений – от -32768 до +32767. 2) REAL – вещественные данные, занимают 6 байт; диапазон возможных значений модуля – от 2.9Е-39 до 1.7Е+38; точность представления данных – 11…12 значащих цифр. Вещественные данные в паскале могут записываться в двух форматах: а) Формат с фиксированной точкой (число 34,5 в паскале запишется 34.5). б) Формат с плавающей запятой (34,5 в паскале запишется 0.345Е2 или 3.45Е1, где Е означает число 10, а после записывается степень этого числа). 3) CHAR – символьные данные, занимает 1 байт. 4) BOOLEAN – логический тип, занимает 1 байт и имеет два значения: FALSE (ложь) и TRUE (истина). 2.1.3. Стандартные функции Стандартные функции подразделяются на числовые, символьные и т.д. Числовые стандартные функции представлены в таблице 4.1. Таблица 4.1
Примечания 1) После имени стандартной функции в скобках записывается аргумент, который может быть: а) константой: например cos(1.3), б) переменной: например cos(x), в) арифметическим выражением: например cos(x+y), г) стандартной функцией: например cos(ln(x)); 2) Аргумент тригонометрической функции должен быть задан в радианах. Если он задан в градусах, то его следует перевести в радианы по формуле: . 3) Логарифмические функции: . 4) Обратные тригонометрические функции: ; ; . 5) Гиперболические функции: ; ; ; . 6) Возведение в степень: ; . 7) Тригонометрические функции: tg x = sin x/cos x; ctg x = cos x/ sin x. 2.1.4. Арифметические, логические, символьные выражения а) Арифметические выражения Пример арифметического выражения. . В Турбо Паскале есть все 4 арифметические операции над числовыми переменными: а) + сложение; б) – вычитание; в) * умножение; г) / деление вещественное; Для данных типа INTEGER в Турбо Паскале есть еще операции деления:
Пример. Найти частное A/Z. На Паскале частное A/Z имеет вид: A div Z . Пример. Найти остаток от деления A/Z. На Паскале остаток от деления A/Z имеет вид: A mod Z . F:=17 DIV 5; – деление нацело, ответ: 3; R:=17 MOD 5; – остаток от деления нацело, ответ: 2. б) Логические выражения Пример логических выражений: (A>0) and (B>0) означает (А и В больше нуля). (A>0) or (B>0) означает (А или В больше нуля). В Турбо Паскале определены следующие логические операции: 1) not (NOT) – логическое НЕ (логическое отрицание); 2) and (AND) – логическое И (конъюнкция или логическое умножение); 3) or (OR) – логическое ИЛИ (дизъюнкция или логическое сложение); 4) xor (XOR) – исключающее ИЛИ; 5) eqv (EQV) – эквивалентность; 6) IMP – импликация (если…, то…). 2.2. Структура программы на языке Паскаль Структура программы на языке Turbo Pascal имеет следующий вид: Таблица 4.2
Выделяют две части программы: 1. Раздел описаний. В разделе описаний задаётся описание констант ключевым словом const, переменные в этом разделе задаются ключевым словом var, описание нового типа переменных задаётся ключевым словом type. 2. Раздел операторов. Этот раздел является исполняемой частью программы. Чтобы отделить раздел описаний от раздел операторов между ними вставляется слово begin, которое означает начало исполняемой части программы. Раздел операторов заканчивается словом end., обязательно в конце должна быть точка. Пара (begin…end)называется операторными скобками. Такая структура обязательна для любой программы, что является следствием жесткого требования языка: любой нестандартный для языка Турбо Паскаль идентификатор, используемый в исполняемых операторах, должен быть предварительно описан в разделе описаний. Описать идентификатор – это значит указать тип связанного с ним объекта программы (константы или переменной). 2.3. Основные операторы Паскаля Оператор языка - это зарезервированная комбинация символов. 2.3.1. Оператор присваивания Пример 1. Представлен оператор присваивания: R: =cos(x)+ln(y); Оператор присваивания выполняется в два этапа: 1. Первый этап – выполнение правой части, т.е. в примере вычисляется арифметическое выражение. 2. Второй этап – присвоение результата левой части, т.е. в примере переменной R присваивается число, полученное при вычислении арифметического выражения. Примечание. Недопустима запись оператора присваивания в виде: cos(x)+ln(y):=R; 2.3.2. Операторы ввода В Паскале нет специальных операторов ввода-вывода. Для обмена информацией в программах Паскаля используются специальные встроенные процедуры, которые не нуждаются в предварительном описании. Таким образом, все операторы ввода-вывода являются операторами обращения к встроенным процедурам ввода или вывода данных. По операторам READ, READLN вызывается встроенная процедура ввода данных и программа останавливается в ожидании ввода. Пример. READLN (X,Y); Следует набрать на клавиатуре два числа через пробел и нажать клавишу «Ввод». 2.3.3. Операторы вывода Основное назначение этих операторов – вывод результатов выполнения программы. Оператор вывода WRITE выводит строку на экран и оставляет курсор в конце выведенной строки. Если в программе несколько операторов WRITE, то вывод осуществляется в одну строку. Оператор вывода WRITELN выводит в отдельную строку, после вывода результата осуществляет перевод строки и устанавливает курсор в начало следующей строки экрана. Пример записи оператора вывода переменных X,Y,Z: WRITELN(X,Y,Z); Если в программе необходимо вывести текст на экран, следует этот текст заключить в апострофы. В частности подсказка на экран для ввода данных записывается оператором: WRITELN(‘ввести X,Y,Z’); 2.3.4. Комментарий Комментарий в Турбо Паскале – это произвольная последовательность любых символов, обрамленная фигурными скобками. Комментарий разрешается вставлять в любое место программы, где по смыслу должен стоять пробел. В качестве ограничителей комментария допускается использование фигурных скобок «{» и «}», а также пары символов «(*» – слева от комментария и «*)» – справа от него: {Это – комментарий}. (*Это тоже комментарий*). 2.4. Операторы передачи управления Назначение операторов передачи управления заключается в организации ветвлений в программе: условных или безусловных. С помощью этих операторов вычислительный процесс передается в указанную оператором точку программы по указанному в операторе условию либо без условия. 2.4.1. Оператор безусловного перехода Действие оператора GOTO состоит в передаче управления соответствующему оператору. Структура оператора: GOTO метка; Метка в Турбо Паскале – это произвольный идентификатор, позволяющий именовать некоторый оператор программы и таким образом ссылаться на него. Метка располагается непосредственно перед помечаемым оператором и отделяется от него двоеточием. Перед тем как появиться в программе, метка должна быть задана в разделе описанания. Описание меток состоит из зарезервированного слова LABEL (метка), за которым следует список меток. Пример 2. LABEL 1; {в разделе описания}; goto 1; {в разделе операторов} {перейти на метку 1} 1: read(x,y); {строка с меткой 1 в разделе операторов} При исполнении меток необходимо руководствоваться следующими правилами: 1) метка, на которую ссылается оператор GOTO, должна быть задана в разделе описаний и она обязательно должна встретиться где-нибудь в теле программы; 2) метки, описанные в процедуре (функции), локализуется в ней, поэтому передача управления извне процедуры (функции) на метку внутри неё невозможна. Однако в программировании не рекомендуется использование оператора GOTO , т.к. это затрудняет понимание программ, делает ее запутанной и сложной в отладке. Современная технология структурного программирования основана на принципе программирования без GOTO. 2.4.2. Операторы условного перехода Структура условного оператора имеет следующий вид: IF <�условие> THEN <�оператор 1> ELSE <�оператор 2>; где: IF, THEN, ELSE – зарезервированные слова (если, то, иначе); <�условие> – произвольное выражение логического типа; <�оператор 1>, <�оператор 2> – любые операторы языка Турбо Паскаль. Условный оператор работает по следующему алгоритму. Вначале вычисляется условное выражение <�условие>. Если результат есть TRUE (истина), то выполняется <�оператор 1>, а <�оператор 2> пропускается; если результат есть FALSE (ложь), наоборот, <�оператор 1> пропускается, а выполняется <�оператор 2>. Поскольку любой из операторов <�оператор 1> и <�оператор 2> может быть любого типа, в том числе и условным, а в то же время не каждый из «вложенных» условных операторов может иметь часть ELSE <�оператор 2>, то возникает неоднозначность трактовки условий. Эта неоднозначность в Турбо Паскале решается следующим образом: любая встретившаяся часть ELSE соответствует ближайшей к ней «сверху» части THEN условного оператора. Условный оператор позволяет проверить некоторое условие и в зависимости от результатов поверки выполнить то или иное действие. Таким образом, условный оператор – это средство ветвления вычислительного процесса. Операторы условного перехода подразделяются на: простые и составные, на короткие и полные. 1) Простой, короткий IF (если) Структура оператора имеет вид: IF (условие) THEN (оператор или метка); Пример 3. Вычислить y: = ln x , если x > 0. Программа имеет вид: Program PR3; Var y, x : real; begin writeln(‘ввести x’); Readln (x); {простой, короткий IF} IF x > 0 THEN y: = ln(x); writeln ( ‘x=’, x:7:2, ‘ y=’, y:7:2 ); end. 2) Простой, полный IF Пример 4. Вычислить y = ln x , если X>0, иначе y=cos x. В примере 4 рассматривается не только вариант «тогда», но и «иначе». Программа имеет вид: Program PR4; var x, y: real; begin writeln(‘ввести х’); Readln (х); {простой, полный IF} if x>0 THEN y:= ln (x) ELSE y:=cos(x); Writeln (‘x = ‘, x:6:2 , ‘ y = ‘, y:7:2) end. Если Х > 0, тогда выполняется оператор за словом THEN, иначе выполняется оператор, следующий за этой строкой. 3) Составной, короткий IF Составной оператор – это последовательность произвольных операторов программ, заключенная в операторные скобки – зарезервированные слова BEGIN…END. Составные операторы – важный инструмент Турбо Паскаля, дающий возможность писать программы по современной технологии структурного программирования (без перехода GOTO). Язык Турбо Паскаль не накладывает никаких ограничений на характер операторов, входящих в составной оператор. Пример 5. Вычислить y=ln x, z=y–5×x, если x > 0. Оператор условия запишется в виде: IF x>0 then Begin y:=Ln(x); z:=y–5*x; Writeln (’y = ‘, y:7:2, ‘z =’, z:8:3) end; 4) Составной, полный IF Рассмотрим задание примера 4, но вывод делается для каждого условия. Пример 6. Оператор условия запишется в виде: IF x>0 then Begin Y:=ln (x); Writeln (‘x = ‘, x:6:2 ,’ y =’, y:7:2); End Else begin Y:=cos (x); Writeln (‘x = ‘, x:6:2 ,’ y =’, y:7:2); End; В примере 6 после слов then, еlse операторы заключены в операторные скобки. 5) Структурированный (разветвленный) IF Среди условных операторов можно выделить структурированный, который предполагает проверку условий путём вложения. 5.1) Структурированный, короткий, простой IF. В структурированном операторе содержится последовательная проверка вложенных условий. Пример 7. Вычислить r=ln(x+y+z), если x > 0, y > 0, z > 0. Оператор условия запишется в виде: IF x>0 then IF y>0 then IF z>0 then R:=LN(X+Y+Z); Пример 8. Можно этот пример записать иначе коротким, простым IF с логическим выражением: IF (x>0) and (y>0) and (z>0) then R:=LN(X+Y+Z); Пример 9. Вычислить r=x+y+z, если выполняется хотя бы одно из условий x>0, y>0, z>0. Оператор условия запишется в виде: IF (x>0) or (y>0) or (z>0) then R:=(x+y +z); В примерах 8, 9 логические выражения включают в себя логические операции. 5.2) Структурированный, полный, простой IF. Пример 10. Вычислить: r=ln(x+y+z), если x>0, y>0, z>0; r=ln (x+y)+ z, если x>0, y>0; r=ln (x)+y+ z, если x>0, иначе r = x+y+z . Оператор условия запишется в виде: IF x>0 then IF y>0 then IF z>0 then r:=ln (x+y+z) Else r:= ln (x+y)+z Else r:= ln (x)+y+z Else r:= x+y+z; Вначале проверяются три условия. Если они выполняются, то вычисляется r=ln(x+y+z). Иначе выполняются первые два условия, а последнее не выполняется и z ≤ 0 (первое слово else относится к последнему условию). В этом случае вычисляется r=ln(x+y)+z. Если из двух условий выполняется только первое, то вычисляется r=ln x+y+z (второе слово else относится ко второму условию) и в этом случае y ≤ 0. Последнее слово else относится к первому условию и в этом случае х ≤ 0. В этом случае вычисляется r=x+y+z. 3. Примеры выполнения задания к практическому занятию № 43.1. Программы линейных алгоритмов Пример 11. Написать программу линейного алгоритма примера 8 практической работы №1. Вычислить и вывести на экран значение функции: Y = sin (x+30)/(a + x)+b*a; Значение х ввести в градусах. Решение. В программе примера 11 после слова «BEGIN» перед операторами в фигурных скобках даются комментарии, поясняющие действия этих операторов. PROGRAM PR11; VAR a, b, x, y:real; BEGIN {На экран выводится подсказка – текст в скобках} Writeln (‘ввести a, x, b’); {Ввод с клавиатуры переменных a, x, b} Readln (a, x, b); {перевод из градусов в радианы переменной х} x:=x*pi/180; y: = sin (x+30*pi/180)/(a + x)+b*a; {Вывод переменных a, x, b} Writeln (‘a=’, a: 7:3,’ x=’, x: 7:3,’ y=’, y: 7:3); END. В примере11 вывод переменных записан в формате с фиксированной точкой. Примечание. Необходимо учесть последовательность действий при выполнении арифметического выражения с учётом приоритета арифметических действий: а) вычисляются скобки: первая слева и вторая, б) вычисляется синус первой скобки, в) выполняется операция деления синуса на вторую скобку, г) выполняется операция умножения b*a, д) выполняется операция сложения 3.2. Программы разветвляющихся алгоритмов Пример 12. Написать программу разветвляющегося алгоритма примера 9 практической работы №1. Если х>0, тогда вычислить: y = lg(x) + (a-d)/(d+b); иначе вычислить: y=sin (x)/(a + b)-b/d. PROGRAM PR12; VAR a, b,d, x, y:real; BEGIN {На экран выводится подсказка – текст в скобках} Writeln (‘ввести a, x, b, d’); {Ввод с клавиатуры переменных a, x, b,d} Read (a, x, b, d); {перевод из градусов в радианы переменной х} x:=x*pi/180; if x>0 then y: = ln(x)/ln(10) + (a-d)/(d+b) else y:=sin (x)/(a + b)-b/d; {Вывод результата} Writeln (’y=’, y: 7: 3); END. Пример 13. Дана точка А (X,Y) с координатами X,Y не равными нулю. Найти четверть, в которой находится эта точка. Program Pr 13; Var X, Y: integer; Begin writeln(‘ввести координаты т. А: X,Y’); Readln (x,y); IF (x>0 ) and (y>0) then writeln (‘т. A: в 1четверти’) else IF (x>0) and (y<0) then writeln (‘т. А в 4 четверти’) else IF y>0 then writeln (‘т. А во 2 четверти’) else writeln (‘т. А в 3 четверти’); End. Каждому ELSE соответствует предыдущее свободное then. 4. Задания к практическому занятию № 4
Задания ИДЗ №3 по теме: «Программирование. Линейные процессы. Ветвления» в Приложении №1 (Задание 4). 5. Вопросы для самоконтроля к практическому занятию № 41. Во фрагменте программы: begin writeln ( ‘ x,y’); readln(x,y,z); z:=x+y; writeln ( x,y,z); end. Представлен раздел: 1) операторов; 2) описания переменных; 3) ввода данных; 4) вывода данных. 2. Во фрагменте программы: var x,y,z: real; выполняется описание: 1) числовых переменных целого типа; 2) числовых переменных вещественного типа; 3) описание констант; 4) ввода данных. 3. Укажите правильно записанное логическое выражение на паскале: 1) r<0 and r>0; 2) 0 x; 3) (z>y) or (z 4) A>B>C<0. 4. В программе паскаля оператор: writeln(‘z=’, z: 8: 4): 1) вводит данные с клавиатуры; 2) выводит на экран подсказку; 3) выводит переменную с плавающей запятой; 4) выводит переменную с фиксированной точкой. 5. В результате работы линейного алгоритма: x:=5 y:=x+1; x:=2*y; y:=x+y; вывод y. Переменная У приняла значение: 1) 16; 2) 5; 3) 6; 4) 18. 6. В результате работы линейного алгоритма: y:=x+3; x:=2*y; y:=x+y; вывод y. Переменная У приняла значение 18. Указать значение Х до начала работы алгоритма. 1) 7; 2) 3; 3) 5; 4) 10. 7. Укажите правильно записанный оператор присваивания на паскале: 1) z:= cos(x) + ln(y); 2) cos(x):= z+ln(y); 3) z =cos(x)+log(y); 4) a+b:=c+d. 8. При x, y: integer; в результате выполнения фрагмента программы: x := -5; y := -10; if abs (x) > abs(y) then x := x + 15 else y:=x-y; write (x,y); на экран будет выведено: 1) 5; - 10; 2) 10; -10; 3) 10; 5; 4) -5; 5. </1></0> |
Программа дисциплины Программа предназначена для преподавателей, ведущих данную дисциплину, учебных ассистентов и студентов направлений 231300. 62 «Прикладная... |
О. М. Топоркова информационные технологии Учебное пособие предназначено для студентов вузов, обучающихся по направлениям подготовки Информатика и вычислительная техника; Прикладная... |
||
Учебное пособие для обучающихся в спбгу по направлениям астрономия,... Учебное пособие для обучающихся в спбгу по направлениям астрономия, информатика, математика, механика, прикладная математика, физика,... |
Информатика Учебное пособие предназначено для студентов гбпоу ио «иттриС» заочного отделения, обучающихся по специальностям тора, тэпс и опут.... |
||
Программа итогового экзамена по направлению 01. 04. 02 "Прикладная математика и информатика" Государственный междисциплинарный экзамен по направлению – 01. 04. 02 "Прикладная математика и информатика" включает дисциплины |
Рабочая программа по дисциплине «Системное и прикладное программное... Рабочая пpогpамма составлена на основе на основании на основании решения кафедры «Вычислительная техника» Ульяновского государственного... |
||
Российской федерации Содержание: умк по дисциплине математическийанализ для студентов направления подготовки 44. 03. 05 Педагогическое образование профилей... |
Образовательная программа высшего образования «Прикладная математика и информатика» Государственная итоговая аттестация выпускника по направлению подготовки бакалавров 01. 03. 02 Прикладная математика и информатика... |
||
Образовательная программа высшего образования «Прикладная математика и информатика» Государственная итоговая аттестация выпускника по направлению подготовки бакалавров 01. 03. 02 Прикладная математика и информатика... |
Рабочая программа дисциплины «Информатика» (по гос «Информатика и программирование») Рабочая программа предназначена для преподавания дисциплины «Информатика» студентам очной полной формы обучения по направлению подготовки... |
||
Е. П. Давлетярова Ю. А. Медведев Файловый менеджер Total Commander ч асть 2 «Информатика», «Математика и информатика», «Информационные и коммуникационные технологии в образовании», а также могут быть использованы... |
Учебное пособие предназначено: для использования в ходе подготовки... Учебное пособие предназначено: для использования в ходе подготовки к компьютерному тестированию по курсу «Информатика» студентами... |
||
Программа дисциплины «Информатика и программирование» для направления... Программа дисциплины «Информатика и программирование» для направления 01. 03. 04 «Прикладная математика» подготовки бакалавров |
Программа дисциплины «Информатика и программирование» для направления... Программа дисциплины «Информатика и программирование» для направления 01. 03. 04 «Прикладная математика» подготовки бакалавров |
||
Российской Федерации Московский инженерно-физический институт (государственный... Учебное пособие предназначено для студентов специальностей «эвм», «Прикладная математика и информатика» и«Автоматизированные системы... |
Методические указания содержат задания к лабораторным работам по... Методические указания предназначены для студентов направления «Прикладная информатика» профиля «Прикладная информатика в экономике»,... |
Поиск |