Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Классификация языков программирования




Языки различаются по зависимости от аппаратной части.

 

1. машинофиксированный (ассемблеры): имеют жесткую ориентацию на определенный тип компьютеров. Также называются языки низкого уровня. yt nht,e.n rjvgbkzwbb/

аторитмические: ориентированы на систему операторов, характерных для замен определенного класса алгоритмов; языки высокого уровня

Компилятор – проги, переводящие текст на машинный язык.

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

1. неструктурный;

2. структурный;

3. логический;

4. объектно-ориентированный;

5. функциональный.

Рассмотрим перечисленные стили подробнее.

Неструктурное программирование допускает использование в явном виде команды безусловного перехода (в большинстве языков GOTO). Типичные представители неструктурных языков - ранние версии Бейсика и Фортрана. Данный стиль вызван особенностями выполнения машиной программы в кодах и унаследован от программ на языке ассемблера, поскольку там команда перехода является обязательной. Однако в языках высокого уровня наличие команды перехода влечет за собой массу серьезных недостатков: программа превращается в "спагетти" с бесконечными переходами вверх-вниз, ее очень трудно сопровождать и модифицировать. Фактически неструктурный стиль программирования не позволяет разрабатывать большие проекты. Ранее широко практиковавшееся первоначальное обучение программированию на базе неструктурного языка (обычно Бейсика) приводило к огромным трудностям при переходе на более современные стили. Как отмечал известный голландский ученый Э. Дейкстра, "программисты, изначально ориентированные на Бейсик, умственно оболванены без надежды на исцеление".

 

Структурный стиль был разработан в середине 60-х - начале 70-х гг. В его основе лежат две идеи:

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

как доказал Э. Дейкстра, любой алгоритм можно реализовать, используя лишь три управляющие конструкции: последовательное выполнение, ветвление и цикл (рисунок 1.1; обратите внимание на обозначения в соответствии с действующим стандартом). Данное обстоятельство позволяет при наличии соответствующих операторов исключить из языка команду перехода GOTO.

а) Последовательное б) Ветвление в) Цикл выполнение

Принципы структурного программирования были реализованы в языке Алгол, но наибольшую популярность завоевал язык Паскаль, созданный в 1970 швейцарским ученым Н. Виртом. Паскаль получил широчайшее распространение и может считаться образцовым языком программирования, наиболее популярным и сейчас (например, в версии Delphi фирмы Imprise).

 

Логическое программирование представляет собой попытку возложить на программиста только постановку задачи, а поиски путей ее решения предоставить транслятору. Логические языки (Пролог, Симула) имеют специальные конструкции для описания объектов и связей между ними. Например, если дано:

 

БРАТЬЯ ИМЕЮТ ОДНОГО ОТЦА

ДЖОН - ОТЕЦ ДЖЕКА

МАЙК - БРАТ ДЖЕКА

то система логического программирования должна сделать вывод: ДЖОН - ОТЕЦ МАЙКА.

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

 

Объектно-ориентированное (ОО) программирование, разработанное в середине 70-х гг. Керниганом и Риччи и реализованное в ОО-версиях языков Си и Паскаль, представляет собой отображение объектов реального мира, их свойств (атрибутов) и связей между ними при помощи специальных структур данных. Структурное программирование подразумевает наличие ряда встроенных структур данных: целых, вещественных и строковых переменных, массивов, записей - при помощи которых и производится отображение свойств объектов реального мира. При объектно-ориентированном подходе для объекта создается своя структура данных (класс), содержащая как свойства объекта (поля), так и процедуры для управления объектом (методы).

Например, рассмотрим простейший объект - точку на экране. Она имеет как минимум три поля (координаты и цвет) и методы вроде "ChangeColor" (поменять цвет), "MoveXY" (переместиться в точку х, у) и т.д. Объектно-ориентированный подход является в настоящее время доминирующим и позволяет сократить время разработки и увеличить надежность больших проектов. Однако программы в данном стиле отличаются громоздким синтаксисом; в целом идеология объектно-ориентированного подхода весьма неочевидна часто воспринимается с трудом (особенно это характерно для языка Си, который и в своем первоначальном виде отличается крайне неудобочитаемым синтаксисом) и переход к его использованию труден или невозможен для большого числа программистов.

 

В основе функционального стиля лежит понятие функции как "черного ящика", имеющего вектор параметров (аргументов) на входе и результат r (скаляр) на выходе:

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

К языкам искусственного интеллекта (сокращенно обозначается AI - artificial intelligence) относят такие языки, которые способны в зависимости от набора исходных данных модифицировать алгоритм работы, т.е. "на ходу" менять программу (поговорка гласит, что на языках искусственного интеллекта программируют те, кому не хватает интеллекта естественного).

 

 

Язык программирования - это система обозначений, служащая для точного описания программ или алгоритмов для ЭВМ. Языки программирования являются искусственными языками, в которых синтаксис и семантика строго определены. Поэтому при применении их по назначению они не допускают свободного толкования выражения, характерного для естественного языка [Толковый,1989].

Программа - это совокупность допустимых операторов конкретного языка программирования.

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

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

В данном пособии Вам предлагается изучать язык программирования Pascal (диалект TURBO Pascal, версия 3.0). Pascal - это императивный язык программирования высокого уровня, имеющий строгую типизацию данных и переменных. Автором языка Pascal является профессор, директор Института информатики Швейцарской высшей политехнической школы Никлаус Вирт, работавший над созданием этого языка в 1965-1971 гг. Язык программирования Pascal был назван в честь Блеза Паскаля, выдающегося французского математика и философа, жившего в 1623-1662 гг.

Императивные языки программирования [Толковый,1989] - это класс языков программирования. Программа, написанная на императивном языке, явно указывает способ получения желаемого результата, не определяя при этом ожидаемых свойств результата. Процедура получения желаемого результата имеет вид последовательности операций, поэтому для императивных языков характерно указание порядка выполнения операторов. В основе такого программирования лежат извлечение из памяти значения некоторой переменной, совершение над ним действия и сохранение нового значения с помощью оператора присваивания. Отметим, что операторы присваивания разрушают информацию (присваиваемое значение заменяет предыдущее значение переменной) и зависят от порядка выполнения.

Система программирования включает в себя:

1. редактор текстов программ;

2. компилятор;

3. компоновщик (компонует исполняемый код программы);

4. отладчик (используется для отладки программ).

Среда программирования Turbo Pascal – интерактивная, работа с которой выполняется с помощью команд меню или управляющих клавиш.

Структура программы: программа состоит из трех частей:

1. заголовок программы(Program имя программы);

2. описательная часть – объявляются все объекты, которые будут использованы в программе с указанием имен и типов данных. Раздел описаний состоит из подразделов:

· uses – список имен, подключенных в стандартных библиотеках;

· uses crt – стирание предыдущих выводов на экран;

· label – описание меток (Label M1, M2);

· const – описание констант (const p=3,1415);

· type (a: array [1..10] of real);

· var – объявление переменных (var a, b, c: real; x, y: integer;);

· procedure – объявление процедурного пользователя;

function – объявление функций пользователя;

3. раздел операторов (Begin … End.).

Алфавит и словарь языка Pascal. Алфавит содержит:

1. строчные и заглавные буквы латинского алфавита

2. десятичные цифры (от 0 до 10)

3. специальные символы + - * / > < =; # ‘.,: { } [ ] ()

Примечание: буквы русского алфавита и другие символы можно написать только в строковых константах (‘…’).

Словарь Pascal содержит зарезервированные слова [имеют фиксированное написание и навсегда определяют смысл(begin, end, type и т.д.)].Стандартные идентификаторы используются для обозначения встроенных в язык функций, процедур и т.д.

Идентификаторы - имена тех объектов программы, которые создает и называет программист (до 127 символов).

 

 

Типы данных языка Pascal

Компиляторы языка Pascal требуют, чтобы сведения об объеме памяти, необходимой для работы программы, были предоставлены до начала ее работы. Для этого в разделе описания переменных (var) нужно перечислить все переменные, используемые в программе. Кроме того, необходимо также сообщить компилятору, сколько памяти каждая из этих переменных будет занимать. А еще было бы неплохо заранее условиться о различных операциях, применимых к тем или иным переменным...

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

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

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

На основании базовых типов данных строятся все остальные типы языка Pascal, которые так и называются: конструируемые.

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

Основные типы данных:

1. целочисленные: integer (-32768 - 32767), longint, byte (0 - 255), shorint (-128 - 127), word (0 - 65537);

2. вещественные: представляют данные которые могут представлять не целые значения (real, single, double, extende, comp);

3. символьный тип: char – определяет множество значений символов, каждый символ кодируется числом от 0 до 255, каждое значение такого типа один символ (var b, a: char; begin … a: = ‘1’; b: = ‘A’;);

4. логические (булевские): Boolean: определяет два возможных значения: истина (true) или ложь (false).

 

Типы данных, конструируемые программистом, описываются в разделе type по следующему шаблону:

type <имя_типа> = <описание_типа>;

Например:

type lat_bukvy = 'a'..'z','A'..'Z';

Базовые типы данных являются стандартными, поэтому нет нужды описывать их в разделе type. Однако при желании это тоже можно сделать, например, дав длинным определениям короткие имена. Скажем, введя новый тип данных

type int = integer;

можно немного сократить текст программы.

Стандартные конструируемые типы также можно не описывать в разделе type. Однако в некоторых случаях это все равно приходится делать из-за требований синтаксиса. Например, в списке параметров процедур или функций конструкторы типов использовать нельзя

Порядковые типы данных

Среди базовых типов данных особо выделяются порядковые типы. Такое название можно обосновать двояко:

1. Каждому элементу порядкового типа может быть сопоставлен уникальный (порядковый) номер. Нумерация значений начинается с нуля. Исключение - типы данных shortint, integer и longint. Их нумерация совпадает со значениями элементов.

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

15.Арифметич и логич выраж:

Выражение - синтаксическая единица языка, определяет способ выч нек-ого знач. Знач арифметич выраж являетсяся число. Арифметич выраж строится из констант, перемен и ф-ций числовых типов, а также арифметич действий и круглых скобок.

Приоритеты действий:

Функции, not.

Мультипликативные операции: *, /,div, mod, and

Аддитивные операции: +, -, or

Отношения: =, <>, >, <, >=, <=, in

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

Логич выраж имеет знач истина или ложь. Может состоять из логич констант, перемен, опреций отнош-я, логич операций(<,>,=,<=,>=,<>). Применяются к логич выраж. Логич выраж может включать в себя арифметич. Сложные логич выраж сост из логич операций.

NOT-отрицание

AND-логич умножение или конъюкция

OR-сложение или дизъюнкйия(или)

XOR-исключ

Стандартные матем ф-ции:

Frac(x)-дробная часть

Int(x)-целая часть числа, рез-т вещ-ого типа

Trunc(x)-ближ целое, не привыш х по модулю, рез-т целого типа

Round(x)-округление до ближ целого Random(x)-дает целое в диапазоне[0;x]

Random-случ число [0;1] Sin(x)-sinx Cos(x)-cosx Arctg(x)-arctx Exp(x)-e в степени x Ln(x)-lnx Sqr(x)-x в кв Sqrt(x)-корень

 

17 - 18 Составной оператор- совокупность любого числа операторов, ограниченные операторными скобками «begin...end», т.е. оператор имеет вид

Begin

Оператор1; оператор2;…оператор n; end;

Сост оператор исп в том месте программы, где синтаксис требует наличия одного оператора, а алгоритм требует вып неск действий.

Условные операторы: исп для выбора одного из двух возможных действий в зависимости от нек-ого усл.

1)if..then...else

формат: if усл then оп1 else оп2

Оператор реализует алгоритмич стр-ру полная развилка. Оператор выч знач логич выраж(усл). Оно м.б. либо=истина, либо=ложь. Если усл вып выраж=истина, то вып оп1, иначе вып оп2.

2) if...then

Реализует алгоритмич стр-ру неполная развилка. Если усл вып, то то вып оператор после слова then, иначе ничего не вып., а осущ переход на следующ оператор программы. Операторы внутри оператора могут быть простыми и составиными.

Оператор case: (оп множественного выбора). Исп для выбора одного из нескольких возможных действий.

Формат:

Case k of

Const1:оп1;…

Const n: оп n else оп (n+1); end;

k- выраж-селектор целого, символьного или логич типа

Const1,Const n-того же типа что и селектор.

Этот оп реализует алгоритмич стр-ру «выбор-если» и работает следующ образом:выч знач выраж k. Если в группе const 1...n есть знач, равное вычисляемому, то вып соотв этой константе оператор с последующим выходом за пределы оп case. Если такой конст не нашлось, то вып оператор n+1, далее выход; часть else может отсутствовать. Все конст должны иметь различ знач.

Н: сост программу, к-ая по введенному номеру месяца выводит на экран назв времени года.

Program pr1;Var k:byte; Begin Writeln(‘’); Readln(k); Case k of 12,1,2:writeln(‘зима’); 3,4,5:writeln(‘весна’); 6,7,8:writeln(‘лето’);

9,10,11:writeln(‘осень’); else writeln(‘неверный параметр’) end; end

 

19 Оператор цикла с параметром while -это оператор цикла с предусловием. Реализует алгоритмическую структуру- цикл «пока» с предусловием. Общий вид оператора: while условие do оператор; оператор м.б.как простым, так и составным. Оператор-это тело цикла. Перед каждым выполнением тела цикла проверяется условие, если результат истина, то тело цикла выполняется, иначе происходит выход из цикла. Возможен случай,когда тело цикла не выполняется ни разу.

ProgramPrim3;

Const n=10;

Var

k,x,s: integer;

begin

k:=0;

s:=0;

while k<n do

begin

k:=k+1;

writeln (‘Введите число,’k);

readln(x);

s:=s+x;

end;

writeln(‘Сумма=’s);

end

Оператор цикла с параметром repeat - оператор цикла с постусловием, реализует алгоритмическую структуру(цикл «пока» с постусловием). Общий вид оператора:

Repeat

Оператор1;

Оператор2;

………….;

Оператор n;

Until условие;

Выполняется тело цикла, затем проверяется условие выхода из цикла. Если условие выполняется => выход из цикла, иначе опять вып-ся тело цикла. Для оператора Repeat Until тело цикла вып-ся хотя бы 1раз.

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...