Писок используемых источников

ведение

1: Сейчас признанными лидерами в области профессионального программирования стали Си-подобные языки. В течение долгого периода Паскаль был, пожалуй, почти единственной альтернативой им в качестве универсального языка. Однако когда труд большинства профессиональных программистов стал практически сводиться лишь к манипуляциям с вызовами более или менее стандартного API-инструментария (Application Programming Interface - интерфейс прикладного программирования), остро встал вопрос выбора единственного языка программирования, на котором (и для которого) будет писаться этот API. Вследствие различных причин - как объективных, так и субъективных - выбор пал на Си/Си++. Во-первых, Си, как и Паскаль, оказался одним из первых языков высокого уровня (ЯВУ), разрешившим проблему : его компилятор был написан на нем же. Во-вторых, компиляторы для Си делать, пожалуй, легче, чем для любого другого языка (что, собственно, и было одной из целей его разработки), поэтому именно их выпуск экономически наиболее целесообразен. Впрочем, не обошлось и без субъективных факторов: значительную долю сегодняшнего API производит фирма Microsoft, уже давно разграничившая с фирмой Borland в этой области. Сейчас Borland не выпускает компиляторы для Бейсика и Фортрана, а Microsoft - для Паскаля, и, естественно, не ориентирует свои API на те языки, компиляторы которых сама не выпускает. Поэтому лидерство Си в области профессионального программирования обусловлено в основном тем, что только на нем можно использовать новый API-интерфейс сразу же после его выхода, тогда как программистам, работающим на других языках, приходится либо ждать, когда появятся нужные интерфейсные модули, либо самостоятельно их писать.

2: Цель работы: разработка алгоритма решения задач согласно выданному заданию

3: Turbo Pascal— это среда разработки для языка программирования Паскаль. Используемый в Turbo Pascal диалект базировался на более раннем UCSD Pascal, получившем распространение, в первую очередь, на компьютерах серии Apple II. Компилирующая компонента Turbo Pascal была основана на компиляторе Blue Label Pascal, первоначально созданном в1981 году Андерсом Хейлсбергом для операционной системы NasSys микрокомпьютера Nascom. Позднее он был переписан как Compass Pascal для операционной системы CP/M, затем как Turbo Pascal для DOS и CP/M. Одна из версий Turbo Pascal была доступна под Apple Macintosh примерно с 1986 года, но её разработка прекратилась примерно в 1992 году. В 1982 году Филипп Кан приобрёл компилятор у Андерса Хейлсберга и перебрался из Парижа в Калифорнию, где основал компанию Borland. Когда в 1983 году появилась первая версия Turbo Pascal, такой тип среды разработки был относительно новым. Во время дебюта на американском рынке Turbo Pascal продавался по цене в $49,99. Помимо привлекательной цены, встроенный компилятор Паскаля также был очень высокого качества. Приставка «Turbo» намекала как на скорость компиляции, так и на скорость производимого им исполняемого кода. Turbo Pascal создавал машинный код за один проход, без шага компоновки.После рекламной кампании за первый месяц поступило заказов на 150 тыс. долларов — так много, что местные банки отказывались оплачивать чеки и кредитные карточки, подозревая мошенничество. За первые два года было продано не менее 300 тысяч копий компилятора, что превзошло объём продаж всех прочих языков для микрокомпьютеров. Для того времени это была потрясающая среда разработки. Она была проста и интуитивно понятна, с хорошо организованным меню. Ранние версии использовали раскладку горячих клавиш WordStar. В более поздних версиях появилась возможность быстро получить определение ключевого слова языка, просто поставив курсор на ключевое слово и нажав клавишу справки. Справочные статьи часто включали примеры кода, использующего данное ключевое слово. Это позволяло неопытным программистам изучать Паскаль даже без помощи книг, используя лишь среду разработки. В поставку входило большое количество исходных текстов демонстрационных и прикладных программ. В их числе были даже шахматы. Среда позволяла легко встраивать в код на Паскале вставки на языке ассемблера. Пользователь имел возможность проходить программу шаг за шагом; при переходе на ассемблерный блок это также работало. В любой момент пользователь мог добавить переменную или регистр в удобно расположенное окно для наблюдения за ними. При построчной отладке программ, использующих графические режимы IBM PC, происходило корректное переключение между графическим режимом программы и текстовым режимом среды разработки. Помимо всего этого, имелось средство профилирования. Книги, включённые в поставку Borland Pascal, давали детальное описание языка ассемблера Intel вплоть до указания количества тактовых циклов, необходимых для выполнения каждой инструкции. В общем и целом, система давала превосходные возможности для оптимизации кода; пользователю не требовалось пользоваться чем-либо, кроме среды разработки. Всё было сделано так идеально, что даже школьник мог этим пользоваться. Эти качества позволили версии Паскаля от Borland стать стандартом языка Паскаль де-факто. С начала 1990-х TP/BP используется в университетах для изучения фундаментальных концепций программирования. Вероятно, разработка Microsoft Pascal была прекращена из-за конкуренции с высоким качеством и небольшой ценой Turbo Pascal. Другая версия гласит, что Borland заключил соглашение с Microsoft на прекращение разработки Turbo Basic(среды разработки для BASIC, ответвившейся от Turbo Pascal), если Microsoft прекратит разработку Microsoft Pascal. Некоторое время Microsoft выпускал QuickPascal, который был почти 100%-совместим с Turbo Pascal. В течение нескольких лет Borland улучшал не только среду разработки, но и язык. В версии 5.5 в него были введены передовые возможности объектно-ориентированного программирования. Последней выпущенной версией была версия 7. Borland Pascal 7 включал в себя среду разработки и компиляторы для создания программ под DOS, под DOS с расширителем DOS и Windows 3.x, в то время как Turbo Pascal 7 мог создавать только обычные DOS-программы.

бщая часть.

В первой задачи я использовал массивы и матрицы, функции, операторы. Массив – это набор однородных элементов, к которым можно обратиться по их порядковому номеру. Массив можно выразить в виде таблички. Одномерный массив – это “вырожденная” табличка, состоящая из одной строчки или столбца: [1,1,2,3,5,8] Двумерный массив – это одна обычная таблица (например, Пифагора). Ма́трица — математический объект, записываемый в виде прямоугольной таблицы элементов, которая представляет собой совокупность строк и столбцов, на пересечении которых находятся её элементы. Функция – это часть программы, которая вычисляет и возвращает значение. Составной оператор - объединение нескольких операторов в одну группу. Группа операторов внутри составного оператора заключается в операторные скобки (begin-end).

Во второй задачи использовал записи, массивы, процедуры, операторы. Запись - содержит несколько компонентов, или полей, которые могут иметь различные типы. Описание записи в языке Паскаль осуществляется с помощью служебного слова Record, вслед за которым описываются компоненты записи. Завершается описание записи служебным словом End. Процедура – это часть программы, в которой выполняется специфическое действие, обычно основанное на наборе параметров. Оператор With - метод ускорения доступа к полям записи. Процедура Writeln является расширение процедуры Write, поскольку она определена только для текстовых файлов. Процедура Assign назначает файловой переменной имя внешнего файла. Процедура Rewrite создает новый внешний файл с именем, назначенным в переменной. Если внешний файл с тем же самым именем уже существует, то он удаляется, а на его месте создается новый пустой файл. Процедура Reset – открывает существующий файл, а если уже такой файл открыт, то он его закрывает и с ново открывает, может вылезти и ошибка ели файл с другим именем.

Интерфейс

Определение интерфейса. В мире компьютерного «железа» стандартизированная система сигналов и вид связи между отдельными устройствами. Например « интерфейс USB ». В мире программ – посредник, средство графического отображения происходящих в компьютере процессов. Говоря русским языком, интерфейс позволяет человеку работать с программами в визуальном, удобном для него режиме. Окошки, кнопки, меню – все это относится к
графическому интерфейсу. Через интерфейс осуществляется взаимодействие основной программы с модулем (модуля с модулем). В интерфейсе указываются константы, типы, переменные, процедуры и функции, которые могут быть использованы основной программой (модулем) при вызове этого модуля.

Интерфейс начинается, словом interface. Далее после слова uses указываются имена модулей, которые используются данным модулем (необязательная часть). После этого могут быть: раздел объявления констант, раздел объявления типов, раздел объявления переменных, раздел объявления процедур и функций. Объявление процедуры может содержать директиву inline. В разделе объявления процедур и функций указываются лишь заголовки подпрограмм (за исключением тех подпрограмм, которые используют директиву inline). Сами подпрограммы приводятся в исполнительной части.

В интерфейсах различных модулей недопустимо циклическое обращение друг к другу, т. к. компилятор в этом случае не может установить связей. Реализация интерфейсов во многом определяется исходными возможностями языка и целью, с которой интерфейсы введены в него. Очень показательны особенности использования интерфейсов в языках Java, Object Pascal системы Delphi и C++, поскольку они демонстрируют три принципиально разные ситуации: изначальная ориентация, применение для совместимости и эмуляция классами.

§ В Java интерфейсы изначально входят в язык, являясь неотъемлемой его частью.

§ В объектной подсистеме языка Object Pascal никаких интерфейсов не было, их поддержка была введена в Delphi 2 для обеспечения написания и использования COM-компонентов. Соответственно, механизм интерфейсов Delphi ориентирован, в первую очередь, на использование технологии COM.

§ В C++ интерфейсов, строго говоря, нет вообще. Механизм, аналогичный интерфейсам (и, исторически предшествующий им) реализуется другими средствами чрезвычайно мощной объектной подсистемы этого языка.

ФУНКЦИОНАЛЬНЫЕ ВОЗМОЖНОСТИ ЯЗЫКА ПРОГРАММИРОВАНИЯ ПАСКАЛЬ

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

Исторически первой была идея структурирования программ, в соответствии с которой программист должен был решить, какие именно процедуры он будет использовать в своей программе, а затем выбрать наилучшие алгоритмы для реализации этих процедур. Появление этой идеи было следствием недостаточной изученности алгоритмической стороны вычислительных процессов, столь характерной для ранних программных разработок (сороковые — пятидесятые годы). Типичным примером процедурно-ориентированного языка является Фортран – первый и всё ещё один из наиболее популярных языков программирования. Последовательное использование идеи процедурного структурирования программ привело к созданию обширных библиотек программирования, содержащих множество сравнительно небольших процедур, из которых, как из кирпичиков, можно строить «здание» программы.

По мере прогресса в области вычислительной математики акцент в программировании стал смещаться с процедур в сторону организации данных. Оказалось, что эффективная разработка сложных программ нуждается в действенных способах контроля правильности использования данных. Контроль должен осуществляться как на стадии компиляции, так и при прогоне программ, в противном случае, как показала практика, резко возрастают трудности создания крупных программных проектов. Отчётливое осознание этой проблемы привело к созданию Ангола-60, а позже Паскаля, Модулы-2, Си и множества других языков программирования, имеющих более или менее развитые структуры типов данных. Логическим следствием развития этого направления стал модульный подход к разработке программ, характеризующийся стремлением «спрятать» данные и процедуры внутри модуля.

Возможные алгоритмы решения задач

Алгоритм — это понятное и точное предписание исполнителю для совершения последовательности действий, направленных на решение определённой задачи. Свойства алгоритма:

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

Способы записи алгоритмов:

1. естественный язык;

2. блок — схемы;

3. учебный алгоритмический язык;

4. языки программирования.

Типы алгоритмов.

Алгоритмы бывают трёх типов:

1. последовательный — действия выполняются по порядку друг за другом;

2. циклический — организовывает повторение действий;

3. разветвляющийся ---содержит одно или несколькологических условий и имеет несколько ветвей обработки. Разветвление даёт возможность выбора варианта действий в зависимости от результатов анализа исходных условий

Последовательный алгоритм

писок используемых источников - student2.ru

Циклические алгоритмы

Безусловный оператор цикла FOR Условный оператор цикла с предусловием WHILE Условный оператор цикла с постусловием REPEAT
писок используемых источников - student2.ru писок используемых источников - student2.ru писок используемых источников - student2.ru

Разветвляющиеся алгоритмы

Условный оператор IF (полная запись) Условный оператор IF (краткая запись) Оператор выбора CASE
писок используемых источников - student2.ru писок используемых источников - student2.ru писок используемых источников - student2.ru
     

Логическая связь

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

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

С логическим типом данных мы уже неоднократно встречались при изучении свойств объектов. Этот тип данных состоит всего из двух значений: истина и ложь. На языке Pascal (а также на многих других языках) это соответственно True и False. В некоторых языках допускается использование чисел вместо этих переменных: 1 - истина, 0 - соответственно ложь. Итак, логический тип данных указывает, есть ли что-то или его нет, верно ли что-то или неверно. В Pascal логический тип данных носит название Boolean (англ. - логический). Значения, как уже было сказано – True и False. Простой пример объявления логической переменной и присвоения ей значения "ложь":

VarX: Boolean;
X:=False;

Операции над логическими выражениями

А вот и самое интересное. Для логических выражений введены 4 операции. Работа с ними чем-то похожа на работу с числами. Рассмотрим подробно эти операции.

1. Отрицание:NOT("не")

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

k:=True;
m:=not(k);
n:=not m;
p:=not(not(m));

Подразумевается, что все переменные описаны типом данных Boolean. Итак, разберём, что здесь происходит:

  • Сначала мы присваиваем переменной k значение True;
  • Далее, выполняя NOT для k получаем False: m становится равным False;
  • N становится противоположным m, т.е. True;
  • Над m делается двойное отрицание, т.е. значение p станет также False.

2. Логическое умножение (конъюнкция) –AND("и")

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

a:=True;
b:=False;
c:=True;
d:=aandb;
e:=aandc;
f:=not(b)andc;

Значение d будет False, т.к. один из операндов (операнды - выражения, которыми управляют операторы) равен False (b). Переменная e примет значение True, ведь и a и c истинны. Наконец, f тоже станет True, ведь not(b)- это истина и c тоже истина.

3. Логическое сложение (дизъюнкция) -OR("или")

Как и AND,ORработает с несколькими операндами. Название "или" уже отвечает на вопрос "что будет в итоге": если хотя бы один из операндов - истина, то всё выражение будет истиной. Результат False будет только в случае, если все операнды будут ложными.

a:=False;
b:=True;
c:=a orb;
d:=not(b) or a;

Значение переменной cстанет True, а переменной d- False.

4. Исключающее "или" -XOR

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

a:=True;
b:=False;
c:=a xor b;
d:=not(a) xor b;
e:=not(a) xornot(b);

Переменная c станет истиной, ведь a и b различны, а d - ложью, т.к. под сравнение попадут два значения False. Наконец, e станет истиной.

асчетная часть

ешение первой задачи

Program CR1_26;

Uses crt;

const players=10; {Игроки}

Type matrix=array[1..players,1..players] of char; {Матрица таблицы турниров}

label 1;

Var m:matrix; {Объявление массива}

i:integer; {Индекс строки}

j:integer; {Индекс столбца}

result:array[1..players] of real;

winner:integer;

function wnpWNP(c:char):char;

begin wnpWNP:=c; if c='в' then wnpWNP:='В';if c='н' then wnpWNP:='Н';if c='п' then wnpWNP:='П' end;

Begin

clrscr;

for i:=1 to players do for j:=1 to players do

if i=j then m[i,j]:='-' else if j>i then begin

1: write('Игрок ',i,' против ',j,' (В,Н,П): ');

Readln(m[i,j]);m[i,j]:=wnpWNP(m[i,j]);

if not (m[i,j] in ['В','Н','П']) then goto 1;

end;

for i:=1 to players do for j:=1 to players do

if i>j then begin

if m[j,i]='В' then m[i,j]:='П';

if m[j,i]='Н' then m[i,j]:='Н';

if m[j,i]='П' then m[i,j]:='В';

end;

for i:=1 to players do begin

for j:=1 to players do write(' ',m[i,j]);

writeln;

end;

for i:=1 to players do result[i]:=0;

for i:=1 to players do for j:=1 to players do begin

if m[i,j]='В' then result[i]:=result[i]+1.0;

if m[i,j]='Н' then result[i]:=result[i]+0.5;

end;

winner:=1;

for i:=2 to players do if result[i]>result[i-1] then winner:=i;

Writeln('Турнир выиграл игрок ',winner,' !!!');

while not keypressed do ; readln

End.

ешение второй задачи

program CR2_26;

uses crt;

const maxAb=10; { Студенты }

label 1;

type Ab = record { Тип Ab включает 6 полей: F, B, S, Sc, N, I }

FullName: string[25];

BirthYear: integer;

ScoolYear: integer;

Scool_REZ: array[1..10] of Byte;

NeedPlace: byte;

Incom_REZ: array[1..4] of Byte;

end;

var Abit: array[1..maxAb] of Ab; { Массив записей Abit типа Ab }

sp: text; { Файл }

last,rr: byte; { LAST, режим работы }

procedure saveAb(sAb:Ab); { запись в файл информации о студенте }

var j: byte;

begin

with sAb do begin

writeln(sp,Fullname);

writeln(sp,BirthYear);

writeln(sp,ScoolYear);

For j:=1 to 10 do write(sp,Scool_Rez[j],' ');writeln(sp);

writeln(sp,NeedPlace);

For j:=1 to 4 do write(sp,Incom_Rez[j],' ');writeln(sp);

end;

end;

procedure WaitEnter;

begin

write('Нажмите Enter >> ');

while not Keypressed do ; readln

end;

procedure vvod; { процедура создания файла и ввода данных }

var i,j,n:byte;ch:char;

begin { оператор assign находится в основной программе }

last:=maxAb;

rewrite(sp); { открытие файла для записи }

for i:=1 to maxAb do with Abit[i] do begin

clrscr;writeln('Введите:');writeln;

while KeyPressed do ch:=ReadKey;

write(i,'. Ф.И.О. - '); readln(Fullname);

write(i,'. Год рождения - '); readln(BirthYear);

write(i,'. Год окон. школы - '); readln(ScoolYear);

write(i,'. Школьные рез. (10!) - '); For j:=1 to 10 do read(Scool_Rez[j]);

write(i,'. Нужд.в общежитии (0/1) - '); readln(NeedPlace);

write(i,'. Вступ. рез. (4!) - '); For j:=1 to 4 do read(Incom_Rez[j]);

saveAb(Abit[i]);

WaitEnter;

end;

close(sp); { закрытие файла для записи }

end;

procedure print; { процедура чтения и печати всего файла }

var i,j:byte;YesNo:string[3];

begin

clrscr;

reset(sp); { открытие файла для чтения }

for i:=1 to maxAb do with Abit[i] do if not eof(sp) then begin

{ Чтение из файла информации о студенте }

last:=i;

readln(sp,Fullname);

readln(sp,BirthYear);

readln(sp,ScoolYear);

For j:=1 to 10 do read(sp,Scool_Rez[j]);readln(sp);

readln(sp,NeedPlace);

For j:=1 to 4 do read(sp,Incom_Rez[j]);readln(sp);

end;

close(sp); { закрытие файла }

if last<>0 then for i:=1 to last do with Abit[i] do begin

writeln('Список студентов (',i,'/',last,'):');

writeln(i,'. Ф.И.О. - ',Fullname);

writeln(i,'. Год рождения - ',BirthYear);

writeln(i,'. Год окон. школы - ',ScoolYear);

write(i,'. Школьные рез. (10) - ');For j:=1 to 10 do write(Scool_Rez[j],' ');writeln;

write(i,'. Нужд.в общежитии - ');YesNo:='Да ';if NeedPlace=0 then YesNo:='Нет';writeln(YesNo);

write(i,'. Вступ. рез. (4) - ');For j:=1 to 4 do write(Incom_Rez[j],' ');writeln;

WaitEnter;

end;

end;

procedure work;

var i,j:integer;good:array[1..maxAb] of boolean;

begin

rewrite(sp); { открытие файла для записи }

for i:=1 to last do begin good[i]:=true;

for j:=1 to 4 do if Abit[i].Incom_Rez[j]<3 then good[i]:=false;

end;

j:=0; for i:=1 to last do if good[i] then saveAb(Abit[i]) else Inc(j);

writeln('Удалено записей: ',j);

WaitEnter;

close(sp); { закрытие файла для записи }

end;

begin { начало основной программы }

assign(sp,'z:\mc-11.2b\shakirov\vedom.dat'); { связать файловую переменную sp с файлом VEDOM.DAT }

last:=0;

1:rr:=0; while not (rr in [1..4]) do begin {clrscr;}

write('Выберите режим работы (1 - ввод, 2 - печать, 3 - удаление, 4 - END!): '); readln(rr) end;

case rr of

1: begin vvod ; goto 1 end;

2: begin print; goto 1 end;

3: begin if last<>0 then work ; goto 1 end;

end;

writeln;writeln('END!');writeln;WaitEnter;

end.

аключение

Согласно поставленной цели в расчетном задание был проведен аналитический обзор литературных источников и интернет ресурсов, языков программирования согласно учебному плану по направлению машиностроение выбран рабочим Turbo Pascal в соответствии с номером варианта проведена работа и представлено решение двух задач. Смотрите страницу 2 при решении задач были использованы промежуточные знания, познавшие в ходе решения лабораторных работ, задачи являлись типовыми. Решение выполнено самостоятельно.

писок используемых источников

1. Вирт Н. Алгоритмы и структуры данных. – М.: Мир, 1989

2. Йенсен К., Вирт Н. Паскаль – руководство для пользователей и описание языка. – М.: Мир, 1982

3. Абрамов С.А., Зима Е.В. Начала программирования на языке Паскаль --М.: Наука, 1987

4. Зуев Е.А. Язык программирования Turbo Pascal 6.0 --М.: Унитех, 1992

5. Фаронов В.В. Турбо Паскаль 7.0. Начальный курс --М.: Нолидж, 1997 http://pascal.dax.ru/files/books/TurboPascal.zip

6. Зубов В.С. Программирование на языке Turbo Pascal (версии 6.0 и 7.0). Издание 3-е, исправленное – М.: Информационно-издательский дом "Филинъ", 1997. - 320 с

7. Немнюгин С.А. Turbo Pascal. Практикум [текст]. 2-е изд./ СПб.: Питер, 2007. - 268 с.: ил.

8. В.В. Фаронов. Основы Турбо Паскаля. Кн.1, М., МВТУ, 1992.

9. Марченко А.И., Марченко Л.А. Программирование в среде Turbo Pascal 7.0 / Под ред. В.П. Тарасенко – Киев: ВЕК+; М.: Бином Универсал, 1998

10. Прайс Д. Программирование на языке Паскаль: Практическое руководство. Пер. с англ. - М.:Мир, 1987

Наши рекомендации