Методические рекомендации по выполнению лабораторных работ по курсу "Информатика"

Изучение структуры информатики; основные понятия информационных процессов, их применение. Разработка методов и приемов выполнения лабораторных работ: тематическое содержание и цель, теоретические сведения по теме, перечень заданий и контрольных вопросов.

Рубрика Программирование, компьютеры и кибернетика
Вид лабораторная работа
Язык русский
Дата добавления 12.02.2012
Размер файла 4,0 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

В отличие от динамических, статические ЗУПВ не требуют регенерации и время доступа к ним совпадает с длительностью цикла. Для микросхем, использующих примерно одну и ту же технологию, емкость ДЗУВП по грубым оценкам в 4 - 8 раз превышает емкость СЗУПВ, но последние имеют в 8 - 16 раз меньшую длительность цикла и большую стоимость. По этим причинам в основной памяти практически любого компьютера, проданного после 1975 года, использовались полупроводниковые микросхемы ДЗУПВ (для построения кэш-памяти при этом применялись СЗУПВ). Естественно были и исключения, например, в оперативной памяти суперкомпьютеров компании Cray Research использовались микросхемы СЗУПВ.

Для обеспечения сбалансированности системы с ростом скорости процессоров должна линейно расти и емкость основной памяти. В последние годы емкость микросхем динамической памяти учетверялась каждые три года, увеличиваясь примерно на 60% в год. К сожалению скорость этих схем за этот же период росла гораздо меньшими темпами (примерно на 7% в год). В то же время производительность процессоров начиная с 1987 года практически увеличивалась на 50% в год.

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

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

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

Задания для самостоятельного выполнения

Проанализировать конфигурацию ПК на основе примера.

Конфигурация ПК № _ПРИМЕР_

Позиция

Значение

Источник получения

тип процессора и его тактовая частота

Intel Celeron 413MHz

POST, SysInfo

наличие арифметического сопроцессора

Встроенный

POST

наличие КЭШ, объем

128 Kb

POST

объем ОЗУ и его тип

128 Mb, sync SDRAM

POST, SysInfo, Dos Navigator

наличие высокоскоростных шин передачи данных

ISA, PCI

POST, SysInfo

тип интерфейса дисковой подсистемы; к какой шине подключен

IDE mode LBA

POST, SysInfo, Dos Navigator

количество твердых дисковых накопителей (HDD - Hard Disk Drive) и объема памяти (общей и свободной)

1 диск : 4,00 Gb общей, 990 Mb свободной

POST, SysInfo, Dos Navigator

скорость передачи данных и время доступа для HDD

Нет данных

наличие накопителя на гибких дисках (FDD - Floppy Disk Drive) и их размеры в дюймах и байтах

1 FDD 3.5” 1.44 Mb

POST, SysInfo, Dos Navigator

перечень параллельных и последовательных портов (LPT и COM)

1 параллельный LPT, 2 serial COM1 и COM2

POST, SysInfo, Dos Navigator

тип видеокарты и объем памяти

Intel 740, 8Mb

POST, Windows 95: свойства «Мой компьютер»

тип монитора

Sumsung SyncMaster 15GLe 15”

Windows 95: свойства «Мой компьютер»

версию и производителя BIOS

Extention V1.0A Award Software

версия операционной системы

Windows 98

Windows 98: свойства «Мой компьютер»

перечень имеющегося периферийного, сетевого и коммуникационного оборудования

Сканер, модем

Windows 98 свойства «Мой компьютер»

Лабораторное занятие 7 (1 час)

Тема: Алгоритмы. Основы разработки алгоритмов

Цель занятия: изучить стратегию решения задач, алгоритмы, их свойства, стратегию реализации алгоритмов

Задание:

1. Рассмотреть стратегию решения задач, алгоритмы и поиск решения

2. Дать характеристику свойствам алгоритмов

3. Изучить стратегию реализации алгоритмов

4. Решение задач на составление алгоритмов

5. Составить отчет

Теоретические сведения

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

достать ключ;

вставить ключ в замочную скважину;

повернуть ключ 2 раза против часовой стрелки;

вынуть ключ.

В алгоритме важен не только набор действий, но и строгий порядок их выполнения. Если переставить второе и третье действия, то получим:

достать ключ;

повернуть ключ 2 раза против часовой стрелки;

вставить ключ в замочную скважину;

вынуть ключ.

Этот алгоритм, конечно, тоже можно выполнить. Но дверь вряд ли откроется. А если поменять местами 1 и 3 пункты во втором алгоритме, то он станет вообще невыполнимым.

Любой алгоритм существует не сам по себе, а предназначен для определенного исполнителя. Исполнитель - это объект, который способен обрабатывать данные и исполнять набор определенных действий. Для каждого исполнителя определена система команд. Система команд исполнителя есть множество команд, которые он может выполнять исполнитель. Алгоритм описывается в командах того исполнителя, который этот алгоритм будет выполнять. Объекты, над которыми исполнитель может совершать действия, образуют так называемую среду исполнителя. Исходные данные и результаты любого алгоритма всегда принадлежат среде того исполнителя, для которого предназначен алгоритм. Необходимо осознать, что исполнитель всегда четко следует командам алгоритма, не «размышляя» над их содержанием. Например, при переходе улицы мы часто пользуемся простым алгоритмом «посмотри налево, если машины нет, то дойди до середины, посмотри направо и т.д.». Как должен поступить исполнитель в ситуации, если машина слева есть, но она стоит сломанная, ей меняют колесо? Исполнитель обязан стоять и ждать! Теперь сформулируем одно из возможных неформальных определений алгоритма.

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

Из сказанного выше видно, что алгоритм не существует сам по себе, а предназначен для исполнения кем-либо с использованием чего-либо. Поэтому при решении задач соединяют эти понятия в алгоритмической модели. Алгоритмическая модель - это совокупность данных, алгоритма и исполнителя. Целью создания алгоритмической модели является получение некоторого результата путем управления исполнителем. Данные подразделяются на входные, промежуточные и выходные. Входные данные алгоритма - это информация, необходимая для получения результата. Выходные данные - это информация, представляющая результат выполнения алгоритма. Промежуточные данные - это информация, которая получается на основании исходной и требуется для получения результата. Например, для алгоритма решения квадратного уравнения входными данными являются коэффициенты уравнения, к промежуточным относится дискриминант, а выходными являются корни уравнения или сообщение об отсутствии решения.

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

Понятность. Первое свойство напрямую связано с понятием исполнителя. При составлении алгоритма нужно обязательно учитывать «правила игры», т.е. систему предписаний (или систему команд), которые понимает исполнитель. Поэтому, прежде чем составлять алгоритм решения задачи, надо узнать, какие действия способен выполнять выбранный нами исполнитель алгоритма. Например, нельзя задавать человеку действия: перемножить 3 шестизначных числа в уме, а компьютеру: пройти 2 квартала прямо. Эти действия окажутся невыполнимы. При составлении алгоритма можно использовать только допустимые действия. Например, чтобы решить уравнение х2 -9х + 8 = 0, ученику 10 класса достаточно дать следующий алгоритм:

решить уравнение;

сообщить результат.

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

вычислить значение выражения 92 - 4 8 (дискриминант);

извлечь из полученного числа квадратный корень и обозначить результат буквой d;

вычислить значения (9 + d)/2 и (9 -d)/2;

сообщить результат.

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

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

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

Однозначность. Будучи понятным, алгоритм не должен содержать предписаний, смысл которых может восприниматься неоднозначно. Этими свойствами часто не обладают предписания и инструкции, которые составляются для людей. Например, в рецепте приготовления омлета сказано Разбить в эту смесь 3 яйца и все хорошо взбить». На бытовом уровне нам понятно, что речь идет о трех куриных яйцах (а каких еще! - скажете вы). Но яйца могут быть и голубиные, и утиные, и даже страусиные (все резко отличаются по величине друг от друга). Здесь явно «закралась» неоднозначность. Указания типа посолить по вкусу», «насыпать две-три ложки сахарного песку», «получил оценку 4 или 5», «жарить до готовности», «копать от забора до обеда» не могут встречаться в алгоритмах. Очевидно, что понятные в определенных ситуациях для человека предписания могут поставить в тупик компьютер. Кроме того, в алгоритмах недопустимы такие ситуации, когда после выполнения очередного предписания исполнителю неясно, какое из них должно выполняться на следующем шаге.

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

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

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

Массовость. Очень важно, чтобы составленный алгоритм обеспечивал решение не одной частной задачи, а мог выполнять решение широкого класса задач данного типа. Например, необходимо решить конкретное квадратное уравнение х2 - Ах + 3 = 0. Но ведь можно составить алгоритм решения любого квадратного уравнения вида ах + bх + с = 0. Действительно, для случая, когда дискриминант D = b2 - Аас > 0, корни квадратного уравнения можно найти по известным формулам, если же D < 0, то действительных корней не существует. Таким образом, этот алгоритм можно использовать для любого квадратного уравнения.

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

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

Результативность. По определению алгоритма его выполнение должно приводить к получению определенных результатов.

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

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

Нa практике наиболее распространены следующие формы записи алгоритмов:

1) словесная;

2) формульно-словесная;

3) операторные схемы;

4) графическая;

5) на псевдокоде;

6) на алгоритмическом языке.

Словесная форма записи алгоритма представляет собой описание на естественном языке последовательных этапов обработки данных

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

Например:

Y = 5*x

шаг 1: прочитать x

шаг 2: умножить x на 5

шаг 3: вывести y

Формульно-словесная форма задается с помощью математических формул с пояснением.

Например:

шаг 1: прочитать x

шаг 2: вычислить 5*x - 1

шаг 3: вычислить

шаг 4: умножить 8*

шаг 5: шаг 2 разделить на шаг 4

шаг 6: вывести y

Операторные схемы - алгоритм представляется с помощью операторов:

В - ввод исходных данных

А- арифметические операции

П - вывод

Р - логический оператор

Я - оператор остановки

Операторы имеют номера и индексы в соответствии с порядком их следования. Логический оператор записывается как функция, аргументом которой служит проверяемое условие: Р (x > 0). Операторы выполняются последовательно. Только логический оператор может прервать эту последовательность.

Пример: y =

№ п\п

Символ оператора

Содержание

1.

В1

Ввод исходных данных

2.

Р2( x > 0)

Проверка логического условия ( x > 0)

3.

A3

Вычисление y = x + 1

4.

A4

Вычисление y = x - 1

5.

П5

Печать вычисленного y

6.

Я6

Остановка

В1Р2( x > 0) A34 П5Я6 _- операторная схема

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

Основные блоки:

Начало, конец

Ввод, вывод

Выполнение различных операций

Логический блок (выбор направления в зависимости от условий)

Ввод-вывод данных, носителем которых служит бумага

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

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

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

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

Большинство языков программирования относятся к алгоритмическим языкам. Запись алгоритма на алгоритмическом языке называют программой.

Задания для самостоятельного выполнения

Вариант 1. Записать алгоритм вычисления значения y, используя словесную форму описания алгоритма.

Y = (2x + 5)(3)

Вариант 2. Записать алгоритм вычисления значения С, используя формульно-словесную форму описания алгоритма.

С = Sinx+ x- 5

Вариант 3. Используя формульно-словесную форму описания алгоритма, вычислить:

Y =

Вариант 4. Используя словесную форму описания алгоритма, вычислить сумму 10-ти чисел.

Вариант 5. Используя словесную форму описания алгоритма, вычислить произведение 5-ти чисел.

Вариант 6. Используя формульно-словесную форму описания алгоритма, вычислить:

A = 3x - tg x

Задание 7. Используя операторную схему описания алгоритма, вычислить:

D =

Вариант 8. Используя словесную форму описания алгоритма, вычислить:

Вариант 9. Используя формульно-словесную форму описания алгоритма, вычислить:

Y =

Вариант 10. Используя операторную схему описания алгоритма, вычислить:

Y=

Вариант 11. Используя операторную форму описания алгоритма, вычислить:

Вариант 12. Используя операторную схему описания алгоритма, вычислить:

К = x - ln x

Вариант 13. Используя словесную форму описания алгоритма, вычислить:

A = lnx +

Вариант 14. Используя операторную схему описания алгоритма, вычислить:

Y =

Вариант 15. Используя операторную форму описания алгоритма, вычислить:

C = 3y + lny

Вариант 16. Используя словесную форму описания алгоритма, вычислить:

Y = Cosx +

Вариант 17. Используя операторную форму описания алгоритма, вычислить:

Вариант 18. Используя формульно-словесную форму описания алгоритма, вычислить:

y =cosx + sinx - tgx

Вариант 19. Используя словесную форму описания алгоритма, вычислить:

K =

Вариант 20. Используя операторную форму описания алгоритма, вычислить:

B=

Лабораторное занятие 8 (1 час)

Тема: Структуры данных. Блок-схемы

Цель занятия: рассмотреть структуры данных (типы, массивы, строки), построить блок-схемы на различные типы алгоритмических структур, произвести анализ алгоритмов.

Задание:

1. Изучить структуры данных

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

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

4. Осуществить анализ алгоритмов

5. Составить отчет

Методические указания по выполнению работы

В зависимости от особенностей своего построения алгоритмы делятся на три основные группы:

1. Линейные;

2. Разветвляющиеся;

3. Циклические.

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

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

Структура такого алгоритма показана на рисунке 8.1.

Рисунок 8.1 Линейный алгоритм

Рассмотрим составление схем линейных алгоритмов на конкретных примерах.

Пример 1. Даны переменные А и В. Требуется обменять их значения, т.е. переменная А должна получить значение В, а В - значение А.

Решение.

1. Исходные данные: А, В. Вспомогательная переменная DOP. Результат: А, В.

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

Решение задачи распадается на три этапа. Соответствующие им блоки и порядок их выполнения изображены на схеме алгоритма (рисунок 8.2).

Рисунок 8.2 Алгоритм решения примера 1

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

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

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

В частном случае может отсутствовать один из блоков "Действие 1" или "Действие 2".

Пусть, например, В - проверяемое условие, а s1, s2 - некоторые выполняемые инструкции (действия). Тогда:

Если условие В выполняется (истинно), то

выбрать для исполнения s1,

иначе

выбрать для исполнения s2

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

Рисунок 8.3 Блок-схема ветвящегося алгоритма

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

Пример 2. Найти максимальное из двух чисел X,Z: Y = max{X,Z}.

Решение.

Исходные данные: X,Z.

Результат: Max.

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

Рисунок 8.4 Алгоритм решения примера 2

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

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

Примеры циклических алгоритмов может служить алгоритм покраски забора.

Действительно, рассмотрим этот алгоритм в словесно-формульном виде:

Шаг I. Подготовить исходные данные (забор, краску, кисть);

Шаг II. Подойти к забору;

Шаг III. Обмакнуть кисть в краску;

Шаг IV. Нанести краску кистью на поверхность забора;

Шаг V. Если забор еще не весь окрашен, то повторить алгоритм, начиная с пункта (Шаг III).

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

1. Инструкция "цикл с параметром" (цикл с заданным количеством повторений).

Обозначим:

x - параметр цикла (является счетчиком количества повторений);

a, b - соответственно начальные и конечные значения параметра цикла;

h - шаг, с которым изменяется параметр цикла;

S - Оператор (инструкция), повторяемый в цикле;

Общий вид структуры цикла с параметром будет:

2. Инструкция "цикл с предусловием" (цикл-"пока"):

Обозначим:

В - некоторое проверяемое логическое условие;

S - Оператор (инструкция), повторяемый в цикле;

Блок-схема такого цикла имеет вид:

3. Инструкция "цикл с постусловием" (цикл-"до"):

Блок-схема такого цикла имеет вид:

Пример 3. Дан массив А, состоящий из 20 - ти чисел. Найти сумму элементов меньше Б.

Решение:

Решение.

Исходные данные: X,Z.

Результат: Max.

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

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Рисунок 8.5 Алгоритм решения примера 3

Задания для самостоятельного выполнения

Построить блок-схемы алгоритмов задач, указанных в лабораторной работе 7

Лабораторное занятие 9 (1 час)

Тема: Языки программирования

Цель занятия: изучить классификацию языков программирования, основные конструкции программирования

Задание:

1. Рассмотреть классификацию современных языков программирования

2. Охарактеризовать свойства языков программирования

3. Изучить основные кострукции программирования

4. Привести примеры программ на изученных ранее языках программирования

5. Составить отчет

Теоретические сведения

Алфавитом - называется произвольное конечное множество попарно различимых символов.

Язык - это знаковая (семиотическая) система, обладающая определенными средствами выражения знаний - алфавитом, словарем и грамматикой.

Как мы отмечали ранее, любой язык (тоже) принадлежит множеству знаковых систем. Его знаками, являются слова и словосочетания. Любой язык отражается в своей грамматике и словаре, и алфавите. Определение алфавита:

Словарный состав или лексика языка - это совокупность употребляемых в нем слов, т.е. правильных слов данного языка.

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

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

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

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

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

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

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

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

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

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

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

Большинство производственных задач решают с помощью программ, написанных на процедурно - ориентированных языках. Средства этих языков позволяют наиболее просто описать часто встречающиеся фрагменты действий в соответствующих задачах. Процедурно-ориентированные языки предполагают знания пользователя в области математических (численных) методов и основ алгоритмизации (базовый язык для научно-технических расчетов ФОРТРАН, БЕЙСИК (персональные ЭВМ - основной), современный ПАСКАЛЬ).

В процессе развития созданы многоцелевые (универсальные) языки программирования, объединяющие основные средства и возможности многих процедурно - ориентированных языков, например: ПЛ/1 - используемый для решения задач обработки экономической и научно-технической информации, задач управления объектами и т.п.; язык АДА - многоцелевой стандартный язык, способный заменить множество других языков и на длительный период обеспечить разработку и совершенствования программ обеспечения; язык МОДУЛА - объединяет средства и особенности машинно-ориентированных и процедурно - ориентированных языков; включает средства для написания подпрограмм управления устройствами, управления потоками сообщений, для чего традиционно использовались языки ассемблерного типа.

Для пользователей, не имеющих специальной подготовки, но нуждающихся в оперативном использовании ЭВМ для решения стереотипных задач, разрабатываются специальные проблемно - ориентированные языки (непроцедурные), которые не требуют подробной записи алгоритма решения задачи. На таком языке лишь формулируется задача и указывается последовательность подзадач из готового набора с указанием исходных данных и форм требуемых документов. Специальные средства программы-генераторы из готовых блоков автоматически формируют программу для решения поставленной задачи. Эти языки ещё более высокого уровня, т.е. удалены от машины более, чем процедурно - ориентируемые языки. К ним относятся языки для задания и обработки таблиц данных при решении экономических задач, а также языки моделирования сложных систем СИМУЛА, НЕДИС и другие (СИМСКРИПТ).

Граница между проблемно - и процедурно - ориентированными языками очерчена не очень чётко (условно). ЛИСП, ПРОЛОГ.

Вне зависимости от того, на каком алгоритмическом языке создается программа, этапы подготовки и решения задач на ЭВМ выглядят следующим образом:

1. Постановка задачи: подробная формулировка задачи, выбор метода решения.

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

2. Алгоритмизация задачи: формулировка и составление алгоритма.

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

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

3. Составление программы.

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

4. Перенос программы на машинный носитель.

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

На этом этапе происходит первоначальная трансляция программы и её редактирование - исключение синтаксических ошибок.

5. Отладка программы:

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

6. Анализ результатов решения:

На этом этапе анализируются полученные результаты, на основании этого анализа делаются выводы о правильности выбранного метода решения и составлении алгоритма, вырабатываются рекомендации по модернизации программы; составляются описание и инструкция по эксплуатации программы.

Контрольные вопросы

1. Что такое алфавит?

2. Что такое язык?

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

4. Что такое машинно-ориентированные языки программирования?

5. Что такое процедурно-ориентированные языки программирования?

6. Что происходит в процессе постановки задачи?

7. Что происходит в процессе составления программы?

8. Что происходит в процессе отладки программы?

9. Что происходит в процессе анализа результатов решения?

10. Что происходит в процессе переноса программы на машинный носитель?

Лабораторное занятие 10 (1 час)

Тема: Парадигмы программирования

Цель занятия: ознакомиться с парадигмами программирования

Задание:

1. Изучить процедурное программирование

2. Рассмотреть концепции модульного и структурного программирования

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

4. Привести примеры языков программирования

5. Составить отчет

Теоретические сведения

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

Ш императивная;

Ш функциональная;

Ш декларативная;

Ш объектно-ориентированная.

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

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

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

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

Процедурные языки программирования

· Ada (язык общего назначения)

· Basic (версии начиная с Quick Basic до появления Visual Basic)

· Си

· КОБОЛ

· Фортран

· Модула-2

· Pascal

· ПЛ/1

· Рапира

· REXX

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

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

Основные концепции модульного программирования:

· каждый модуль реализует единственную независимую функцию;

· каждый модуль имеет единственную точку входа и выхода;

· размер модуля по возможности должен быть минимизирован;

· каждый модуль может быть разработан и закодирован различными членами бригады программистов и может быть отдельно протестирован;

· вся система построена из модулей;

· модуль не должен давать побочных эффектов;

· каждый модуль не зависит от того, как реализованы другие модули.

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

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

Концепция модульного программирования реализована в ряде языков, таких как Modula 2, Turbo Pascal 5.0 и выше, C, и др.

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

Структурное программирование -- методология разработки программного обеспечения, в основе которой лежит представление программы в виде иерархической структуры блоков. Предложена в 70-х годах XX века Э. Дейкстрой, разработана и дополнена Н. Виртом.

В соответствии с данной методологией

1. Любая программа представляет собой структуру, построенную из трёх типов базовых конструкций:

o последовательное исполнение -- однократное выполнение операций в том порядке, в котором они записаны в тексте программы;

o ветвление -- однократное выполнение одной из двух или более операций, в зависимости от выполнения некоторого заданного условия;

o цикл -- многократное исполнение одной и той же операции до тех пор, пока выполняется некоторое заданное условие (условие продолжения цикла).

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

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

3. Разработка программы ведётся пошагово, методом «сверху вниз».

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

Задания для самостоятельного выполнения

Подготовить доклад о современном языке программирования

Лабораторное занятие 11 (1 час)

Тема: Основные элементы языка программирования Visual Basic for Application (VBA)

Цель занятия: ознакомиться с алфавитом и лексемами языка, рассмотреть элементы языка VBA

Задание:

1. Изучить основы синтаксиса и семантики языка программирования VBA

2. Рассмотреть алфавит, лексемы языка, переменные, константы, присваивание, типы данных

3. Привести примеры

4. Составить отчет

Теоретические сведения

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

Команду можно пометить номером (целым числом: 10, 20, 35 и т.п.) или меткой. Метка - это произвольное обозначение, которое начинается с латинской буквы и заканчивается двоеточием, например: а1:, ВС400:, vivod: - и т.п. С помощью номера или метки можно ссылаться на помеченную команду в других командах. В среде VBA все строки (как в старых версиях) нумеровать необязательно.

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

А = 5 : В$ = «Символ Т» : rm = 1+exp(5.2)

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

1) С помощью оператора REM:

REM произвольный_текст

2) С помощью апострофа':

' произвольный_текст

VBA при исполнении программы игнорирует комментарии.

Алфавит (набор символов) языка VBA включает:

- все латинские прописные и строчные буквы;

- арабские цифры (0-9);

- служебные знаки.

Служебные знаки используются в качестве знаков операций (+,-,*,:,= и т.д.), специальных символов (. , : ; ?) и суффиксов.

Данные можно представлять переменными и константами.

Переменная - это величина, которая в процессе выполнения программы может менять свое значение.

Имя переменной - это произвольный набор символов, который может содержать от 1 до 40 символов, причем первый символ должен быть латинской буквой, а остальные - латинскими буквами или цифрами.

Константа (числовая или символьная) - это величина, которая не меняет своего значения в ходе программы. Значения констант записываются явно - числом или строкой символов, или с помощью специального оператора, например:

a% = 1.2 : z$ = “Москва - Париж” или CONST P3 = 60, n% = 12

CONST имя_ константы = значение

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

В Visual Basic переменные хранят информацию. При их использовании Visual Basic резервирует область памяти в компьютере. Имена переменных могут достигать 255 символов в длину. Начинаются они с буквы, за которой могут следовать другие буквы, цифры или символы подчёркивания. Регистр символов значения не имеет. В качестве имён новых переменных нельзя использовать зарезервированные слова. Например: Print. Однако такие слова могут присутствовать как часть имени переменной, например PrintIt.

Visual Basic работает с 14-стандартными типами переменных, кроме того программист может определить собственный тип данных. Основными из них являются:

String - строковые переменные хранят символы. Один из способов обозначить данный тип переменной состоит в добавлении символа «$» к концу его имени. Например - АВС$. Такая переменная может содержать до 2 млрд. символов.

Integer - целочисленные переменные могут хранить только относительно небольшие целые числа в диапазоне от - 32768 до + 32767. Для обозначения такого типа используется символ «%».

Например: А%=5.

Long Integer - в таких переменных хранятся целые значения от - 2,15* 109 до +2,15* 109. Обозначается символом «&». Например: В&=1234567

Single Precision - идентификатор для данных чисел является символ «!». Данный тип позволяет хранить дробные числа с точностью до 7 знаков. Это означает, что если получается результат «12345678.97» то часть «8.97» не является точной. Результат может быть равен, к примеру «12345670.01».

Действия выполняются медленнее, чем с целочисленными переменными. Диапазон от -3,4*1038 до -1,4*10-45 для отрицательных чисел и от 1,4*10 -45 до 3,4*1038 для положительных.

Double Precision - переменные такого типа позволяют хранить числа с точностью до 16 цифр и длинной до 300 символов. Идентификатором является символ «#». Скорость вычисления с ними относительно не большая.

Currency - он создан для того чтобы избежать ошибок при преобразовании десятичных чисел в двоичную систему и наоборот. Данный тип может иметь до 4 цифр после запятой и до 15 перед ней. Внутри данного диапазона вычисления будут точными. Идентификатор представляет собой «@».

Date - этот тип данных позволяет хранить значение времени и даты в промежутке от полуночи 1 января 100 года до полуночи 31 декабря 9999 года. Такие значения в тексте программы обозначаются символами «#».

Например - Millenium = # January 1, 2001#

Byte - этот тип предназначен для хранения целых чисел от 0 до 255. Его использование позволяет сильно экономить оперативную память (1 байт) и уменьшить размер массивов.

Boolean - булев тип данных может хранить только два значения: True либо False.

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

Большинство людей предпочитают не использовать идентификаторы для обозначения переменных. Вместо этого они используют оператор Dim, такая операция носит название - объявления. Например:

Dim A As Integer

Объявления переменных можно комбинировать в одной строке.

Dim A As Integer, Name As Integer

Общей ошибкой является использование следующего выражения:

Dim X, Y, Z As Integer

В предположение того, все переменные будут целочисленные. Фактически X и Y будут объявлены как Variant и только Z как Integer. Чтобы избежать этого, необходимо каждый раз использовать идентификатор типа. При присвоении переменной типа Variant, можно использовать оператор - Dim без приставки - AS. Например:

Dim FOO

Одной из наиболее общих ошибок в программе является использование необъявленных переменных. Проблема состоит в том, что Visual Basic позволяет создать переменную, как только она один раз встречается в программе. Если перепутать имя переменной Visual Basic создает новую с похожим именем и присваивает ей значение по умолчанию, что тут же приводит к ошибке. Эту ошибку трудно обнаружить, поскольку имена переменных очень похожи.

Простейший способ избежать подобной ошибки состоит в принудительном объявлении всех переменных. Visual Basic при ошибке в имени выдаёт сообщение. В Visual Basic предусмотрена такая возможность, но по умолчанию она не используется. Оператор, необходимый для этого называется Option Explicit.

Для общей проверки переменных в программе необходимо оператор Option Explicit разместить в раздел General.

Для того чтобы разместить данный оператор в разделе General необходимо:

1) Открыть окно Code

2) Выбрать объект General из списка объектов в окне Object

3) Выбрать Declaration из списка Procedure

4) Ввести Option Explicit.

Программисты применяют термин - область видимости, когда хотят сказать о возможности использования переменной из одной части программы в другой её части. В Visual Basic переменные объявление внутри процедуры является изолированными друг от друга. В терминах программирования это означает, что данные переменные являются локальными.

Кроме того, Visual Basic позволяет объявить переменные, которые будут доступны для всех процедур формы. Такие переменные называют глобальными переменными уровня формы, как и оператор Option Explicit - объявление переменных уровня формы происходит в разделе Declaration

Задания для самостоятельной работы

Подготовить вопросы для команды-соперника

Лабораторное занятие 12 (1 час)

Тема Операторы, выражения, операции»

Цель занятия: изучить операторы, выражения и операции

Задание:

1. Рассмотреть операторы присваивания в VBA

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

3. Рассмотреть выражения

4. Привести примеры

5. Составить отчет

Теоретические сведения

Арифметические выражения - это выражения, которые содержат числа в явном виде, переменные, константы, функции, а также знаки арифметических действий (+, -, *, /, ^). Значением арифметического выражения является число.

В VBA употребляются еще два знака арифметических операций:


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.