СОДЕРЖАНИЕ
Введение
Глава I. Основные логические конструкции в системе программированияПаскаль
1.1. Краткая история становления языка программирования Паскаль
1.2. Основные команды языка программирования Паскаль
1.3. Использование функций и процедур языка Паскаль
Глава II. Постановление и решение задачмеханики в среде системы Паскаль
2.1.Задачи статики, решаемыес помощью языка Паскаль
2.2. Задачи кинематики,решаемые посредством языка Паскаль
3.Задачи динамики, решаемые в среде системы Паскаль
Заключение
Литература
ВВЕДЕНИЕ
Информатика — научнаядисциплина, изучающая структуру и общие свойства информации, а такжезакономерности всех процессов обмена информацией при непосредственном устном иписьменном общении специалистов до формальных процессов обмена посредствомразличных носителей информации. Значительную часть этих процессов составляетнаучно-информационная деятельность по сбору, переработке, хранению, поиска ираспространению информации.
Актуальностькурсового проекта на тему «Приложения технологии языкапрограммирования паскаль в прикладной механике» обусловлена широким внедрениемкомпьютерных технологий во все сферы деятельности человека.
Объектом курсовой работы служит процессвнедрения новых информационных технологий в сферу науки и образования.
Предметомкурсового исследования является освоение процессарешения задач прикладной механики посредством языка программирования высокогоуровня Паскаль.
Цельюкурсового проектирования является изучение полногоспектра функциональных возможностей языка программирования Паскаль для решениязадач прикладной механики.
Гипотезакурсового проектирования заключается в следующем.Овладение полным спектром функциональных возможностей языка программированияПаскаль способствует повышению эффективности решения задач прикладной механики.
Задачами курсовой работы являются:
1) освоение полногоспектра функциональных возможностей языка программирования Паскаль;
2) постановка ирешение задач прикладной механики традиционным способом;
3) решение задачмеханики в среде языка программирования Паскаль.
Методами, которыми решаются задачи курсовогоисследования, являются:
1) теоретическийанализ научно-технической литературы по языку программирования Паскаль;
2) математическоемоделирование задач прикладной механики;
3) компьютерноерешение задач прикладной механики.
Практическая значимость выполненнойкурсовой работы на тему «Приложениятехнологии языка программирования паскаль в прикладной механике» заключается втом, что каждый пользователь компьютера, решая задачи статики, кинематики идинамики сможет пользоваться свободно предложенными в работе методиками.
ГЛАВАI. ОСНОВНЫЕ ЛОГИЧЕСКИЕ КОНСТРУКЦИИ В СИСТЕМЕ ПРОГРАММИРОВАНИЯ ПАСКАЛЬ
1.1. КРАТКАЯ ИСТОРИЯ СТАНОВЛЕНИЯ ЯЗЫКА ПРОГРАММИРОВАНИЯ ПАСКАЛЬ
Язык Pascal был создан как учебный языкпрограммирования в 1968 – 1971 году Никлаусом Виртом. В настоящее время этотязык имеет более широкую сферу применения, чем предусматривалось при егосоздании.
Язык программирования Pascal (назван в честь выдающегосяфранцузского математика и философа Блеза Паскаля (1623 – 1662)), разработан в1967 – 1971гг. Никлаусом Виртом, профессором, директором института информатикиШвейцарской высшей политехнической школы. Язык Pascal, созданный первоначально для обученияпрограммированию как систематической дисциплине, скоро стал широко использовандля разработки программных средств в профессиональном программировании.
Широкой популярностью Pascal среди программистов способствовали следующиепричины:
· благодаря своейкомпактности, удачному первоначальному описанию Паскаль оказался достаточнолёгким для обучения.
· языкпрограммирования Pascal, отображаетфундаментальные и наиболее важные идеи алгоритмов в очевидной и легковоспринимаемой форме, что предоставляет программисту средства, помогающиепроектировать программы.
· язык Pascal позволяет чётко реализовать идеиструктурного программирования и структурной организации данных.
· он сыграл большуюроль в развитии методов аналитического доказательства правильности программ ипозволил реально перейти от методов отладки программ к системам автоматическойпроверки и правильности программ.
· применения языка Pascal значительно подняло «планку»надёжности разрабатываемых программ за счёт требований Pascal, к описанию используемых в программе переменных прикомпиляции без её выполнения, использование в Паскале простых и гибких структуруправления: ветвлений, циклов.
1.2. ОСНОВНЫЕ КОМАНДЫ ЯЗЫКА ПРОГРАММИРОВАНИЯ
ПАСКАЛЬ
Условные операторыпредназначены для выбора к исполнению одного из возможных действий (операторов)в зависимости от некоторого условия (при этом одно из действий может быть пустым,т.е. отсутствовать) В качестве условий выбора используется значение логическоговыражения. В Turbo Pascal имеются два вида условных операторов: if и case.
Оператор условия if.Оператор условия if является одним из самых
популярных средств, имеющихестественный порядок выполнения операторов программы.
Операторы условия ifвыполняются следующим образом. Сначала выражается выражение, записанное вусловии. В результате его вычисления получается значение булевского типа. Впервом случае, если значение выражения есть true (истина), выполняется,указанный после слова then (то).
Условный операторпозволяет осуществить ветвление программы только по двум направлениям, одно из которыхсоответствует выполнению проверяемого условия. Если для переменной необходимоосуществить ряд действий, зависящих от других условий, то надо записывать, либовложенные условные операторы, либо несколько операторов подряд. Для такой операцииудобно использовать оператор варианта.
Вход в структуру содержитвычисление или ранее полученное значение переменной (индекса варианта). Это значениеможет совпасть с меткой, стоящей перед оператором на одной из ветвейпереключаются. В таком случае выполняется оператор, помеченный этой меткой, и происходитвыход из структуры. Оператор бывает простым или составным, ограниченным операторнымискобками begin … end; Если значение индекса варианта не совпало ни с однойиз меток, то выполняется оператор с номером n + 1 из строки else.Если оператор варианта содержит строку else, то это — полная форма оператора,если такой строки нет, то используется сокращённая форма оператора варианта.Метки оператора варианта могут быть константами любого типа. Их тип долженсовпадать с переменной индекса варианта. Возможно, чтобы индекс варианта долженбыть как именем переменной, так и выражением соответствующего типа.
Существуют задачи вкоторых по одной из ветки ветвления нужно рассмотреть ещё одно условие.
Рассмотрим задачу:сравнить 3 целых числа и вывести на печать максимальное.
Programchisla;
Var a, b,c: integer;
Begin
Writeln (‘Введите тричисла’);
Read (a, b,c);
If ac thenwriteln (‘ максимальночисло’, a)
Else ifb>c then writeln (b максимальночисло’, b)
Else writeln (‘cмаксимальное число’, c);
End.
1.3.ИСПОЛЬЗОВАНИЕФУНКЦИЙ И ПРОЦЕДУР ЯЗЫКА ПАСКАЛЬ
1.3.1. Алгоритм.
Слово алгоритм происходитот algorithmic – латинской формы написания имени латинского математика IXв. Аль-Хорезми, который сформулировал правила выполнения четырёх арифметическихдействий над многозадачными числами. В дальнейшем алгоритм стали называть описаниелюбой последовательности действий, которую следует выполнить для решения заданнойзадачи.
Алгоритм может быть ориентированна исполнение его человеком или автоматическим устройством. Алгоритмы, предназначеныдля выполнения компьютерами, обычно называют компьютерными программами или простопрограммами.
Алгоритмом называется точноепредписание, определяющее последовательность действий исполнителя, направленныхна решение поставленной задачи. В роли исполнителя алгоритмов могут выступать люди,роботы, компьютеры.
Используются разныеспособы записи алгоритмов. Широко распространенный словесный способ записи: этозаписи рецептов приготовления различных блюд в кулинарной книге, инструкции по использованиютехнических устройств, правила правописания и многие другие. Наглядно представляетсяалгоритм языком блок-схем.
Свойства алгоритма. Присоставлении алгоритма необходимо обеспечить, чтобы он обладал рядом свойств.
Однозначность алгоритма, подкоторой понимается единственность толкования исполнителем правил выполнениядействий и порядка их выполнения. Чтобы алгоритм обладал этим свойством, ондолжен быть записан командами из системы команд исполнителя.
Для нашего примера исполнительалгоритма должен понимать такую запись действий, как сложность числа А иВ. Конечность алгоритма – обязательность завершения каждого из действий,составляющих алгоритм, и конец выполнения каждого алгоритма в целом.
Результативностьалгоритма, предполагающая, что выполнение алгоритма должно завершитсяполучением определенных результатов.
Массовость, т.е.возможность применения данного алгоритма для решения целого класса задач,отвечающих общей постановки задачи. Так как алгоритм, показанный на рисунке,позволяет правильно подсчитать сумму не только чисел 2 и 3, но любой другойпары целых чисел, он обладает свойством массовости.
Для того чтобы алгоритмобладал свойством массивности, следует составлять алгоритм, используяобозначения величин и избегая конкретных значений. Правильность алгоритма, подкоторой понимается способность алгоритма давать правильные результаты решенияпоставленных задач. Представленный в примере алгоритм обладает свойством правильности,так как в нём использована правильная формула сложения целых чисел, и для любойпары целых чисел результат выполнения алгоритма будет равен их сумме.
Компьютерная программа – этоплан будущих работ, составленный в расчёте на его выполнение компьютером.
Чтобы компьютер смогвыполнить программу, она должна быть записана в специальной форме, доступной компьютеру;должна быть записана в соответствии со специальным набором правил.
Набор записи компьютернойпрограммы называется «алгоритмическим языком».
Вычислительный процессназывается линейным (не разветвляющимся), если направление его продолжения на любомэтапе вычислений является единственным. Алгоритм линейного вычислительного процессаописывает действия, последовательность выполнения которых не зависит от исходныхданных и результатов промежуточных вычислений, т.е является постоянной.
Этот процесс являетсянаиболее простым видом вычислений. Линейный процесс (как и другойвычислительный процесс) можно представить в виде следующих этапов: первый –задание исходных данных; второй реализация вычислений; третий – вывод результатовсчёта и поясняющей информации. Этапы отображаются на блок-схеме, а затем реализуютсяв ПК в указанной последовательности.
Алгоритм деления отрезка АВпополам:
1) поставить ножкуциркуля в точку А;
2) установить растворциркуля равным длине отрезка АВ;
3) провести окружность;
4) поставить ножкуциркуля в точку В;
5) провести окружность;
6) через точкипересечения окружностей провести прямую;
7) отметить точкупересечения этой прямой с отрезком АВ;
Каждое указание алгоритмапредписывает исполнителю выполнить одно конкретное значения действий. Исполнительне может перейти следующей операции, не завершив полностью предыдущую. Предписанияалгоритма надо выполнять последовательно одно за другим, с соответствии с порядкомих записи. Следование всем предписаниям гарантирует правильное решение задачи.Данный алгоритм совершенно ясен исполнителю
Блок-схема – алгоритм,выраженный с помощью логических блоков. Блок-схема служит для того, чтобы нагляднейпредставлять те или иные формы организаций действий. Каждое действие алгоритма,кроме проверки условия, будем помещать в прямоугольник, а вопрос о том, выполняетсяли некоторое условие, — в ромб. Еще существуют: параллелограмм, овал,оборванный листок.
В рассмотренных до сих поралгоритмах и программах все команды выполнялись последовательно одна за другойв том порядке, в каком они были записаны. Однако таким образом может быть построеналгоритм для решения далеко не всякой задачи. В практике известны задачи,дальнейший ход решения которых зависит от выполнения каких либо условий.
Ветвление — это такая формаорганизаций действий, при которой в зависимости от выполнения или невыполнения некоторогоусловия совершатся либо одна, либо другая последовательность действий.
1. Процедурыввода-вывода. Почти каждая программа должна общаться с пользователем, то есть выводитьрезультаты своей работы на экран и запрашивать у пользователя информацию с клавиатуры.Для того чтобы это стало возможным, в Турбо-Паскале имеются специальные процедуры(то есть небольшие вспомогательные программы), называются он процедурами ввода-вывода.Для того чтобы заставить процедуру работать в нашей программе, нужно написатьеё имя, за которым в скобках, через запятую перечислить параметры, которые мыхотим ей передать. Для процедуры вывода информации на экран параметрами могут служитьчисла или текстовые сообщения, которые должна печатать наша программа на экран.
Опишем назначение этихпроцедур:
write (p1, p2,…pn); — (выводит наэкран значения выражений p1, p2,… pn, количество которых (n) неограниченно.Выражения могут быть числовые, строковые, символьные и логические. Под выражениембудем понимать совокупность некоторых действий, применённых к переменным,константам или литералам, например: арифметические действия и математическиефункции для чисел, функции для обработки строк и отдельных символов, логическиевыражения и т.п. Возможен форматный вывод, т.е. явное указание того, скольковыделять позиций на экране для вывода значения.
Пример для вещественныхтипов:
write (r+s:10:5); — (вывести значение выражения r + s с выделением для этого 10 позиций, из них 5(после запятой).
Для других типов все несколькопроще:
write (p:10); — (вывести значение выражения p,выделив под это 10 позиций. Вывод на экран в любом случае производится по правомукраю выделенного поля.
Writeln (p1, p2,…pn); — (аналогично write,выводит значения p1, p2,… pn, после чего переводит курсор на новуюстроку. Смысл параметров (тот же, замечания о форматном выводе остаются в силе.
Существует вариант writeln;(без параметров), что означает лишь перевод курсора на начало новой строки.
readln (v1, v2, ...vn); (ввод с клавиатуры значенийпеременных v1,...vn.
Переменные могут иметьстроковый, символьный или числовой тип. При вводе следует разделять значенияпробелами, символами табуляции или перевода строки (т.е., нажимая Enter).
read (v1, v2, ...vn); (по назначению сходно с readln;отличие состоит в том, что символ перевода строки (Enter), нажатый призавершении ввода, не «проглатывается», а ждет следующего оператора ввода. Если имокажется оператор ввода строковой переменной или просто readln; тостроковой переменной будет присвоено значение пустой строки, а readlnбез параметров не станет ждать, пока пользователь нажмет Enter, асреагирует на уже введенный.
Пример. Программа проситпользователя ввести с клавиатуры два целых числа и печатает на экране их сумму:
ProgramPrintSum;
var a,b:integer;
begin
write ('Введите двачисла:');
readln (a,b);
writeln ('Суммаa иb равна',a+b);
readln;
end.
1.3.2. Функциичисловых параметров.
Название
Значение
abs(x)
модуль x
cos(x)
косинус x
frac(x)
дробная часть x
int(x)
целая часть x (т.е. ближайшее целое, не превосходящее x)
pi |число
round(x)
x, округлённое до целого
sin(x)
синус x
sqr(x)
квадрат x
sqrt(x)
квадратный корень из x
1. Оператор if.
Иногда требуется, чтобычасть программы выполнялась не всегда, а лишь при выполнении некоторого условия(а при невыполнении этого условия выполнялась другая часть программы). В этом случаепользуются оператором условного выполнения, который записывается в следующемвиде:
if then else;
Под оператором понимаетсялибо одиночный оператор (например, присваивания, вызова процедуры), либо такойсоставной оператор, состоящий из нескольких простых операторов, помещённыхмежду словами begin и end. Важно заметить, что перед elseне ставится точка с запятой. Часть else может и отсутствовать.
Пример 1: пусть требуетсянайти число m=max(a,b). Этой задаче
соответствует следующийфрагмент программы на Паскале:
if a>bthen m:=a else m:=b;
Пример 2: (без else)пусть дано целое число i. Требуется оставить его
без изменения, если оноделится на 2, и вычесть из него 1, если это не так.
var i:integer;
if i mod 2= 1 then i:=i-1; {else — ничегонеделать}
Пример 3: (с использованиемсоставного оператора). Пусть даны две переменные типа real. Требуетсяпоменять местами значения этих переменных, если a1>a2.
vara1,a2,buf:real;
if a1>a2then begin
buf:=a1;
a1:=a2;
a2:=buf;
end;
Пример при подсчетесуммы натуральных чисел от 1 до 100:
Var i,sum:integer;
begin
sum:=0;i:=0;
repeat
i:=i+1;
sum:=sum+i;
untili=100;
writeln ('Суммаравна: ',sum);
readln;
end.
Важно заметить, что операторыстоящие внутри цикла repeat (иначе в теле цикла) выполняются хотя быодин раз (только после этого проверяется условие выхода).
Этот цикл записываетсятак: while do. (Пока условие истинно, выполнять оператор). Суть в следующем:пока условие истинно, выполняется оператор (в этом случае оператор может невыполниться ни разу, т.к. условие проверяется до выполнения).
1. Символьный тип
Тип данных, переменныекоторого хранят ровно один символ (букву, цифру, знак препинания и т.п.)называется символьным, а в Паскале — char. Объявить переменную такоготипа можно так: var ch: char;. Для того чтобы положить в эту переменнуюсимвол, нужно использовать оператор присваивания, а символ записывать в апострофах,например: ch:='R';. Для символьных переменных возможно такжеиспользование процедуры readln, например:
write(‘Выйти из игры?(Да/Нет)’); readln(ch);
if ch=’Д’ then… {выходить}...
else ...{продолжать}...;
Символьные переменные в памятикомпьютера хранятся в виде числовых кодов, иначе говоря, у каждого символа естьпорядковый номер. К примеру, код пробела равен 32, код ‘A’ — 65, ‘B’— 66, ‘C’ — 67, код символа ‘1’ — 48, ‘2’ — 49, ‘.’ — 46 и т. п.Некоторые символы (с кодами, меньшими 32) являются управляющими, при выводетаких символов на экран происходит какое-либо действие, например, символ с кодом10 переносит курсор на новую строку, с кодом 7 — вызывает звуковой сигнал, скодом 8 — сдвигает курсор на одну позицию влево. Под хранение символа выделяется1 байт (байт состоит из 8 бит, а бит может принимать значения 0 или 1), поэтомувсего можно закодировать 28 = 256 различных символов. Кодировка символов, котораяиспользуется Турбо-Паскале, называется ASCII (American Standard Code forInformation Interchange — американский стандартный код для обмена информацией).
Для того чтобы получить впрограмме код символа нужно использовать функцию chr, например:
var i: byte; {число,занимающее 1 байт, значения — от 0 до 255}
ch: char;
...
readln(i);writeln ('символскодом',i,' — это',chr(i));
Если в качестве кодаиспользуется конкретное число, а не выражение и не переменная, то можноиспользовать символ «#», скажем так: ch:=#7;. Для того перехода от кода ксимволу используется функция ord (от слова ordinal — порядковый).Имеющиеся знания позволяют нам написать программу, которая выдаёт на экрантаблицу с кодами символов:
programASCII;
var ch:char;
begin
for ch:=#32to #255 do write(ord(ch),'—>',ch,' ');
readln;
end.
В этой программе вкачестве счётчика цикла была использована символьная переменная, это разрешается,поскольку цикл for может использовать в качестве счётчика переменныелюбого типа, значения которого хранятся в виде целых чисел.
С использованием кодов работаютещё две функции, значения которых символьные:
1. succ (от succeedent— последующий), она выдаёт символ со следующим кодом.
2. pred (от predecessor— предшественник), выдаёт символ с предыдущим кодом.
Если попытаться впрограмме получить succ(#255) или pred(#0), то возникнет ошибка. Пользуясьэтими функциями можно переписать предыдущую программу и по-другому:
ch:=#32;
whilech#255 do begin
write(ord(ch),'—>',ch,'');
ch:=succ(ch);
end;
Сравнение символов. Такжекак и числа, символы можно сравнивать на =, , =. В этомслучае Паскаль сравнивает не сами символы, а их
коды. Таблица ASCII составленатаким образом, что коды букв (латинских и большинства русских) возрастают придвижении в алфавитном порядке, а коды цифр расположены по порядку: ord(‘0’)=48,ord(‘1’)=49,… ord(‘9’)=57. Сравнения символов можно использовать везде, гдетребуются логические выражения: в операторе if, в циклах и т.п.
2. Строковый тип
Для хранения строк (тоесть последовательностей из символов) в Турбо Паскале имеется тип string.Значениями строковых переменных могут быть последовательности различной длины(от нуля и более, длине 0 соответствует пустая строка). Объявить строковуюпеременную можно двумя способами: либо var s: string; (максимальнаядлина строки — 255 символов), либо var s: string[n]; (максимальная длина— n символов, n — константа или конкретное число).
Для того чтобы положитьзначение в строковую переменную используются те же приёмы, что и при работе ссимволами. В случае присваивания конкретной строки, это строка должназаписываться в апострофах (s:='Hello, world!'). Приведём простейший примерсо строками: программа спрашивает имя у пользователя, а затем приветствует его:
ProgramHello;
var s:string;
begin
write('Как Вас зовут:');
readln(s);
write('Привет, ',s,'!');
readln;
end.
Хранение строк. В памяти компьютерастрока хранится в виде последовательности из символьных переменных, у них нетиндивидуальных имён, но есть номера, начинающиеся с 1). Перед первым символом строкиимеется ещё и нулевой, в котором хранится символ с кодом, равным длине строки. Намабсолютно безразлично, какие символы хранятся в байтах, находящихся запределами конца строки. Рассмотрим пример. Пусть строка s объявлена как string[9], тогда после присваивания s:=’Привет’; она будет хранится в следующем виде:Номер байта 1 2 3 4 5 6 7 8 9 Содержимое |#6 ‘П’ ‘р’ ‘и’ ‘в’ ‘е’ ‘т’ ‘ю’ ‘s’ ‘%’
Для того чтобы в программеполучить доступ к n-му символу строки используется запись s[n]. Еслипоменять значение s[0] то это отразится на длине строки. В следующем примере изстроки 'Привет' мы сделаем 'Привет!':
s[0]:=#7; s[7]:='!';.
Сравнение строк. Строки сравниваютсяпоследовательно, по символам. Сравниваются первые символы строк, если они равны— то вторые, и т. д. Если на каком-то этапе появилось различие в символах, то меньшейбудет та строка, в которой меньший символ. Если строки не различались, а затем однаиз них закончилась, то она и считается меньшей. Примеры: 'ананас''свинина', ''
Склеивание (конкатенация)строк. К строкам можно применять операцию «+», при этом результатом будетстрока, состоящая из последовательно записанных «слагаемых». Пример: после действияs:= 'abc'+'def'+'ghi'; переменная s будет содержать ‘abcdefghi’.
Процедуры и функции дляработы со строками. Наиболее часто употребляется функция length(s: string):integer (после двоеточия записан тип значения, возвращаемого функцией, в нашемслучае — целое число). Эта функция возвращает длину строки s.
3. Перечисляемый тип
Предположим, что намтребуется переменная для хранения дня недели. В этом случае можновоспользоваться целым типом (например byte) и хранить дни недели в видечисел 1, 2,… 7, но это будет не очень наглядно. Турбо Паскаль предоставляет болееудобный вариант, а именно создание перечислимого типа, например, такого:
type Days = (Mon, Tue,Wed, Thu, Fri, Sat, Sun);
После этого можно завестипеременную этого типа (var day: Days;) и использовать её. Ниже приведеныпримеры использования:
day:=Wed;
...
ifday>Frithenwriteln('Сегодня выходной');
...
if day=Mon thenwriteln('Началась рабочая неделя');
Как вы уже заметилизначения перечислимого типа можно сравнивать, при этом меньшим считается то,которое объявлено раньше (левее) в определении типа.
Для переменныхперечисляемых типов возможно применение функций succ и pred,например, succ(Wed) дает Thu, Pred(Sun) дает Sat. Еслипопытаться написать Pred(Mon) или Succ(Sun), то уже на этапе проверкипрограммы компилятором произойдет ошибка.
Хранение значенийперечисляемого типа устроено внутри довольно просто: хранятся целые числа от 0до n, в нашем случае n = 6. Существует функция Ord,которая позволяет получить то число, в виде которого хранится какое-либозначение перечисляемого типа, например Ord(Wed) дает
При необходимости можно получитьзначение перечисляемого типа по его численному представлению, например, Days(1)есть Tue. После всего сказанного можно заметить, что при сравнениивеличин перечисляемого типа в действительности сравниваются их порядковыеномера (Ord).
Пример использованияперечисляемых типов:
Пусть корабль можетдвигаться только по четырем направлениям: на север, на запад, на юг и на восток,то есть текущее направление движения определяется переменной типа Directions= (North, West, South, East);. Этому кораблю можно подавать приказыследующих типов: вперёд, назад, влево, вправо, то есть любой приказ задатьпеременной типа Orders = (Ahead, Back, Left, Right);. Пусть корабльдвигался по направлению d1, после чего ему дали приказ p.Программа должна определить, в каком направлении корабль будет двигаться послевыполнения приказа.
ProgramShip;
typeCourses = (North, West, South, East);
Orders =(Ahead, Back, Left, Right);
var d1, d2:Courses;
p: Orders;
i: integer;
s: string;
begin {Запрашиваем упользователя информацию о курсе и приказе}
writeln('Введитепервоначальный курс корабля ');
write('(0-север,1-запад, 2-юг, 3-восток) ');
readln(i);
d1:=Courses(i);
writeln('Введитеприказ, данный кораблю ');
write('(0-прямо,1-назад, 2-влево, 3-вправо) ');
readln(i);
p:=Orders(i);{Определяемновыйкурс}
case p of
Ahead:d2:=d1;
Back:d2:=Courses((ord(d1)+2) mod 4);
Left:d2:=Courses((ord(d1)+1) mod 4);
Right:d2:=Courses((ord(d1)+3) mod 4); {-1 — нельзя, таккак(Ord(North)-1) mod 4 =-1}
end; {Выводимрезультат на экран}
case d2 of
North:s:='север';
West: s:='запад';
South: s:='юг';
East: s:='восток';
end;
writeln('Теперькорабль движется на '+s);
readln;
end.
4. Ограниченный тип
Этот тип также рассмотримна примере. Пусть в некоторой переменной нужно хранить текущее число, то естьномер дня в месяце. В Турбо Паскале можно задать тип DaysInMonth = 1..31;.Переменные и константы этого типа могут принимать только такие значения, еслипопытаться задать что-либо другое, то компилятор выдаст ошибку. В качестве границмогут употребляться и отрицательные числа, например Temperature = — 60..50;
В качестве базового типа(то есть типа, из которого выбирается диапазон значений) могут использоваться почтивсе порядковые типы, то есть те, которые хранятся в виде целых чисел. К порядковымтипам относятся: все целые типы (byte, integer, и т. п.), char, boolean,перечисляемые типы и ограниченные типы. В качестве базового типа нельзя использоватьлишь сам ограниченный тип (трудно представить, как это можно сделать). С учетомэтого правила допустимы такие объявления типов:
type SmallLatin ='a'..'z'; {малые латинские буквы}
MyBoolean =True..False; {хотя это и бессмысленно}
Holidays = Sat..Sun; {выходные}
Нельзя в качествебазового типа употребить какой-либо вещественный тип, следующее объявлениеприведет к ошибке:
type Wrong =-1.25..1.25;
Заметим, что функции Ord,Succ и Pred могут применяться к любым порядковым типам, и, вчастности, к ограниченным.
Для вывода текста наэкран используются две процедуры:
1. OutText(s: string).Эта процедура выводит строку s начиная с текущей позиции, то есть левый верхнийугол выводимой строки находится в текущей позиции (по умолчанию это так). Текущаяпозиция задаётся, например, с помощью MoveTo.
2. OutTextXY(x,y: integer; s: string). Используется для вывода строки в конкретной позиции.
Если требуется вывестикакие либо числа, то предварительно требуется преобразовать их в строку,например, с помощью процедуры Str.
Пример:
var r:integer;
s: string;
Str(r,s);
OutTextXY(100,200,’Результат=’+s);
Турбо Паскаль позволяетиспользовать несколько различных шрифтов для вывода текста. Кроме того, можноменять направление вывода текста, а также размер символов. В этих целях используетсяпроцедура SetTextStyle(Font, Direction, CharSize: word). Перечислимвозможные константы и значения для параметров этой процедуры.
Font (шрифт):
DefaultFont (шрифт 8x8(по умолчанию)
TriplexFont (полужирныйшрифт);
SmallFont (тонкийшрифт);
SansSerifFont (шрифтбез засечек);
GothicFont (готическийшрифт);
Direction (ориентацияи направление вывода символов):
0 (привычный выводслева направо
1 (снизу вверх(надпись «положена на бок»)
2 (слева направо, но«лежачими» буквами.
Size (размер шрифта(целые числа от 0 до 10).
Другая возможность при работес текстом (это выравнивание его относительно задаваемых координат вывода. Дляэтого используется процедура SetTextJustify(horiz,wert: word). Horiz указыветкак текст расположен относительно заданной позиции по горизонтали, а vert(по вертикали. Возможные константы:
для horiz:
LeftText (указаннаяпозиция является левым краем строки);
CenterText (позицияявляется серединой выводимой строки);
RightText (правымкраем строки);
для vert:
BottomText (позициянаходится на нижнем крае изображения);
CenterText (по центру);
TopText (позицияявляется верхним краем изображения);
Процедура (последовательностьдействий (записанных на Паскале), названная каким-либо именем. Для того чтобы выполнить этупоследовательность, нужно в соответствующем месте программы указать её имя(так, например, для очистки экрана при работе с графикой мы указываем ClearDevice;).Кроме того, что программа становится при использовании процедур короче и понятнее,процедуры можно вызывать из разных мест программы (в противном случае пришлось быповторять в тексте программы одинаковые последовательности действий несколькораз).
Те действия, которыевходят в процедуру, записываются до начала основной программы в следующем виде:
program ...
const ...
type ...
var ...
procedureMyProc;
begin {действия}
end;
begin {основнаяпрограмма}
end.
Рассмотрим примернахождения максимума из трёх чисел:
ProgramMax1;
vara,b,c,m: integer;
begin
write('Введитеa: '); readln(a);
write('Введитеb: '); readln(b);
write('Введитеc: '); readln(c);
if a>bthen m:=a else m:=b;
if c>mthen m:=c;
writeln('Максимум= ',m);
readln;
end. {Перепишем его с использованиемпроцедуры:}
programMax2;
vara,b,c,m: integer;
procedureFindMax;
begin
if a>bthen m:=a else m:=b;
if c>mthen m:=c;
end;
begin
write('Введитеa: '); readln(a);
write('Введитеb: '); readln(b);
write('Введитеc: '); readln(c);
FindMax;
writeln('Максимум= ',m);
readln;
end.
Этот вариант можноулучшить. Пока наша процедура может искать минимум только среди значенийконкретных переменных a, b и c. Заставим её искать минимум средилюбых трёх целых чисел и помещать результат в нужную нам переменную, а невсегда в m. Чтобы была видна польза от такой процедуры, рассмотримпример программы для поиска максимума среди чисел a+b, b+c и a+c:
ProgramMax3;
vara,b,c,m: integer;
procedureFindMax(n1,n2,n3: integer; var max: integer);
begin
if n1>n2then max:=n1 else max:=n2;
ifn3>max then max:=n3;
end;
begin
write ('Введитеa: '); readln(a);
write ('Введитеb: '); readln(b);
write ('Введитеc: '); readln(c);
FindMax (a+b,b+c,a+c,m);
writeln ('Максимум из сумм = ',m);
readln;
end.
В скобках после именипроцедуры (в её описании) записаны так называемые параметры. Эта записьобозначает, что внутри процедуры можно использовать целые числа, обозначенные n1,n2 и n3, а также заносить значения в переменную типа integer,которая внутри процедуры называется max (а реально во время работыпрограммы все действия производятся над переменной m). Параметры, в которыххранятся числа (n1,n2,n3) называются параметрами-значениями; а те, которыеобозначают переменные (max) (параметрами-переменными, перед ними в описанииставится слово var. Параметры, на которые имеются ссылки внутри процедуры(n1, n2, n3, max), называются формальными, а те, которые реальноиспользуются при вызове (a+b, b+c, a+c, m) — фактическими.
Процедуры последнего видаоказываются достаточно удобными. Можно один раз написать такую процедуру, убедитьсяв её работоспособности и использовать в других программах. Примерами таких процедурявляются процедуры для работы со строками, встроенные в Турбо Паскаль.
В нашем примере можнопереписать программу и по-другому. Максимум из трёх чисел определяется по ним однозначно,или, говоря математическим языком, является функцией этих трёх чисел. Понятиефункции есть также и в Паскале. Рассмотрим такую программу:
ProgramMax4;
vara,b,c,m: integer;
functionMax(n1,n2,n3: integer): integer;
var m:integer;
begin
if n1>n2then m:=n1 else m:=n2;
if n3>mthen m:=n3;
Max:=m;
end;
begin
write ('Введитеa: '); readln(a);
write ('Введитеb: '); readln(b);
write ('Введитеc: '); readln(c);
writeln ('Максимум= ',Max(a+b,b+c,a+c));
readln;
end.
Нам уже известно каквызывать функцию из программы (например sqrt, sin и т. п.).Рассмотрим описание функции. Оно очень похоже на описание процедур, но есть дваотличия:
1. После имени функции исписка параметров (если есть) через двоеточиезаписывается тип значения функции(возможны не только числовые типы, но и логические, строковые, символьные);
2. Среди операторов втеле функции наиболее важными являются операторы присваивания значения функции(в нашем случае это строчка Max:=m;).
В записанной выше функциииспользуется так называемая локальная переменная m, то есть переменная,которая «видна» только нашей функции, а другие процедуры и функции, а такжеглавная программа её «не видят». Кроме локальных переменных в Турбо Паскалеможно определять локальные константы и типы.
Приведём другие примерыпроцедур и функций.
1. Напишем наПаскале функцию [pic].
functionCube(x: real): real;
begin
Cube:=x*x*x;
end;
2. Вычисление площади треугольникачерез длины сторон. Здесь будет
использована формулаГерона: [pic], где p (полупериметр треугольника,
a, b, c (длины сторон).
functionSquare(a,b,c: real): real;
var p:real;
begin
p:=(a+b+c)/2;
Square:=sqrt(p*(p-a)*(p-b)*(p-c));
end;
3. Процедура для решенияквадратного уравнения. Будем передавать этой процедуре коэффициенты уравнения,а результаты своей работы она будет выдавать в трёх параметрах-переменных.Через первую, логического типа, процедура сообщит, есть ли вещественные корни,а еще в двух она выдаст сами эти корни (если корней нет, то на эти двепеременные пользователь нашей процедуры может не обращать внимания).
ProcedureSqEquation(a,b,c: real; var RootsExist: boolean; var x1,x2: real);
var d:real;
begin
d:=sqr(b)-4*a*c;
if d>=0then begin
RootsExist:=true;
x1:=(-b+sqrt(d))/(2*a);
x2:=(-b-sqrt(d))/(2*a);
end
elseRootsExist:=false;
end;
Можно вместо процедуры написатьи функцию, по логическому значению которой мы определяем, есть ли корни, а самикорни передаются также как и в процедуре:
FunctionEqHasRoots(a,b,c: real; var x1,x2: real): boolean;
var d:real;
begin
d:=sqr(b)-4*a*c;
if d>=0then
begin
EqHasRoots:=true;
x1:=(-b+sqrt(d))/(2*a);
x2:=(-b-sqrt(d))/(2*a);
end
elseEqHasRoots:=false;
end;
Использовать такуюфункцию даже проще чем последнюю процедуру:
if EqHasRoots(1,2,1,r1,r2)then writeln(r1,' ',r2) else writeln('Неткорней').
ГЛАВА II. ПОСТАНОВЛЕНИЕ И РЕШЕНИЕ ЗАДАЧ МЕХАНИКИ В СРЕДЕСИСТЕМЫ ПАСКАЛЬ
Процесс решения задач накомпьютере – это совместная деятельность человека и ЭВМ. Этот процесс можно представитьвиде нескольких последовательных этапов. На долю человека приходятся этапы,связанные с творческой деятельностью – постановкой, алгоритмизацией, программированиемзадач анализом результатов, а на долю компьютера — этапы обработки информации ссоответствии с разработанным алгоритмом.
Первый этап – постановка задачи. На этом этапе участвуетчеловек, хорошо представляющий предметную область задачи. Он должен чётко определитьцель задачи, дать словесное описание содержания задачи и предложить общий подходк её решению. Для вычисления суммы двух целых чисел человек, знающий, какскладываются числа, может описать задачу следующим образом: ввести два целыхчисла, сложить их и вывести сумму в качестве результата решения задачи.
Второй этап – математическое и информационное моделирование.Цель этого этапа – создать такую математическую модель решаемой задачи, котораяможет быть реализована в компьютере. Существует целый ряд задач, гдематематическая постановка сводится к простому перечислению формул и логическихусловий. Этот этап тесно связан с первым этапом, и его можно отдельно не рассматривать,однако возможно, что для полученной модели известны несколько методов решения,и тогда предстоит выбрать лучший. Для вышеописанной задачи данный этап сведётсяк следующему: введённые в компьютер числа запомним в памяти под именами Аи В, затем вычислим значение этих чисел по формуле А+В, и результатзапомним в памяти под именем Summa.
Третий этап – алгоритмизация задачи. На основе математическогоописаниянеобходимо разработать алгоритм решения.
Четвёртый этап – программирование. Программой называетсяплан действий, подлежащий выполнению некоторым исполнителем, в качестве которогоможет выступать компьютер. Составление программы обеспечивает возможностьвыполнение алгоритма и соответственно поставленной задачи исполнителем –компьютером. Во многих задачах при программирование на алгоритмическом языкечасто пользуются заменой блока алгоритма на один или несколько операторов,введением новых блоков, замена одних блоков на другими.
Пятый этап – ввод программы и исходных данных вЭВМ. Программа и исходные данные вводятся в ЭВМ с клавиатуры с помощьюредакторов текстов, и для постоянного хранения осуществляется их запись на гибкийили жёсткий магнитный диск.
Шестой этап – тестирование и отладка программы. Наэтом этапе происходит исполнение алгоритма с помощью ЭВМ, поиск и исключение ошибок.При этом программисту приходится выполнять рутинную работу по проверке работы программы,поиску и исключению ошибок, и поэтому для сложных программ этот этап часто требует,гораздо больше времени и сил, чем написание первоначального текста программы.
Отладка программы –сложный и нестандартный процесс. Исходный план отладки заключается в том, чтобыоттестировать программу на контрольных примерах.
Контрольные примерыстремятся выбрать так, чтобы при работе с ними программа прошла все основныепути блок – схемы алгоритма, поскольку на каждом из путей могут быть свои ошибки,а детализация плана зависит от того, как поведёт себя программа на этих примерах:на одном может зациклиться (т.е. бесконечно повторять одно и то же действие);на другом – дать явно неверный или бессмысленный результат и т.д. Сложные программыотлаживаются отдельными фрагментами.
Для повышения качествавыполнения этого этапа используются специальные программы – отладчики, которыепозволяют исполнить программу «по шагам» с наблюдением за изменением значенийпеременных, выражений и других объектов программы, с отслеживанием выполняемыхоператоров.
Седьмой этап – исполнение отлаженной программы и анализрезультатов. На этом этапе программист запускает программу и задаёт исходные данные,требуемые по условию задачи.
Полученные в результате решениявыходные данные анализируются постановщиком задачи, и на основе этого анализа вырабатываютсясоответствующие решения, рекомендации, выводы. Например, если при решениезадачи на компьютере результат сложения двух чисел 2 и 3 будет 4, то следуетсделать вывод о том, что надо изменить алгоритм и программу.
Возможно, что по итогам анализарезультатов потребуется пересмотр самого подхода к решению задачи и возврат к первомуэтапу для повторного выполнения всех этапов с учётом приобретённого опыта. Такимобразом, в процессе создания программы некоторые этапы будут повторяться до техпор, пока мы получи алгоритм и программу, удовлетворяющие показанным выше свойствам.
2.1.ЗАДАЧИ СТАТИКИ, РЕШАЕМЫЕ С ПОМОЩЬЮ ЯЗЫКА ПАСКАЛЬ
Основнойзадачейстатики является изучение методов замены различных систем сил, действующих наабсолютно твердое тело, простейшими системами, оказывающими на тело такое же действие,как и исходная система.
Выяснение условийвзаимной уравновешенности системы сил является одной из основных задач статики.
На основе изложенной впервой главе курсовой работы алгоритм конструкции языка программированияПаскаль составим и решим ряд задач по прикладной механике.
Сформулируем задачу постатике первому разделу прикладной механики.
Задача. Найти центр тяжести тонкого круглогооднородного стержня изогнутого по дуге окружности. Размеры стержня указаны нарисунке.
Геометрическая модельрешения задачи по статике.
Решение:
Плоскость, вкоторой лежит окружность радиуса R, является плоскостью симметрии тела. Мы примемее за координатную плоскость хОу. Тогда будем иметь zc=0. Кроме того того, телоимеет ось симметрии, расположенную в плоскости и направленную по биссектрисе угла2α.
/>
Рис. 1. Геометрическаямодель тонкого круглого однородного стержня изогнутого по дуге окружности
Принимая эту ось ось за ось абсцисс, заключаем,что yc=0. Выбрав начало координат в центре окружностирадиуса R, вычислим абсциссу центра тяжести тела.
Выделим элементарный цилиндр с длиной образующей dl. Его объем равен
dv=πr2dl=πr2Rвφ,
а абсцисса его центра тяжести равна
x=Rcosφ
При решении задач наравновесие твердого тела при наличии сил трения следует выполнить:
1. Выделить твердое тело, равновесие которого надорассмотреть для отыскания неизвестных величин.
2. Изобразить активные силы.
3. Если твердое тело несвободно, то применив законосвобождаемости от связей, приложить к нему соответствующие реакции связей.
4. Рассмотреть равновесие данного несвободного твердоготела. как тела свободного, находящегося под действием активных сил и реакцийсвязей.
При этом следует реакциюшероховатой поверхности представить двумя составляющими – нормальной реакцией исилой трения, или же двумя составляющими – нормальной реакцией и силой трения,или же, не раскладывая эту реакцию на составляющие, направить ее под угломтрения к нормали к поверхности (при максимальной силе трения).
5. Сопоставить число неизвестных величин и число независимыхуравнений равновесия, которые должны быть равны для статически определимыхзадач; при этом к уравнениям равновесия твердого тела следует добавитьзависимость силы трения от нормального давления;
6. Выбрать систему координат.
7. Составить систему уравнений равновесия для сил,приложенных к твердому телу или к системе твердых тел.
8. Решив систему уравнений равновесия, определить искомыевеличины.
Таким образом, мы пришлик результату, выраженному формулой (2). Сопоставляя оба решения, мы видим, чтов первом случае мы применили общий метод составления уравнений равновесия длятвердого тела, находящегося под действием произвольной плоской системы сил, неучитывая особенностей данной задачи. Достоинство общих методов и заключается втом, что они ведут к цели, несмотря на различия в условиях задач.
Иногда такой путь неявляется самым простым и коротким. На примере второго способа решения мы видим,что при учете особенностей данной задачи удалось составить меньшее числоуравнений равновесия, которые проще и скорее привели к цели.
На основе разработанногоалгоритма решения задачи по статике составим Паскаль-программу.
ProgramStatika;
Var
x,y, a, Pmin, Pmax:Real;
R:Integer;
Begin
Writeln('vvediteves sterchnya');
Readln(dv);
Writeln('vveditedliny sterchnya');
Rreadln(dl);
Writeln('vvediteugol');
Readln(φ); {φ=60}
Pmin:=(R*(((cos(φ)*3.14/180)/cos(φ)*3.14/180)+y));{minimalnaya velichina gruza}
Pmax:=(R*(((cos(a)*3.14/180)/cos(φ)*3.14/180)-y));{maximalnaya velichina gruza}
{pricos(φ)
Begin
Ifxmax
Ifxmax>0 then x:=Pmin-xmax;
End;
Writeln('xmin=',xmin:8:6);
Writeln('xmax=',xmax:8:6);
Writeln('x=',x:8:6);
Readln;
End.
2.2.ЗАДАЧИ КИНЕМАТИКИ, РЕШАЕМЫЕ ПОСРЕДСТВОМ ЯЗЫКА ПАСКАЛЬ
Скорости точек плоскойфигуры могут быть определены аналитическими, графическими или жеграфоаналитическими методами.
Аналитический метод. При аналитическом методе должны бытьзаданы уравнения движения плоской фигуры (рис.2)
Хo1=f 1(t), Yо1=f 2(t), φ = f3(t). (1*)
Проекции скорости точки Мна неподвижные оси координат определяется равенствами:
Vx=Vо1Х-W z(Y-Yo1) (2*)
Vy=Vо1Y + Wz(Х-Хo1) (3*)
В этих формулах Vx , Vy – искомые проекции скорости точки М на неподвижныеоси координат; Vо1x = Хo1, Vо1y = Yo1-проекции скорости полюса, начала подвижной системыкоординат ХY на неподвижные оси координат; Wz =φ -проекция угловой скорости на ось Z, перпендикулярную к плоскости движения; ХУ координаты точки М в неподвижнойсистеме координат; Хо1,Yо1 – координаты полюса О1 в неподвижной системе осей. Определение координат Х,Y точки М, по заданным уравнениям движения плоской фигуры (1*)производится по формулам:
Х=Хо1+Х1cosφ – Y1sin φ
Y= Yо1+ Х1sin φ+Y1cos φ
Проекции скорости точки Мна неподвижные оси координат находятся по формулам:
Vx1=Vo1x cos φ + Vo1у sin φ – Wzy1(4*)
Vу 1= -Vo1x sin φ + Vo1у сos φ – Wz х1(5*)
В этих формулах Vx,Vу — искомые проекции скорости точки М на оси х, у подвижной системыкоординат, жестко связанной с плоской фигурой; х у – координаты точки М вподвижной системе осей, остальные величины имеют то же значение, что и вуравнениях (2*), (3*).
Величины скорости точки Мпо известным проекциям определяются формулой:
V= √Vx 2+ Vу2 =√Vx12+ Vу12 (6*)
Направляющие косинусыдаются равенствами:
cos (V,X)=Vx/V, cos (V,У)= Vy/V (7*)
cos (V,X)=Vx/V, cos (V,У)= Vy/V (8*)
Графоаналитическиеметоды. Первыйграфоаналитический способ определения скоростей точек плоской фигуры основан наформуле распределения скоростей (рис.2).
/>
Рис. 2. Геометрическая модель плоской фигуры
V=Vo1+W r, (9*)
в этой формуле
V – искомая скорости точки М;
Vo1 — скорость полюса О,
W — угловая скорость плоской фигуры;
r — радиус-вектор, проведенный изполюса О в Рис. 3 точку М.
Таким образом, знаяскорость какой-либо точки плоской фигуры, выбираем эту точку за полюс. Далееоткладываем от точки М, скорость которой подлежит определению, вектор, равныйскорости полюса, и вектор W r1, направлен перпендикулярно к r1, и равный по величине W r1.Векторная сумма этих слагаемых и дает искомуюскорость точки М, Если скорость точки М известна по направлению, то можно незнать величины вращательной скоростиW r1, так как и эта скорость, и искомая скорость точки Мопределяется пересечением прямой, совпадающей с направлением скорости точки М,и прямой, перпендикулярной к линии О М, проведенной из конца вектора Vо,отложенного из точки М.
После того, кактреугольник или параллелограмм скоростей выражающий равенство (9*), построен,задача может считаться решенной. Величина и направление скорости точки М могутбыть найдены по рис.(2) или получены из решения этого треугольника.
Формула распределенияскоростей (9*)записывается часто в виде:
Vb=Va+Vba (9**)
где V-искомаяскорость точки В, Va-известная скорость точки А, избранной за полюс, а
Vba= W АВ, Vba = W AB, (9***)
— вращательная скоростьточки В вокруг точки А, равная по модулю, произведению мгновеннойугловой скорости плоской фигуры на расстояние от точки до полюса и направленнаяперпендикулярно к отрезку прямой ВА в сторону мгновенного вращенияфигуры.
Многие задачи могут бытьрешены при помощи теоремы о равенстве проекции скоростей концов отрезка плоскойфигуры на направление отрезка.
Второй графоаналитическийметод определения скоростей плоской фигуры основан на использовании мгновенногоцентра скоростей этой фигуры. При не поступательном движении плоской фигуры (W=0)в каждый данный момент существует точка тела, скорость которой равна нулю. Этаточка называется мгновенным центром скоростей и обычно обозначается через P.Единственным исключением является случай так называемого мгновеннопоступательного движения (W=0), который будет рассмотрен отдельно.Выбирая мгновенный центр за полюс, имеем закон распределения скоростей вплоской фигуре.
V=W r 1, V=W М Р, (10*)
где V-искомая,скорость произвольной точки М; W-угловая скорость плоской фигуры, r1-радиус-вектор, проведенный из мгновенного центраскоростей в точку М, называемый мгновенным радиусом. Таким образом, скоростивсех точек плоской фигуры являются в данный момент вращательными скоростямивокруг мгновенного центра скоростей. Их величина равна произведению величинугловой скорости на модуль мгновенного радиуса, а направлены ониперпендикулярно к мгновенному радиусу. Таким образом, величина скоростей точкиплоской фигуры пропорциональны величине мгновенных радиусов:
Vb / ВР=Va / АР=...=W, (11*)
При графоаналитическихметодах решения задач рекомендуется такая последовательность действий:
1) Выбрать заполюс ту точку плоской фигуры, направление скорости которой известно;
2) найти другуюточку плоской фигуры, направление скорости которой известно;
1) пользуясьформулой распределения скоростей, найти скорость этой точки плоской фигуры;
2) исходя из формулыраспределения скоростей определить значение угловой скорости плоской фигуры вданный момент времени;
3) зная угловуюскорость фигуры и скорость полюса, найти с помощью формулы распределенияскоростей искомые скорости других точек фигуры.
При графоаналитическомметоде решения задач может быть применен метод проекции. В этом случае можетбыть рекомендован следующий порядок решения задач:
1. Выбрать заполюс точку плоской фигуры, скорость которой известна;
2. Пользуясьформулой распределения скоростей, построить скорость другой точки плоскойфигуры, у которой известно направление ее скорости;
3.Спроектировать полученный треугольник скоростей на направление прямой,соединяющей обе точки, и найти скорость второй точки;
4.Спроектировать треугольник скоростей на направление, перпендикулярное к прямой,соединяющей обе точки, и найти вращательную скорость второй точки по отношениюк полюсу;
5. Разделиввращательную скорость на расстояние от точки до полюса, найти мгновеннуюугловую скорость плоской фигуры;
6. Знаямгновенную угловую скорость фигуры, можно найти скорости любых точек плоскойфигуры, пользуясь формулой распределения скоростей.
Если задача решается припомощи мгновенного центра скоростей, рекомендуется такая последовательность:
1) определитьположение мгновенного центра плоской фигуры;
2) найти величинумгновенного радиуса той точки плоской фигуры, скорость которой известна иопределить угловую скорость плоской фигуры, разделив величину скорости точки навеличину мгновенного радиуса;
3) найти искомые величины скоростейточек плоской фигуры, умножая угловую скорость на мгновенный радиуссоответствующей точки или используя.
Теперь рассмотримконкретную задачу по кинематике.
Задача. Для преобразования периодического возвратно-поступательногодвижения во вращательное движение в двигателях внутреннего сгорания применяют шатунно-кривошипный механизм,состоящий из кривошипа ОА=r, вращающегося вокруг неподвижной точки О в плоскости рисунка,шатуна АВ=l, шарнирносоединенного с кривошипом, и поршня В, двигающегося по горизонтальнымнаправляющим цилиндра, совпадающим с прямой ОВ.
/>
Рис.3. Геометрическая модель плоского шатунно-кривошипного механизма
На основе разработанногоалгоритма решения задачи по кинематике составим Паскаль – программу.
ProgramKinematika;
Vart,f0,k,b1,b2,x1,x2,a,b,l,d,f1,f2,a1,a2,w1,w:real;
Begin
Write('vveditewelichini a b d l w t = ');
Readln(a,b,d,l,w,t);
x1:=(sqr(d+b)-a*a+l*l)/(2*l*(d+b));
f1:=(180/pi)*arctan(sqrt(1-sqr(x1))/x1);
x2:=(sqr(d+b)-a*a-l*l)/(2*l*a);
a1:=(180/pi)*arctan(sqrt(1-sqr(x2))/x2);
x1:=-(l*l+sqr(d-b)-a*a)/(2*l*(d-b));
f2:=(180/pi)*arctan(sqrt(1-sqr(x1))/x1);
x2:=(l*l-sqr(d-b)+a*a)/(2*l*a);
a2:=(180/pi)*arctan(sqrt(1-sqr(x2))/x2);
f0:=w*t;
k:=sqrt(l*l+b*b-2*l*b*cos(f0));
x1:=(k*k+d*d-a*a)/(2*k*d);
b2:=arctan(sqrt(1-sqr(x1))/x1);
x2:=(1/k)*sin(f0);
b1:=arctan(x2/sqrt(1-sqr(x2)));
w1:=(b*k*sin(b1+b2)*w)/(a*a*sin(b2));
Writeln('a1=', a1:6:3,' a2= ',a2:6:3);
Writeln('f1=', f1:6:3,' f2= ',f2:6:3);
Writeln('w1=',w1:6:3);
Readln;
End.
2.3.ЗАДАЧИ ДИНАМИКИ,РЕШАЕМЫЕ В СРЕДЕ СИСТЕМЫ ПАСКАЛЬ
Теорема о движении центрамасс системы материальных точек.
В случае сохраненияскорости центра масс. Теорема о движении центра масс системы материальныхточек. Зависимость между скоростью центра масс и скоростями точек материальнойсистемы имеет вид:
Vс=(∑mk*Vk)/M, т.е.
xc=(∑mk*xk)/M,yc=(∑mk*yk)/M, zc=(∑mk*zk)/M(1*)
Здесь
Vс=xc*i+yc*j+zc*k
Зависимость междуускорением центра масс и с ускорениями точек материальной системы выражаетсясоотношением
Wс=(∑mk*Wk)/M,т.е.
xc=(∑mk*xk)/M,yc=(∑mk*yk)/M, zc=(∑mk*zk)/M,(2*)
Здесь
Wс=xc*i+yc*j+zc*k
Напомним формулировкутеоремы о движении центра масс: центр масс системы материальных точек движетсякак материальная точка, масса которой равна массе материальной системы и ккоторой приложены все внешние силы, действующие на систему: M*Wc=∑Fk.
Та же теорема, записаннаяв проекциях на оси декартовых координат имеет вид:
Mxc=∑Fkx,Myc=∑Fky, Mzc=∑Fkz, (3*)
Движение центра масссистемы материальных точек зависит от внешних сил, приложенных к даннойсистеме. Внутренние силы, которые отсутствуют в формулировке теоремы,непосредственно на движение центра инерции системы не влияют. Этообстоятельство значительно облегчает решение задач, так как внутренние силысистемы большей частью бывают неизвестны.
Задачи динамикипоступательного движения твердого тела решаются посредством теоремы о движениицентра масс системы материальных точек.
Действительно, применивэту теорему, мы определим уравнение траектории, скорость и ускорение центратяжести твердого тела. При поступательном движении твердого тела траекториивсех точек одинаковы, а скорости и ускорения их соответственно равны.
С помощью теоремы одвижении центра масс можно решать прямые и обратные задачи динамики.Последовательность решения задач:
1. Изобразить нарисунке все внешние силы системы;
2. Выбрать системуосей координат;
3. Записать теоремуо движении центра масс (3*) в проекциях на декартовы оси координат;
4. Вычислить суммыпроекций всех внешних сил системы на оси декартовых координат и подставить их в(3*);
5. В зависимости отусловия решать прямую, либо обратную задачи динамики.
В некоторых прямыхзадачах бывают заданы все внешние силы, корме одной, массы всех материальныхточек системы и законы их движения. Тогда после выполнения первых четырехпунктов для вычисления левых частей уравнения (3*) надо воспользоватьсявспомогательными формулами
Mxc=∑mkxk,Myc=∑mkyk, Mzc=∑mkzk(4*)
где mk – массаk-ой точки, а xk, yk, zk – уравнения еедвижения, ввести эти результаты в (3*) и определить неизвестную силу.
В некоторых обратныхзадачах бывают заданы все внешние силы, массы всех точек системы и законыдвижения всех точек, кроме одной и требуется определить движение этой точки.Тогда, после выполнения первых четырех пунктов также следует воспользоватьсяформулами (4*), полученные результаты ввести в левые части уравнений (3*) изатем найти искомый закон движения точки.
Если в состав системывходят тела с непрерывным распределением масс, то следует записать координаты xk,yk, zk центров тяжести этих тел и затемвоспользоваться формулами (4*).
Задача. Эпициклический механизм,расположенный в вертикальной плоскости, установлен на горизонтальной идеальногладкой плоскости и прикреплен к ней болтами K и L. Зубчатоеколесо 1 радиуса r1 неподвижно. С2– центртяжести зубчатого колеса 2 весом Р2и радиусомr2. С1 – центр тяжести станины А иколеса 1, общий вес которых равен Р1. Массой кривошипаС1С2, вращающегося с постоянной угловой скоростью w,пренебречь. В начальный момент кривошип занимал правое горизонтальноеположение. Определить:
1) нормальноедавление механизма на плоскость,
2) угловую скорость wвращения кривошипа, при которой механизм в условиях отсутствия болтов начнетподпрыгивать над горизонтальной плоскостью,
3) наибольшеегоризонтальное усилие, действующее на болты,
движение центра тяжести С1станины механизма после среза болтов K и L.
/>
Рис. 4. Геометрическаямодель наклонной плоскости.
Решение. Материальнаясистема состоит из двух масс: неподвижного колеса 1 со станиной и подвижногоколеса 2. Изобразим внешние силы этой системы: Р1 – вес станины инеподвижного колеса 1, Р2 – вес подвижного колеса 2, Ry– суммарная нормальная реакция плоскости,Rx – суммарнаятангенциальная реакция болтов K и L. Направим ось Oy по вертикали через точку С1,ось x – вдоль горизонтальной плоскости направо.
Запишем теорему одвижении центра масс системы в проекциях на оси x и y:
Mxc=∑Fkx,Myc=∑Fky, Mzc=∑Fkz
В данной задаче
∑Fkx=Rx, ∑Fky=Ry-P1-P2, Rx= Mxc, (1)
Ry= Myc+P1+P2 (2)
Для определения сил Rxи Ry остается подсчитатьMxcи Myc. Вычисление Mxcи Mycведется по формулам:
Mxc=∑mkxk,Myc=∑mkyk.
В данном случае
Mxc= m1x1+m2 x2 и Myc= m1 y1+m2y2, (3).
Где x1и y1– координаты центра тяжести С1 станинымеханизма и неподвижного колеса 1, x2 и y2– координаты центра тяжести С2 подвижного колеса 2.
Как видно из рис., x1=0,y1=ОС1 – постоянная, x1=C1 C2cosw t=(r1+r2) cos w t (угол поворота кривошипаС1С2 равен φ=wt, так как по условию wпостоянна), y2=ОС1+С1С2 sinwt=ОС1+(r1+r2) sinw t.
Вычислив вторыепроизводные x1, y1, x2, y2по времениt находим x1=0 y1=0, x2=-(r1+r2)w2 cosw t, y2=-(r1+r2) w2 sinwt.
Внеся эти значения вформулы (3), получим:
Mxc= -m2 ( r1+ r2)w2соswt, (4)
Myc= -m2( r1+r2 )w2sinwt (5)
После подстановки (4) в (1) и (5) в (2) находим:
Rx= -P2 /g *( r1+r2 )w2соs wt (6)
Ry= P1+ P2 — P2/g*( r1+ r2 )w2sinwt (7)
Давление механизмана горизонтальную плоскость направлено противоположно реакции Ry и по модулю равно ей:
Ny=P1+P2 -P2 /g *( r1+r2 ) w2sin wt
Наибольшеедавление:
Nymax= P1+ P2+ P2/g* (r1+ r2 ) w2
Наименьшеедавление:
Nymin= Р1 + P2 — P2 /g* ( r1+r2 ) w2
В условияхотсутствия болтов механизм может начать подпрыгивать над горизонтальнойплоскостью. Это будет иметь место при RyminР1+P2-P2/g* (r1 + r2) w2w вращения кривошипа C1C2, при которой происходитподпрыгивание механизма, должна удовлетворять неравенству
w > √g*(P1+P2)/ P2(r1+r2).
Горизонтальноедавление, действующее на болты, направлено противоположно Rх(см.формулу (6)), причем
Nx=P2/g*(r1+ r2)w2 coswt.
Наибольшее давление равно
Nxmax=P2/g*(r1+ r2)w2
Допустим, чтопод действием, силы Nxпроизошел срез болтов.
Тогда весь механизм начнет двигаться по идеально гладкой горизонтальной плоскости.
На рис. бизображен механизм в положении, когда точка С1сместилась соси у направо на х1. Так как станина механизманаходится в движении относительно оси х, то х1являетсяфункцией времени t.
Из чертежа видно, что вданном случае
х2=х1 + С1С2coswt= х1+ (r1+ r2) coswt.
Следовательно,
Mxc=т1х1+т2x2 = (m1+m2)x1– m2(r1+ r2) w2coswt (8)
Теорема о движении центра масс системы материальных точек впроекции на ось х имеет вид
Мхс= ∑Fekx
Так как после среза болтов реакция Rxотсутствует, а внешние силы Р1Р2и Rуперпендикулярны к оси х, то ∑Fkx= 0 и Мхс= 0. Подставив в это уравнение значение Mxсиз формулы (8), получим
(т1 +m2) х1-m2(r1+ r2) w2coswt=0,
т. е.
x1 = Р2/(Р1+Р2)*(r1 + r2) w2cos wt, (9)
Это — дифференциальное уравнение движения центра тяжести С1станинымеханизма по идеально гладкой горизонтальной плоскости приотсутствии болтов. Для интегрирования уравнения (9) должны бытьизвестны начальные условия движения точки С1. Так как вмомент среза болтов точка C1находилась на оси у и была в покое, то начальные условия движения записываютсяв виде:
при t= 0x1 =0 и y1= 0.
Проинтегрировавдифференциальное уравнение (9), получим:
x1= Р2/Р1+Р2*(r1 + r2) w sinwt + D1
После подстановки начального условия движения t = 0 и x1= 0 имеетD1= 0, т.е
x1= Р2/Р1+Р2*(r1 + r2) w sinwt
Вторично проинтегрировав, находим х1 = — Р2/Р1+Р2 *(г1+ r2) cos wt +D2.Использовав то, что при t=0, х1=0,имеем:
D2 = Р2/Р1+Р2*(r1+ r2)
т.е. x1 = Р2 / Р1+Р2*(r1+ r2 )(1-coswt).
Итак, центр тяжести С1 станины механизма в случае отсутствияболтов совершает гармонические колебания с амплитудой Р2/Р1+Р2*(r1+ r2) икруговой частотой, равной угловой скорости w вращения кривошипа С1С2.
Эту задачу можно решить также с помощью уравнения динамики переносного движения. Какизвестно, переносное поступательное движениесистемы происходит как движение абсолютное под действием всех внешних сил системы и сил инерции масс в ихотносительном движении, т.е.
Mwe=∑Fk+∑Jrk,
где Fk— внешниесилы, a Jrk— силы инерции в относительномдвижении.
В проекциях на осидекартовых координат имеем:
Мхе=∑ Fkxe+ ∑JrkxМуе= ∑Fkye+ ∑Jrky,
k=1
Мzе= ∑Fkze+ ∑Jrkz
k=1
В данной задаче колесо 2, участвуя в переносном поступательном движениивместе с колесом 1 и станиной, совершает относительное вращательноедвижение вокруг оси, проходящей через центр тяжести С1колеса 1и станины перпендикулярно к плоскости ху.
Изобразив все внешние силы системы Р1, Р2,Rxи Ry (см. рис. в), добавляемцентробежную силу инерции в относительном движении
Jrn = -Р2/g*wrn. Так как точка С2 вотносительном движении описывает окружность с центром С1радиуса С1С2 = r1+ r2,то, центростремительное ускорение wrn, направленоот С2 к С1 и, следовательно, центробежная сила инерции вотносительном движении Jrnнаправленапротивоположно. По модулю
Jrn= -Р2/g*wrn= Р2 /g*(r1+ r2)w2
Вращательная сила инерции в относительном движении Jrτ= -Р2 /g*wrτравна нулю, так как кривошип вращается равномерно. Применивдифференциальные уравнения переносного поступательного движенияматериальной системы в проекциях на оси х и у:
Мхе=∑ Fkxe+ ∑Jrkx, Муе= ∑Fkye+ ∑Jrky,
k=1 k=1 k=1 k=1
получим
Mxe=Rx+Jrncoswt, Mye=Re— P1— P2+Jrnsinwt,
Так как хe = х1 ,ye=y1 ,Jrn =P2/g*(r1+r2) w2,то
Мх1=Rx+P2/g(r1+r2)w2coswt, (10)
My1=Ry-P1 — Р2+P2/g (r1 + r2)w2 sinwt. (11)
В случае механизма,закрепленного болтами, центр тяжести С1колеса 1 истанины неподвижен, т. е. х1=у1=0, и дифференциальные уравнения принимают вид
Rx+P2/g(r1+r2)w2coswt=0, (12)
Ry--P1 — Рг+P2/g (r1 + r2)w2 sinwt ,(13)
откуда вытекает, чтопроекция нормальной реакции плоскости равна
Ry = P1 — Рг+P2/g (r1 + r2) w2 sinwt. (14)
Проекция на осьх горизонтальнойсилы реакции болтов равна
Rx=P2 / g (r1+r2 )w2coswt. (15)
Условие подпрыгиванияопределяем из (14), считая Rу min отрицательным. Так как
Rymin= P1 + Рг — P2 /g*(r1+ r2) w2, а Rymin
P1 +Р2-P2 /g*(r1+ r2) w2
откудаw>√g*(P1+P2)/(P2(r1+r2 ))
Для определения закона движения центра тяжести CLколеса1 истанины механизма после среза болтов надо вформуле (10) положить Rx= 0.Тогда
Мх1 = P2/g*(r1+ r2) w2coswt ,
Т.е. приходим к уравнению(9):
x1=P2/(P1+ P2 )*(r1 + r2 ) w2coswt ,
решениекоторого было получено выше.
На основе разработанногоалгоритма решения задачи по кинематике составим Паскаль – программу.
ProgramDINAMIKA;
Var
w,r1,r2,P1,P2,t,NxMax,Ny,x1:Real;
Const
g=9.8;
Begin
Writeln('vvedite radius r1');
Readln(r1);
Writeln('vvedite radius r2');
Readln(r2);
Writeln('vvedite ves P1');
Readln(P1);
Writeln('vvedite ves P2');
Readln(P2);
Writeln('vvedite vremya');
Readln(t);
w:=sqrt((g*(P1+P2))/(P2*(r1+r2)));
Ny:=P1+P2-(P2/g)*(r1+r2)*w*w*cos(w)*t;
NxMax:=P2/g*(r1+r2)*w*w;
x1:=P2/P1+P2*(r1+r2)*(1-cos(w)*t);
Writeln('w:=',w);
Writeln('Ny:=',Ny:8:6);
Writeln('NxMax:=',NxMax:8:6);
Writeln('x1:=',x1:8:6);
Readln;
End.
ЗАКЛЮЧЕНИЕ
Цельюкурсовойработы являлась изучение полного спектра функциональных возможностей языкапрограммирования Паскаль для решения задач прикладной механики.
Задачамиданнойработы являлись:
1. Освоение полногоспектра функциональных возможностей языка программирования Паскаль;
2. Постановка ирешение задач прикладной механики традиционным способом;
3. Решение задачмеханики в среде языка программирования Паскаль.
Методами работыпривыполнении поставленных задач:
1. Теоретическийанализ научно-технической литературы по языку программирования Паскаль;
2. Математическоемоделирование задач прикладной механики;
3. Компьютерноерешение задач прикладной механики.
Наоснове проведенного курсового исследования на тему «Приложения технологии языкапрограммирования паскаль в прикладной механике» можно сформулировать следующиевыводы:
1.Язык программирования высокого уровня Паскаль обладает широким спектромлогических конструкций и функций, необходимых для успешного решения задачприкладной механики.
2.Информационное моделирование механических явлений средствами логики и высшейматематики позволяет достаточно быстро перевести решение задач прикладноймеханики на уровень компьютерных вычислений посредством языка программированияПаскаль.
ЛИТЕРАТУРА
1. Бать М.И., Джанелидзе Г., Кельзон А.С.Теоретическая механика в примерах и задачах. Т.1. М.: Просвещение, 2000.
2. Бать М.И., Джанелидзе Г., Кельзон А.С.Теоретическая механика в примерах и задачах. Т.2. М.: Просвещение, 2000.
3. Бочкин А. И. Методика преподаванияинформатики. — Минск: Высшая школа, 1998.
4. Блашкин И.И., Буров А.А.Новые возможности Turbo-Pascal 6.0. — Спб.: Изд-во «Макет», 1992.
5. Бородич Ю.С. и др. Паскаль дляперсональных компьютеров: Справ. пособие/ Ю.С.Бородич, А.Н.Вальвачев,А.И.Кузьмич. — Мн.: Выш. шк.: БФ ГИТМП «НИКА», 1991.
6. Васильев П.П. Турбо Паскаль — мойдруг: М.: Компьютер, ЮНИТИ, 1995.
7. Великов В.П., Новая информатика вшколе // Информатика и образование. – 1986. — №1.
8. Вычислительнаятехника и программирование. Под редакцией А. В. Петрова М., Высшаяшкола, 1990.
9. Голубева О.В. Теоретическая механика.Изд-во «Высшая школа». М.: 1968.
10. Донцов Д.А. Самые нужные программыдля Windows. Популярный самоучитель.- Спб.: Питер, 2006.
11. Джордейн Р. Справочникпрограммиста персональных компьютеров типа IBM PC, XT, AT: Пер. с англ./Предисл. Н.В.Гайского. — М.: Финансы и статистика, 1991.
12. Зозуля Ю. Компьютер на100 % — Спб.: Питер, 2006.
13. Зуев Е.А. Язык программированияTurbo Pascal 6.0. — М.: Унитех, 1992.
14. Информатика.Базовый курс: Учеб. пособ. для студентов технических вузов / С.В. Симонович,Г. Евсеев, В. И. Мухаровский и др.; под ред. Симоновича – Спб.: Питер,2005.
15. Информатика:Учеб. пособ. для пед. спец. вузов /А.Р. Есаян, В.И. Ефимов, Л.П. Липецкая идр. — М.: Просвещение, 1991.
16. Лапчик М. П. Методика преподаванияинформатики. М.: Посвещение, 2001.
17. Левин А. Самоучительполезных программ 3-е изд.- Спб.: Питер, 2003.Турбо Паскаль 7.0 — К.:Издательская группа BHV, 1998.
18. Марченко А. И., Марченко Л. И.Программирование в среде Turbo-Pascal 7.0-М., Бином Универсал, К.: Юниор, 1997.
19. Мизрохи А.М. Turbo Pascal иобъектно-ориентированное программирование. — М.: Финансы и статистика, 1992.
20. Немнюгин С.А. Turbo Pascal.Программирование на языке высокого уровня. Учебник для вузов. 2-е изд.- Спб.:Питер, 2005.
21. Рывкин К.А. Справочник школьникапо информатике. 7-11 кл. — М.: ООО Изд. дом «Оникс 21 век », 2005.
22. Справочникпо процедурам и функциям Borland Pascal with Objects 7.0. — Киев: «Диалектика»,1993.
23. Фарафонов В.В. Турбо Паскаль7.0. Начальный курс: учеб. пособие. — М.: Кнорус, 2006.
24. Фёдоров А. Особенностипрограммирования на Borland Pascal. — Киев: «Диалектика», 1994.
25. Хершель Р. Турбо Паскаль/ 2-еизд., перераб. — Вологда: МП «МИК», 1991.
26. POWERTOOLS PLUS. Процедуры поддержки для Turbo Pascal 4.0.: Справочное руководствопользователя. Техническая документация.