Лекция Основы алгоритмизации. Алгоритмы и величины. Этапы решения задачи на ЭВМ



бет2/37
Дата16.01.2022
өлшемі0,96 Mb.
#129365
түріЛекция
1   2   3   4   5   6   7   8   9   ...   37
Байланысты:
Все лекции

Данные и величины

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



Рисунок 2.1- Классификация данных


Например, при решении квадратного уравнения:

ax2 + bx + с = 0

исходными данными являются коэффициенты а, b, с, результатами — корни уравнения х1, х2, промежуточным данным — дискриминант уравнения:




  1. = b2 — 4aс.

Для успешного освоения программирования необходимо усвоить следующее правило: всякая величина занимает свое определенное место в памяти ЭВМ (иногда говорят — ячейку памяти). Хотя термин «ячейка» с точки зрения архитектуры современных ЭВМ несколько устарел, однако в учебных целях его удобно использовать.

  • всякой величины имеются три основных свойства: имя, значение и тип. На уровне команд процессора величина идентифицируется при помощи адреса ячейки памяти, в которой она хранится. В алгоритмах и языках программирования величины делятся на константы и переменные.

Константа неизменная величина, и в алгоритме она представляется собственным значением, например: 15, 34.7, k, true и т.д.

Переменные величины могут изменять свои значения в ходе выполнения программы и представляются символическими именами — идентификаторами, например: X, S2, codl5. Любая константа, как и переменная, занимает ячейку памяти, а значение этих величин определяется двоичным кодом в этой ячейке.

Типы величин.

Теперь о типах величин — типах данных. С понятием типа данных вы уже, возможно, встречались, изучая в курсе информатики базы данных и электронные таблицы. Это понятие является фундаментальным для программирования.



  • каждом языке программирования существует своя концепция типов данных, своя система типов.

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

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



  • таблице 2.1 представлены эти характеристики основных типов

данных.

Типы констант.

Типы констант определяются по контексту (т. е. по форме записи в тексте), а типы переменных устанавливаются в описаниях переменных. Есть еще один вариант классификации данных — по структуре. Данные делятся на простые и структурированные. Для простых величин (их еще называют скалярными) справедливо утверждение: одна величина — одно значение, для структурированных: одна величина — множество значений.



К структурированным величинам относятся массивы, строки, множества и т.д.
Таблица 2.1 - Типы данных и величин

Тип

Значения







Операции




Внутреннее






















представление




Целый

Целые







Арифметические

Формат




с




положительные

и

операции

с целыми

фиксированной







отрицательные




числами: +, -, ·, целое

точкой










числа в

некотором

деление и остаток от













диапазоне. Примеры

деления.

Операции













23,-12, 387




отношений (<, >, = и






















др.)













Вещественный

Любые

(целые

и

Арифметические

Формат










дробные)

числа

в

операции: +, -, ·, /.

плавающей точки




некотором




Операции отношений













диапазоне.






















Примеры: 2,5, -0,01,



















45,0, 3,6·109



















Логический

True (истина)




Логические

1 бит:










False (лож)




операции:

И and,

1- true



















ИЛИ or, НЕ not.

0- false



















Операции отношений










Символьный

Любые

цифры

Операции отношений

Коды

таблицы




компьютерного










символьной







алфавита.













кодировки.

1




Примеры: ‘a’, ‘5’,










символ – 1 байт







‘+’, ‘S’























ЭВМ — исполнитель алгоритмов. Как известно, всякий алгоритм (программа) составляется для конкретного исполнителя в рамках его системы команд. О каком же исполнителе идет речь при обсуждении вопроса о программировании для ЭВМ?

Ответ очевиден: исполнителем является компьютер. Точнее говоря, исполнителем является комплекс ЭВМ + Система программирования (СП). Программист составляет программу на том языке, на который ориентирована СП. Иногда в литературе такой комплекс называют виртуальной ЭВМ.

Например, компьютер с работающей системой программирования на Бэйсике называют Бэйсик-машиной; компьютер с работающей системой программирования на Паскале называют Паскаль-машиной и т.п. Схематически это изображено на рисунке 2.2.Независимо от того, на каком языке программирования будет написана программа, алгоритм решения любой задачи на ЭВМ может быть составлен из команд:



  • присваивания;

  • ввода;

  • вывода;

  • обращения к вспомогательному алгоритму;

  • цикла;

  • ветвления.


Рисунок 2.2 - Схема Паскаль-машины
Для описания алгоритмов в дальнейшем мы будем использовать блок-схемы и учебный алгоритмический язык.
Контрольные вопросы:

  1. Что такое алгоритм?

  2. Основные свойства алгоритмов?

  3. Какими способами можно записать алгоритм?

  4. Основные структуры алгоритмов ?

  5. Этапы решения задачи на ЭВМ.

  6. Данные и величина?



Лекция 2. Основы алгоритмизации. Алгоритмы и величины. Этапы решения задачи на ЭВМ.


  1. Виды вычислительных алгоритмов. Линейные вычислительные алгоритмы.

  2. Линейные вычислительные алгоритмы.

  3. Нелинейные вычислительные алгоритмы.

  4. Арифметические и неарифметические выражения.

  5. Составления алгоритмов.


Цель лекции: научить составлять линейные и нелинейные алгоритмы. Дать понятия арифметическим и неарифметическим выражениям.

Главным простым воздействием в вычислительных методах считается присваивание смысла переменной величине. В случае, если смысл константы определен обликом ее записи, то переменная получает определенный смысл лишь только в итоге присваивания. Присваивание имеет возможность реализоваться 2-мя методами: с поддержкой команды присваивания и с поддержкой команды ввода. Рассмотрим образец: в учебнике арифметики критерии деления обычных дробей описаны так:



  1. Числитель 1 дроби умножить на знаменатель 2 дроби.

  2. Знаменатель 1 дроби умножить на числитель 2 дроби.

  3. Записать дробь, числитель которой есть итог выполнения пункта 1, а знаменатель — итог выполнения пункта 2. В алгебраической форме это смотрится грядущим образом:

Воспроизведем метод деления дробей для ЭВМ.



  • данном методе сохраним те же обозначения для переменных, которые применены в записанной выше формуле. Начальными данными считаются целочисленные переменные а, b, с, d. Итогом - тип целых величин.

Блок-схема и слово метода на учебном алгоритмическом языке приведены на рисунке 3.1 (в последующем для краткости станем называть учебный алгоритмический язык АЯ).


Рисунок 3.1- Схема алгоритма и блок-схема вычисления деления дробей

Формат команды присваивания следующий:

переменная:=выражение

Знак «:=» нужно читать как «присвоить».

Команда присваивания обозначает следующие действия, выполняемые компьютером:



  1. Вычисляется выражение.

  2. Полученное значение присваивается переменной.

  • приведенном выше алгоритме присутствуют две команды присваивания. В блок-схемах команда присваивания записывается в прямоугольнике. Такой блок называется вычислительным блоком.

  • описаниях алгоритмов необязательно соблюдать строгие правила в записи выражений. Их можно писать в обычной математической форме. Это еще не язык программирования со строгим синтаксисом.

  • приведенном алгоритме присутствует команда ввода:

ввод a,b,c,d

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

Значения следует вводить в том же порядке, в каком соответствующие переменные расположены в списке ввода

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

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

вывод m,n



  • помощью этой команды результаты выводятся на экран или на устройство печати на бумагу.

Пример линейного алгоритма

Задача о нахождении площади стен комнаты

1) Ввести длину комнаты, присвоить переменной А введенное значение.



  1. Ввести ширину комнаты, присвоить переменной В введенное

значение.

  1. Ввести высоту комнаты, присвоить переменной Н введенное

значение.

  1. Произвести вычисление по формуле: S=2·(A+B)·H.

  2. В ывести (напечатать) результат - значение переменной S - площадь стен комнаты. Н

А,В,Н


S=2*(A+B)*H

S


К

Рисунок 3.2 - Блок-схема линейного алгоритма вычисления

Метод, в котором очередность выполнения кое-каких предписаний находится в зависимости от выполнения проверяемых исполнителем критериев, именуется нелинейным (рисунок 3.3).

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

Образец нелинейного (разветвляющегося) метода.

Упорядочить a,b,c по возрастанию (от наименьшего к большему), применяя дополнительную функцию h.

Перестановка осуществляется в следующей последовательности:


  1. h=a.

  2. a =b.

  3. b=h.

Рисунок 3.3 - Блок-схема нелинейного алгоритма


Арифметические и неарифметические выражения.

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

Логическое (условное) выражение.

Логическое выражение с обычным условием.

Несложное условие - это 2 выражения, меж которыми помещается сигнал сопоставления.

Операция Описание операции


> Больше чем

>= Больше или равно



< Меньше чем

<= Меньше или равно

= Равно


<> Не равно

Простое условие имеет значение:

True - истина

False - ложь

Пример:


2.9994 < 2.9995 True
3.1416 < = 3.1416 True

1.3E-18 < 2.3E-19 False

-Y^2 > Abs(Y)

Логическое выражение со сложным условием.

Сложное условие – это очередность несложных критериев или же иных относительных выражений, заключенных в круглые скобки, которые объединены меж собой символами закономерных операций.

And - логическое умножение.

Or - логическое телосложение.

Not - логическое отрицание.

Смысл закономерного выражения рассчитывается по правилам вычисления закономерных выражений:

Логическое произведение подлинно лишь только тогда, когда оба

закономерных сомножителя истинны.




A

B

A And B

True

True

True

True

False

False

False

True

False

False

False

False

Логическая сумма ложна только тогда, когда оба логических

слагаемых ложны.







A

B

A оr B

True

True

True

True

False

True

False

True

True

False

False

False

Логическое отрицание выражения ложно, если само это выражение истинно, и наоборот.



Составление алгоритмов

Так как операция присваивания считается важной операцией в вычислительных методах, рассмотрим ее более детально.

Рассмотрим последовательное выполнение 4 команд присваивания, в коих принимают участие 2 переменные величины а и b.


  • приведенной ниже таблице визави всякой команды присваивания указываются смысл переменных, которые уточняются впоследствии выполнения команды.

Этот пример иллюстрирует три основных свойства команды присваивания:

- пока переменной не присвоено значение, она остается неопределенной; - значение, присвоенное переменной, сохраняется в ней вплоть до выполнения следующей команды присваивания этой переменной; - новое значение, присваиваемое переменной, заменяет ее предыдущее значение.

Таблица 4.1 - Схема работы команды присваивания

Команда

а

b

a: =1

1

-

b: =2 · a

1

2

a: = b

2

2

b: = a + b

2

4

Рассмотрим один очень полезный алгоритм, который приходится часто использовать при программировании. Даны две величины: X и Y. Требуется произвести между ними обмен значениями. Например, если первоначально было Х = 1, Y = 2, то после обмена должно стать: Х = 2, Y = 1.

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



  1. Перелить из первого стакана в третий.

  2. Перелить из второго в первый.

  1. Перелить из третьего во второй. Цель достигнута!

По аналогии для обмена значениями двух переменных нужна третья дополнительная переменная. Назовем ее Z. Тогда задача обмена решается последовательным выполнением трех команд присваивания.

Таблица 4.2 - Схема работы команды присваивания



Команда

X

Y

Z

ввод X, Y

1

2

-

Z:=X

1

2

1

X:=Y

2

2

1

Y:= Z

2

1

1

стаканами

Аналогия со не совсем точна в том смысле, что при переливании из одного стакана в другой первый становится пустым. В результате же присваивания (Х: = Y) переменная, стоящая справа (Y), сохраняет свое значение.

Алгоритм для деления дробей имеет линейную структуру. В нем все команды выполняются в строго однозначной последовательности, каждая по одному разу. Линейный алгоритм составляется из команд присваивания, ввода, вывода и обращения к вспомогательным алгоритмам (об этом позже).

При описании алгоритмов в блок-схемах типы, как правило, не указываются (но подразумеваются). В алгоритмах на АЯ для всех переменных типы указываются явно. Описание типов переменных производится сразу после заголовка алгоритма. В них используются следующие обозначения типов: цел — целый тип, вещ — вещественный тип, лит — символьный (литерный) тип, лог — логический тип. В алгоритме для деления дробей для всех переменных указан целый тип.



Ветвления и циклы в вычислительных алгоритмах. Составим алгоритм решения квадратного уравнения

З адача хорошо знакома из математики. Исходными данными здесь являются коэффициенты а, b, с. Решением в общем случае будут два корня x1 и х2, которые вычисляются по формуле:



Все используемые в этой программе величины вещественного типа.

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

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

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

Чтобы построить универсальный алгоритм, сначала требуется тщательно проанализировать математическое содержание задачи.

Решение уравнения зависит от значений коэффициентов a, b, с. Вот анализ рассмотренной выше задачи (ограничиваемся только поиском вещественных корней):



    • если a = 0, b = 0, с = 0, то любое х — решение уравнения;

    • если а = 0,b = 0, с ≠ 0, то уравнение действительных решений не имеет;

    • если а = 0, b ≠ 0, то это линейное уравнение, которое имеет одно решение х = -с/b;

    • если a ≠ 0 и d = b2- 4ас ≥ 0, то уравнение имеет два вещественных корня (формулы приведены выше);

    • если а ≠ 0 и d < 0, то уравнение не имеет вещественных корней.

Блок-схема алгоритма приведена на рисунке 4.2.

Рисунок 4.2 - Блок-схема алгоритма

Составление алгоритмов с предусловием

Блок-схема алгоритма, показанного на рисунке 4.2, на алгоритмическом языке:

Рисунок 5.1- Алгоритм, записанный на алгоритмическом языке.


  • этом алгоритме многократно использована структурная команда ветвления. Общий вид команды ветвления в блок-схемах и на алгоритмическом языке следующий:


Рисунок 5.2 - Общий вид команды ветвления


Вначале проверяется условие (вычисляется отношение, логическое выражение). Если условие истинно, то выполняется серия 1 — последовательность команд, на которую указывает стрелка с надписью «да» (положительная ветвь). В противном случае выполняется серия 2 (отрицательная ветвь).

  • АЯ условие записывается после служебного слова, если положительная ветвь — после слова то, отрицательная — после слова иначе. Буквы кв обозначают конец ветвления.

Если на ветвях одного ветвления содержатся другие ветвления, то такой алгоритм имеет структуру вложенных ветвлений. Именно такую структуру имеет алгоритм «Корни квадратного уравнения».

Рассмотрим следующую задачу: дано целое положительное число п.

Требуется вычислить n! (n-факториал). Вспомним определение факториала:

Н а рисунке 5.3 приведена блок-схема алгоритма. В нем используются три переменные целого типа: п — аргумент; i — промежуточная переменная; F результат. Для проверки правильности алгоритма построена трассировочная таблица. В такой таблице для конкретных значений исходных данных по шагам прослеживается изменение переменных, входящих в алгоритм. Данная таблица составлена для случая п = 3.




Рисунок 5.3 - Блок-схема алгоритма ветвления с табличным пояснением

Трассировка доказывает правильность алгоритма. Теперь запишем этот алгоритм на алгоритмическом языке.

Рисунок 5.4 - Алгоритм ветвления на алгоритмическом языке

Этот алгоритм имеет циклическую структуру. В алгоритме использована структурная команда цикл-пока, или цикл с предусловием. Общий вид команды цикл-пока в блок-схемах и в АЯ следующий:


Рисунок 5.5 - Блок-схема «цикл-пока»

Выполнение серии команд (тела цикла) повторяется, пока условие цикла истинно. Когда условие становится ложным, цикл заканчивает выполнение. Служебные слова нц и кц обозначают «начало цикла» и «конец цикла» соответственно.

Цикл с предусловием — это основная, но не единственная форма организации циклических алгоритмов. Другим вариантом является цикл с постусловием. Вернемся к алгоритму решения квадратного уравнения. К нему можно подойти с такой позиции: если а = 0, то это уже не квадратное уравнение и его можно не рассматривать.



  • таком случае будем считать, что пользователь ошибся при вводе данных, и следует предложить ему повторить ввод. Иначе говоря, в алгоритме будет предусмотрен контроль достоверности исходных данных с предоставлением пользователю возможности исправить ошибку. Наличие такого контроля — еще один признак хорошего качества программы.

Рисунок 5.6 - Блок-схема цикла с предусловием



  • о бщем виде структурная команда цикл с постусловием или цикл—до представляется так:

Рисунок 5.7 - Блок-схема цикла с постусловием

Здесь используется условие окончания цикла. Когда оно становится истинным, цикл заканчивает работу.

Алгоритм цикла с вложенным ветвлением. Вспомогательные алгоритмы и процедуры

Составим алгоритм решения следующей задачи: даны два натуральных числа М и N. Требуется вычислить их наибольший общий делитель — НОД (М, N).

Эта задача решается с помощью метода, известного под названием алгоритма Евклида.

Его идея основана на том свойстве, что если M > N, то НОД(М, N) = НОД(М — N,N). Другой факт, лежащий в основе алгоритма, тривиален — НОД(М, M) = М. Для «ручного» выполнения этот алгоритм можно описать в форме следующей инструкции:


  1. Если числа равны, то взять их общее значение в качестве ответа; в противном случае продолжить выполнение алгоритма.

  2. Определить большее из чисел.

  3. Заменить большее число разностью большего и меньшего значений.

  4. Вернуться к выполнению пункта 1.

Блок-схема и алгоритм на АЯ будут следующими:

Рисунок 6.1 - Алгоритм с вложенным циклом

Алгоритм имеет структуру цикла с вложенным ветвлением. Проделайте самостоятельно трассировку этого алгоритма для случая М = 18, N = 12. В результате получится НОД = 6, что, очевидно, верно.

Вспомогательные алгоритмы и процедуры.


  • теории алгоритмов известно понятие вспомогательного алгоритма. Вспомогательным называется алгоритм решения некоторой подзадачи из основной решаемой задачи. В таком случае алгоритм решения исходной задачи называется основным алгоритмом.




  • качестве примера рассмотрим следующую задачу: требуется составить алгоритм вычисления степенной функции с целым показателем у = хk, где k — целое число, х ≠ 0. В алгебре такая функция определена следующим образом:

Для данной задачи в качестве подзадачи можно рассматривать возведение числа в целую положительную степень.

Учитывая, что , запишем основной алгоритм решения этой задачи.

Рисунок 6.2 - Алгоритм решения задачи по возведению в степень

Здесь дважды присутствует команда обращения к вспомогательному алгоритму с именем СТЕПЕНЬ. Это алгоритм возведения вещественного основания в целую положительную степень путем его многократного

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



  • учебном алгоритмическом языке вспомогательные алгоритмы оформляются в виде процедур. Запишем на АЯ процедуру СТЕПЕНЬ.


Рисунок 6.3 - Функция «Уровень» на алгоритмическом языке

Заголовок вспомогательного алгоритма начинается со слова «процедура», после которого следует имя процедуры и в скобках — список формальных параметров. В этом списке перечисляются переменные-аргументы и переменные-результаты с указанием их типов.

Здесь а и k — формальные параметры-аргументы, z — параметр-результат. Следовательно, процедура «степень» производит вычисления по формуле z = аk. В основном алгоритме «Степенная функция» обращение к процедуре производится путем указания ее имени с последующим в скобках списком фактических параметров.

Между формальными и фактическими параметрами процедуры должны выполняться следующие правила соответствия:



  • по количеству (сколько формальных, столько и фактических параметров);

  • по последовательности (первому формальному соответствует первый фактический параметр, второму — второй и т.д.);

  • по типам (типы соответствующих формальных и фактических параметров должны совпадать).

Фактические параметры-аргументы могут быть выражениями соответствующего типа.

Обращение к процедуре инициирует следующие действия:

1) Значения параметров-аргументов присваиваются соответствующим формальным параметрам.

2) Выполняется тело процедуры (команды внутри процедуры).



  1. Значение результата передается соответствующему фактическому параметру, и происходит переход к выполнению следующей команды основного алгоритма.

  1. процедуре «степень» нет команд ввода исходных данных и вывода результатов. Здесь присваивание начальных значений аргументам (а, п) производится через передачу параметров-аргументов. А присваивание результата переменной (у) происходит через передачу параметра-результата

(z).

Таким образом, передача значений параметров процедур — это третий способ присваивания (наряду с командой присваивания и командой ввода).

Использование процедур позволяет строить сложные алгоритмы методом последовательной детализации.
Лекция 3. История и классификация языков программирования. Основные компоненты системы программирования.


  1. Краткие исторические сведения об алгоритмических языках.

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

  3. Основные компоненты системы программирования.


Цель лекции: дать сведения о классификации языков программирования.
Язык программирования — это способ записи программ решения различных задач на ЭВМ в понятной для компьютера форме. Процессор компьютера непосредственно понимает язык машинных команд (ЯМК).

Программы на ЯМК программисты писали лишь для самых первых ламповых машин — ЭВМ первого поколения. Программирование на ЯМК — дело непростое. Программист должен знать числовые коды всех машинных команд, должен сам распределять память под команды программы и данные.



    • 1950-х гг. появляются первые средства автоматизации программирования — языки Автокоды. Позднее для языков этого уровня стало применяться название «Ассемблеры». Появление языков типа Автокод-Ассемблер облегчило участь программистов.

Переменные величины стали изображаться символическими именами. Числовые коды операций заменились на мнемонические (словесные) обозначения, которые легче запомнить. Язык программирования стал понятнее для человека, но при этом удалился от языка машинных команд. Чтобы компьютер мог исполнять программы на Автокоде, потребовался специальный переводчик — транслятор. Транслятор — это системная программа, переводящая текст программы на Автокоде в текст эквивалентной программы на ЯМК.

Компьютер, оснащенный транслятором с Автокода, понимает Автокод.



  • этом случае можно говорить о псевдо-ЭВМ (аппаратура плюс транслятор с Автокода), языком которой является Автокод. Языки типа Автокод-Ассемблер являются машинно-ориентированными, т.е. они настроены на структуру машинных команд конкретного компьютера. Разные компьютеры с разными типами процессоров имеют разный Ассемблер.

Языки программирования высокого уровня (ЯПВУ) являются машинно-независимыми языками. Одна и та же программа на таком языке может быть выполнена на ЭВМ разных типов, оснащенных соответствующим транслятором. Форма записи программ на ЯПВУ по сравнению с Автокодом еще ближе к традиционной математической форме, к естественному языку.

Очень скоро вы увидите, что, например, на языке Паскаль она почти такая же, как на школьном Алгоритмическом языке. ЯПВУ легко изучаются, хорошо поддерживают структурную методику программирования.

Первыми популярными языками высокого уровня, появившимися в 1950-х гг., были Фортран, Кобол (в США) и Алгол (в Европе).

Языки Фортран и Алгол были ориентированы на научно-технические расчеты математического характера. Кобол — язык для программирования экономических задач. В Коболе по сравнению с двумя другими названными языками слабее развиты математические средства, но зато хорошо развиты средства обработки текстов, организация вывода данных в форме требуемого документа.

Для первых ЯПВУ предметная ориентация языков была характерной чертой. Большое количество языков программирования появилось в 1960— 1970-х гг. А за всю историю ЭВМ их было создано более тысячи. Но распространились, выдержали испытание временем немногие. В 1965 г. в Дартмутском университете был разработан язык Бейсик.

По замыслу авторов это простой язык, легко изучаемый, предназначенный для программирования несложных расчетных задач. Наибольшее распространение Бейсик получил на микроЭВМ и персональных компьютерах. На некоторых моделях школьных компьютеров программировать можно только на Бейсике.



  • эпоху ЭВМ третьего поколения получил большое распространение язык PL/I (Program Language One), разработанный фирмой IBM. Это был первый язык, претендовавший на универсальность, т. е. на возможность решать любые задачи: вычислительные, обработки текстов, накопления и поиска информации. Однако PL/I оказался слишком сложным языком.

Для машин типа IBM 360/370 транслятор с него не мог считаться оптимальным, содержал ряд невыявленных ошибок. На ЭВМ класса мини и микро он вообще не получил распространения. Однако тенденция к универсализации языков оказалась перспективной. Старые языки были модернизированы в универсальные варианты — Алгол-68, Фортран-77.

Значительным событием в истории языков программирования стало создание в 1971 г. языка Паскаль. Его автор — швейцарский профессор Н.Вирт — разрабатывал Паскаль как учебный язык структурного программирования. Наибольший успех в распространении этого языка обеспечили персональные компьютеры. Фирма Borland International, Inc (США) разработала систему программирования Турбо Паскаль для ПК. Турбо Паскаль — это не только язык и транслятор с него, но еще и операционная оболочка, обеспечивающая пользователю удобство работы.

Турбо Паскаль вышел за рамки учебного предназначения и стал языком профессионального программирования с универсальными возможностями.

Транслятор с Турбо Паскаля по оптимальности создаваемых им программ близок наиболее удачному в этом отношении транслятору — транслятору с Фортрана.



  • силу названных достоинств, Паскаль стал основой многих современных языков программирования, например, таких, как Ада, Модула-2 др.

Язык программирования Си (английское название — С) создавался как инструментальный язык для разработки операционных систем, трансляторов, баз данных и других системных и прикладных программ.

Так же, как и Паскаль, Си — это язык структурного программирования, но, в отличие от Паскаля, в нем заложены возможности непосредственного обращения к некоторым машинным командам, к определенным участкам памяти компьютера. Дальнейшее развитие Си привело к созданию языка объектно-ориентированного программирования Си++.

Модула-2 — это еще один язык, предложенный Н.Виртом, основанный на языке Паскаль и содержащий средства для создания больших программ.

ЭВМ будущего, пятого поколения называют машинами «искусственного интеллекта». Но прототипы языков для этих машин были созданы существенно раньше их физического появления. Это языки ЛИСП и Пролог.

ЛИСП появился в 1965 г. Язык ЛИСП основан на понятии рекурсивно определенных функций. А поскольку доказано, что любой алгоритм может быть описан с помощью некоторого набора рекурсивных функций, то ЛИСП, по сути, является универсальным языком.


  • его помощью на ЭВМ можно моделировать достаточно сложные процессы, в частности интеллектуальную деятельность людей.

Язык Пролог разработан во Франции в 1972 г. также для решения проблемы «искусственного интеллекта». Пролог позволяет в формальном виде описывать различные утверждения, логику рассуждений и заставляет ЭВМ давать ответы на заданные вопросы.

Реализовать тот или иной язык программирования на ЭВМ — это значит создать транслятор с этого языка для данной ЭВМ. Существуют два различных метода трансляции. Они называются соответственно «компиляция» и «интерпретация». Для объяснения их различия можно предложить следующую аналогию: лектор должен выступить перед аудиторией на незнакомом ей языке. Перевод можно организовать двумя способами:

- полный предварительный перевод — лектор заранее передает текст выступления переводчику, тот записывает перевод, размножает его и раздает слушателям (после чего лектор может и не выступать);

- синхронный перевод — лектор читает доклад, переводчик одновременно с ним слово в слово переводит выступление.

Компиляция является аналогом полного предварительного перевода; интерпретация — аналогом синхронного перевода. Транслятор, работающий по принципу компиляции, называется компилятором; транслятор, работающий методом интерпретации, — интерпретатором.

При компиляции в память ЭВМ загружается программа-компилятор. Она воспринимает текст программы на ЯПВУ как исходную информацию. После завершения компиляции получается программа на языке машинных команд. Затем в памяти остается только программа на ЯМК, которая выполняется, и получаются требуемые результаты.

Интерпретатор в течение всего времени работы программы находится во внутренней памяти.


  • ОЗУ помещается и программа на ЯПВУ. Интерпретатор в последовательности выполнения алгоритма «читает» очередной оператор программы, переводит его в команды и тут же выполняет эти команды. Затем переходит к переводу и выполнению следующего оператора. При этом результаты предыдущих переводов в памяти не сохраняются.

Поэтому использование компиляторов удобнее для больших программ, требующих быстрого счета. Программы на Паскале, Си, Фортране всегда компилируются. Бейсик чаще всего реализован через интерпретатор.

Visual Basic for Applications (VBA) – встроенный язык программирования Excel. VBA положен в основу системы программирования Visual Basic. Как и Visual Basic, VBA реализует концепцию визуального программирования, управляемого событиями.

VBA позволяет существенно расширить вычислительные возможности Excel. С помощью VBA можно легко и быстро создавать различные приложения.

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



  • VBA широко используются элементы объектно-ориентированного программирования (ООП) и связанные с ним понятия. В основе ООП, управляемого событиями, лежат понятия класс, инкапсуляция, объект, событие. В качестве объектов могут рассматриваться конкретные предметы, а также абстрактные или реальные сущности.

  • частном случае, в VBA объектом являются элементы пользовательского интерфейсa, которые создаются на Форме пользователя (UserForm) или на рабочем листе, а также рабочая книга и ее элементы. Доступ к объекту при ООП возможен только через его методы и свойства. Каждый объект является представителем некоторого класса однотипных объектов, т.е. объект является экземпляром класса. Класс определяет общие для всех его объектов методы и свойства.

Методы — это программные процедуры, реализующие некоторый алгоритм, который определяет взаимодействие объектов класса с внешней средой.

Свойства представляют собой характеристики (атрибуты), присущие объектам (например, размер шрифта, название и др.).



Инкапсуляция. Объект, с одной стороны обладает определенными свойствами, которые характеризуют его состояние в данный момент времени, а, с другой стороны, над ним возможны операции, которые приводят к изменению этих свойств. Таким образом, объект объединяет в себе как описывающие его данные (свойства), так и средства обработки этих данных (методы).

Инкапсуляцией называется объединение в объекте его свойств и возможных над ним операций (методов). В ООП используется определенная форма записи при работе с объектами. Вызов метода выполняющего действия над тем или другим объектом, записывается следующим образом: ОБЪЕКТ. МЕТОД.
Лекция №4.Общие сведения о языке Python и особенности его стиля программирования. Основные элементы языка Python. Синтаксис и управляющие конструкции языка Python.язык программирования
Языки программирования — это формальные языки, предназначенные для записи алго-ритмов, исполнителем которых будет компьютер. Записи алгоритмов на языках программирова-ния называются программами.

Как и люди, компьютеры «говорят» на разных языках, только языки эти — компьютерные. Компьютерный язык служит для того, чтобы переговариваться с компьютером, используя ко-манды, понятные и компьютеру, и человеку. Некоторые языки программирования названы в честь людей (например, Ада и Паскаль), другие названия являются простыми акронимами, то есть аббревиатурой (к примеру, BASIC — от англ. Beginner’s All-purpose Symbolic Instruction Code, универсальный код символических инструкций для начинающих), и уж совсем немногие языки названы в честь телевизионных шоу — как Python. О да, язык программирования Python (произносится «Пайтон», с ударением на первый слог, хотя имейте в виду, что в России многие называют язык просто «питон») получил свое имя благодаря телешоу «Летающий цирк Монти Пайтона», так что змея питон здесь вовсе ни при чем.


Python – язык программирования высокого уровня, предназначенный для самого широ-кого круга задач. С его помощью можно обрабатывать различные данные, создавать изображе-ния, работать с базами данных, разрабатывать Web-сайты.
Разработка языка Python была начата в конце 1980-х годов сотрудником голландского ин-ститута CWI Гвидо ван Россумом. Опубликован исходный текст в феврале 1991 года.
Чтобы установить Python в системе Microsoft, откройте веб-браузер, введите адрес http://www.python.org/ и скачайте последнюю версию программы-установщика Python 3 для Windows (для этого зайдите в меню Downloads и выберите Windows).

Алфавит и словарь языка

Основой языка программирования Python, как и любого другого языка, является алфавит — набор допустимых символов, которые можно использовать для записи программы. Это:


латинские прописные и строчные буквы (А, В, С, ..., X, Y, Z, а, b, с, ..., х, у, z);
русские прописные и строчные буквы (можно использовать, но это является очень пло-хим стилем);
арабские цифры (0, 1, 2, ..., 7, 8, 9);
специальные символы (знак подчёркивания; знаки препинания; круглые, квадратные скобки; знаки арифметических операций, # - знак комментарий и др.).


  • качестве неделимых элементов (составных символов) рассматриваются следующие по-следовательности символов:

>= и <= (знаки ≥ и ≤);

""" и """ или ''' и ''' – утроенные кавычки или апострофы (начало и конец комментария).


  • языке существует также некоторое количество различных цепочек символов, рассмат-риваемых как единые смысловые элементы с фиксированным значением. Такие цепочки симво-лов называются служебными словами. В таблице 3.1 приведены основные служебные слова, которые мы будем использовать при записи программ на языке Python.

Для обозначения переменных, программ и других объектов используются имена — любые отличные от служебных слов последовательности букв, цифр и символа подчёркивания, начина-ющиеся с буквы или символа подчёркивания.



Прописные и строчные буквы в именах различаются, например, f и F – две разные пере-менные.
Длина имени может быть любой. Для удобства мы будем использовать имена, передаю-щие смысл объекта.





Таблица 3.1

Служебное слово языка Python

Значение служебного слова




and

и




break

прервать




else

иначе




False

ложь




float

вещественный (с плавающей точкой)




for

для




if

если




input

ввод




integer

целый




list

список




or

или




print

печать




string

строковый (цепочка символов)




True

истина




while

пока





Типы данных, используемые в языке Python

  • языке Python используются различные типы данных. Мы будем пользоваться некото-рыми из так называемых простых типов данных (табл. 3.2).
















Таблица 3.2

Название

Обозначение

Допустимые значения

Пример




Целочисленный

int (integer)

сколь угодно большие, размер

325










ограничен оперативной памя-













тью







Вещественный

float

Любые числа с дробной ча-

9.23 0.0

-1.7e-6







стью







Строковый

str (string)

Любые символы из таблицы

"hello! "

"x="







Unicode







Логический

bool (boolean)

False и True






В вещественном числе целая часть от дробной отделяется точкой, при этом перед точкой




  1. после неё должно быть, по крайней мере, по одной цифре. Пробелы внутри числа недопустимы.


Тип переменной определяется в тот момент, когда ей присваивается новое значение.

Первая программа на языке Python

Изучение языков программирования принято начинать с программы, выдающей надпись:

«Привет, мир!». Посмотрим, как это будет выглядеть на Python:

Программа 0




  1. Выводим надпись с помощью функции print() print ("Привет, мир! ")

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




  • через командную строку (в интерактивном режиме), когда каждая введённая команда сразу выполняется; программном режиме, когда программа сначала записывается в файл (обычно имеющий расширение .ру)

Для запуска программы выбираем в меню Пуск Программы-Python 3.? -IDLE. В резуль-тате откроется окно PythonShell, в котором символы >>> означают приглашение ввести команду. После ввода строки нажимаем клавишу Enter. На следующей строке сразу отобразиться резуль-тат, а далее приглашение для ввода новой команды. Последовательность выполнения показана ниже:




Примечание: символы >>> вводить не нужно, они вставляются автоматически
Для создания файла с программой в меню File выбираем пункт NewFile. В открывшемся окне набираем код Программы 0, а затем сохраняем его под именем test.py, выбрав пункт меню File-SaveAs. Запустить программу на выполнение можно, выбрав пункт меню Run-RunModule или нажав клавишу F5.

Оператор присваивания. Вычисления
Общий вид оператора:

<имя переменной> = <значение или вычисляемое выражение>

Операция присваивания допустима для всех приведённых в табл. 3.2 типов данных. При-

меры:

a = 25



  • = "Привет"

  • = 1.4 + 5.7 * a

  • = a < c

Выражения в языке Python конструируются по рассмотренным ранее правилам для алго-ритмического языка.


Нельзя указывать в правой части выражения переменные, которые не были заранее со-зданы (определены). Так для переменных c и d все входящие переменные были заданы выше. Следующая строка ошибочна
f = x * (a + c) / 3

так как переменная x из правой части ранее не была создана.




  1. Python разрешено множественное присваивание. Запись а = b = 0 равносильна паре операторов b = 0; а = 0

Так же часто используют сокращенную запись арифметических операций:
сокращенная запись полная запись


a += b

  • -= b

  • *= b

  • /= b




  1. = а + b

  2. = а - b




  1. = а * b

  2. = а / b





Вопросы и задания


  • Почему язык программирования Python считается универсальным?




  • Что входит в состав алфавита языка Python?




  • Каких требований следует придерживаться при выборе имён для различных объектов в языке

Python?


  • В чём разница между числами 100 и 100.0 в языке Python?




  • Какой тип данных возможен для вычисления: а) значения функции у = х2; б) площади прямоугольника;

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




  • Запишите оператор для:

а) вычисления среднего арифметического переменных x1 и х2; б) уменьшения на единицу значения переменной k;


в) увеличения на единицу значения переменной i;
г) вычисления стоимости покупки, состоящей из нескольких тетрадей, нескольких ручек и нескольких карандашей.



Достарыңызбен бөлісу:
1   2   3   4   5   6   7   8   9   ...   37




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет