Сайт о телевидении

Сайт о телевидении

» » Алгоритмы и программы. Сегментное распределение памяти. Сервисы для разработки блок-схем

Алгоритмы и программы. Сегментное распределение памяти. Сервисы для разработки блок-схем

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

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

Термин алгоритм происходит от имени средневекового узбекского математика Аль-Хорезми, который еще в IX в. (825 г.) дал правила выполнения четырех арифметических действий в десятичной системе счисления. Процесс выполнения арифметических действий был назван алгоризмом.

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

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

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

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

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

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

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

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

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

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

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

Приведем пример словесного представления алгоритма на примере нахождения произведения п натуральных чисел (с= п = = 1 х 2 х 3 х 4 х... х п).

Этот процесс может быть записан в виде следующей системы последовательных указаний (пунктов):

  • 1. Полагаем с равным единице и переходим к следующему пункту.
  • 2. Полагаем / равным единице и переходим к следующему пункту.
  • 3. Полагаем с равным с=сх/ и переходим к следующему указанию.
  • 4. Проверяем, равно ли /" числу п. Если / = п, то вычисления прекращаем. Если / п, то увеличиваем / на единицу и переходим к пункту 3.

Классификация и свойства алгоритмов

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

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

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

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

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

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

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

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

Еще одно важное требование, предъявляемое к алгоритмам, - результативность (или конечность) алгоритма. Оно означает, что исполнение алгоритма должно закончиться за конечное число шагов.

Поскольку разработка алгоритмов - процесс творческий, требующий умственных усилий и затрат времени, предпочтительно разрабатывать алгоритмы, обеспечивающие решения всего класса задач данного типа. Например, если составляется алгоритм решения кубического уравнения ах 3 + Ьх 2 + сх + с1 = 0, то он должен быть вариативен, т. е. обеспечивать возможность решения для любых допустимых исходных значений коэффициентов а, Ь, с, с1. Про такой алгоритм говорят, что он удовлетворяет требованию массовости. Свойство массовости не является необходимым свойством алгоритма. Оно, скорее, определяет качество алгоритма; в то же время свойства точности, понятности и конечности являются необходимыми (иначе это не алгоритм).

Запись алгоритмов в виде блок-схем

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

Схема алгоритма - графическое представление алгоритма, дополняемое элементами словесной записи. Каждый пункт алгоритма отображается на схеме некоторой геометрической фигурой или блоком. При этом правило выполнения схем алгоритмов регламентирует ГОСТ 19.002-80 «Единая система программной документации» (табл. 1.28).

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

Таблица 1.28. Основные элементы блок-схем

Наименование

по ГОСТ 19.003-80 (ЕСПД):а = 10,15,20 мм; b = ^, 5а

Блок вычислений

Вычислительные действия или последовательность действий

Логический

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

Блок ввода-

  • 1. Общие обозначения ввода (вывода) данных (вне зависимости от физического носителя).
  • 2. Вывод данных, носителем которых является документ

Начало или конец алгоритма, вход в программу или выход из нее

г = а/4

Процесс пользователя (подпрограмма)

Вычисление по стандартной программе или подпрограмме

модификации

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

Соединитель

Указание связи прерванными линиями между потоками информации в пределах одного листа

Межстраничное соединение

Указание связи между информацией на разных листах

Базовые структуры алгоритмов

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


Рис. 1.26. Примеры структур алгоритмов: а - линейный алгоритм; б - алгоритм с ветвлением; в - алгоритм с циклом

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

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

Примером может являться разветвляющийся алгоритм, изображенный в виде блок-схемы (рис. 1.26, б). Аргументами этого алгоритма являются две переменные А, В , а результатом - переменная X. Если условие А > В истинно, то выполняется операция X := А х В, в противном случае выполняется X := А + В. В результате печатается то значение переменной X, которое она получает при выполнении одной из серий команд.

Циклическим называется алгоритм, в котором некоторая последовательность операций (тело цикла) выполняется многократно. Однако «многократно» не означает «до бесконечности». Организация циклов, никогда не приводящая к остановке в выполнении алгоритма, является нарушением требования его результативности - получения результата за конечное число шагов.

В цикл в качестве базовых входят - блок проверки условия и тело цикла. Перед операцией цикла осуществляется начальное присвоение значений тем переменным, которые используются в теле цикла. Если тело цикла расположено после проверки условий Р (цикл с предусловием), то может случиться так, что при определенных условиях тело цикла не выполнится ни разу. Такой вариант организации цикла, управляемый предусловием, называется цикл «ПОКА»/«WHILE» (здесь условие - это условие на продолжение цикла).

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

Рассмотрим пример алгоритма вычисления факториала, изображенный на рис. 1.26 (с циклом «ПОКА»). Переменная N получает значение числа, факториал которого вычисляется. Переменной N, которая в результате выполнения алгоритма должна получить значение факториала, присваивается первоначальное значение 1. Переменной К также присваивается значение 1. Цикл будет выполняться, пока справедливо условие N> К. Тело цикла состоит из двух операций N = N1 х К и К= К + 1.

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

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

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

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

  • 1. Дайте классификацию информации.
  • 2. Каковы преимущества цифровой информации по отношению к аналоговой?
  • 3. Перечислите методы кодирования символов.
  • 4. Перечислите методы кодирования численной информации.
  • 5. Переведите число 32 451 10 в шестнадцатеричную и восьмеричную системы счисления.
  • 6. Переведите число 32 451 16 в десятичную и восьмеричную системы счисления.
  • 7. В чем заключаются особенности двоичной арифметики?
  • 8. Подсчитайте произведение 1ГА 16 и 2ВС1 6 по модулю 8.
  • 9. Подсчитайте сумму 457 8 и 375 8 по модулю 3.
  • 10. Перечислите логические элементы ЭВМ.
  • 11. Что такое логические узлы ЭВМ?
  • 12. Составьте таблицы истинности для левого (-1(А д В)) и правого (-И V -,б) выражений 1-го закона де Моргана. Проверьте их на соответствие.
  • 13. Составьте таблицы истинности для левого (-1(А V В)) и правого (-.А V -,б) выражений 2-го закона де Моргана. Проверьте их на соответствие.
  • 14. Последний столбец таблицы истинности для двухместных операций, очевидно, может содержать 16 = 2 4 различных сочетаний «1» и «О». Следовательно, всего может быть определено 16 логических операций над двумя переменными, из которых нами рассмотрены только пять. Составьте таблицу истинности для одной из 9 оставшихся вне рассмотрения функций и попытайтесь построить логическое выражение для этой функции.
  • 15. Перечислите базовые структуры алгоритмов и программ.
Бесплатная визуальная среда разработки программного обеспечения. Конструктор «Алгоритм» поможет начинающим пользователям быстро создать собственную, полноценную программу, без использования специальных языков. Воплощайте в жизнь самые оригинальные идеи уже сегодня, с помощью гибких настроек и удобного интерфейса.

Создание программ в Алгоритм

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

Особенности конструктора:

  • Удобный интерфейс.
  • Множество готовых функций и визуальных объектов.
  • Возможность создания браузеров, текстовых редакторов и медиа-плееров за пару минут.
  • Создание программ, работающих с файлами, папками и реестром.
  • Набор полезных объектов с расширенными возможностями. К примеру перезагрузка ПК, или рабочий стол.
  • Вывод готовой программы в формате exe, за пару кликов.
  • Экспорт программы в язык Visual Basic.NET, для доработки на высоком уровне программирования.

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

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

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

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

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

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

· словесно-формульное описание;

· блок-схема (схема графических символов);

· алгоритмические языки;

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

· псевдокод;

Разработка программного продукта

Со времени появления платформы.NET (примерно в 2001 г.) среди библиотек базовых классов появился API по имени Windows Forms, представленный в основном сборкой System.Windows.Forms.dll. Инструментальный набор Windows Forms предоставляет типы, необходимые для построения графических пользовательских интерфейсов для настольных компьютеров, создания специализированных элементов управления, управления ресурсами (например, строками и значками) и выполнения других задач, возникающих при программировании для пользовательских компьютеров. Имеется и дополнительный API по имени GDI+ (представленный сборкой System.Drawing.dll), который предоставляет дополнительные типы, позволяющие программисту генерировать двухмерную графику, взаимодействовать с сетевыми принтерами и обрабатывать графические данные .

Windows Forms (и GDI+) применяются в платформе.NET 4.0 и, видимо, будут существовать еще некоторое время (возможно, длительное) в составе библиотеки базовых классов. Правда, после выхода.NET 3.0 компания Microsoft выпустила совершенно новый инструментальный API под названием Windows Presentation Foundation (WPF) .

Несомненно, наиболее важным пространством имен Windows Forms является System.Windows.Forms. Типы из этого пространства имен можно разбить на следующие крупные категории :

· Базовая инфраструктура. Это типы, представляющие базовые операции программ, которые используют Windows Forms (Form и Application), и различные типы, предназначенные для взаимодействия с устаревшими элементами ActiveX, a также для взаимодействия с новыми специальными элементами управления WPF;

· Элементы управления. Эти типы применяются для создания графических пользовательских интерфейсов (наподобие Button, MenuStrip, ProgressBar и DataGridView), все они являются производными от базового класса Control. Элементы управления допускают настройку на этапе проектирования и видимы (по умолчанию) во время выполнения;

· Компоненты. Это типы, которые не порождены от базового класса Control, но все-таки могут предоставлять программам Windows Forms визуальные возможности (например, ToolTip и ErrorProvider). Многие компоненты (к примеру, Timer и System.ComponentModel.BackgroundWorker) не видимы во время выполнения, но все-таки допускают настройку на этапе проектирования;

· Окна стандартных диалогов. В Windows Forms имеется несколько заготовленных диалоговых окон для распространенных операций (например, OpenFileDialog, PrintDialog и ColorDialog).

В мире Windows Forms тип Form представляет любое окно в приложении, включая главное окно самого верхнего уровня, дочерние окна приложений с многодокументным интерфейсом (multiple document interface ? MDI), а также модальные и немодальные диалоговые окна. Тип Form содержит множество возможностей, унаследованных от классов-предков, а также из реализуемых им многочисленных интерфейсов.

Для полноценного порождения типа Form нужны и многие другие базовые классы и интерфейсы, но даже профессиональному разработчику Windows Forms совсем не обязательно знать роли всех членов всех классов или реализованных интерфейсов.

Для создания нового проекта в Visual Studio выберем «New»-«Project», в появившемся окне выберем «Windows Form Application» и заполним предложенные поля.

Для передачи запроса SQL серверу и возврату результата в виде набора строк (запросы на выборку) был реализован метод «GetSQLData», представленный ниже.

В качестве параметра метод принимает строку-запрос, в качестве возвращаемого значения имеет тип «DataTable» ? таблицу данных.

public static DataTable GetSQLData(string query)

DataSet ds = new DataSet();

myConnection.Open();

catch (Exception e1)

SqlDataAdapter dataAdapter = new SqlDataAdapter(comm);

ds = new DataSet();

dataAdapter.Fill(ds);

MessageBox.Show("Error");

myConnection.Close();

catch (Exception e3)

return ds.Tables;

Для передачи запроса SQL серверу без возврата результата (запросы на вставку, изменение и удаление) был реализован метод «SetSQLData», представленный ниже. В качестве параметра метод принимает строку-запрос и не имеет возвращаемого типа значения.

public static void SetSQLData(string query)

SqlConnection myConnection = new SqlConnection(Config.ConnectionString);

myConnection.Open();

catch (Exception e1)

MessageBox.Show(e1.ToString());

SqlCommand comm = new SqlCommand(query);

comm.CommandType = System.Data.CommandType.Text;

comm.Connection = myConnection;

comm.ExecuteNonQuery();

myConnection.Close();

catch (Exception e3)

MessageBox.Show(e3.ToString());

Для того, чтобы пользователю не приходилось вводить строку подключения к базе данных также необходимо создать класс и файл конфигурации, которые хранили бы и позволяли изменять настройки приложения. Для этих целей были созданы соответственно класс «Config» и файл конфигурации «App.config»

public static string ConnectionString = GetParam("ConnectionStringSql");

public string Connection

return ConnectionString;

ConnectionString = value;

public static string GetPathTo(string ParamName)

return Application.StartupPath +

ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None).AppSettings.Settings.Value;

Переменная «Connection» этого класса является строкой для соединения с сервером. При запуске она инициализируется из файла настроек при помощи метода «GetParam», представленного ниже.

public static string GetParam(string ParamName)

return ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None).AppSettings.Settings.Value;

«App.config» - XML-файл, содержаний переменные и их явно или неявно указываемые значения. Текст сформированного xml-документа пользовательских настроек приведен ниже.

connectionString="Valid Connection String;" />

Обработчики различных событий элемента создаются на вкладке «Events». К примеру, событие «OnClick» - «нажатие на кнопку». После двойного клика на необходимое событие откроется код формы с объявленным обработчиком, в который необходимо добавить код для обработки возникающего события.

Добавим в обработчик события «OnClick» следующий код для вызова другой формы приложения:

private void button1_Click(object sender, EventArgs e)

NewTest obj = new NewTest();

obj.ShowDialog();

Подобным образом мы будем вызывать все формы приложения. Для считывания выборки в таблицу нашей формы добавим в ее код метод «Load_Tables».

listView1.Items.Clear();

DateTime d = new DateTime();

for (int i = 1; i < dt.Columns.Count; i++)

listView1.Items.Add(item);

Строка «query» в данном методе это запрос на выборку к базе данных. Теперь можно приступать к проектированию и реализации других форм приложения.

Добавить форму в текущий проект можно из контекстного окна «Solution Explorer», или через меню «Project»-«Add Windows Form». В появившемся окне вводим имя создаваемой формы и жмем «Add».

Задачи для этих элементов на данной форме будут следующими:

1. GroupBox - группировка схожих полей для ввода или выбора информации;

2. TextBox - поле для ручного ввода информации, которая после будет использоваться в запросах;

3. Label - подсказка пользователю о значении того или иного поля а также данных, которые необходимо ввести;

4. Button - подтверждение действия пользователем, считываемое системой.

В случае выбора того или иного элемента «RadioButton» («Ученик» или «Преподаватель»), будут разблокированы поля для ввода данных студента или преподавателя соответственно. По нажатию на кнопку «Начать работу» осуществляется авторизация.

Следующая форма приложения - форма добавления и изменения данных теста.

Данные из полей «Наименование», «Количество вопросов» и «Преподаватель» считываются и, при помощи запроса на вставку в методе «SetSQLData» класса «Connection» отправляются SQL-серверу.

В случае успеха или неудачи пользователю будет выведено соответствующее сообщение.

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

private void LoadComboboxes()

query = "Select Преподаватель from Преподаватели";

DataTable dt = Connection.GetSQLData(query);

comboBox1.DataSource = dt;

comboBox1.DisplayMember = "Преподаватель";

MessageBox.Show("Ошибка загрузки справочника <Преподаватели>");

Следующая форма приложения - отчет «Результаты тестирования». Добавляем форму, как было описано ранее, размещаем на форме элемент «ListView» и придаем форме следующий вид.

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

private void Load_Tables(string query)

listView1.Items.Clear();

DataTable dt = Connection.GetSQLData(query);

foreach (DataRow row in dt.Rows)

DateTime d = new DateTime();

ListViewItem item = new ListViewItem(row.ToString());

for (int i = 1; i < dt.Columns.Count; i++)

if (i == dt.Columns.Count - 1)

d = Convert.ToDateTime(row[i]);

item.SubItems.Add(d.ToShortDateString());

item.SubItems.Add(row[i].ToString());

listView1.Items.Add(item);

Следующая форма - форма тестирования знаний. Элемент «DateTimePicker» размещен на форме для возможности точного слежения за временем начала и окончания сдачи теста. Данный элемент скрыт от пользователя и не отображается.

Для работы изменения вопросов и ответов теста добавим еще одну форму и придадим ей следующий вид.

Аналогичным путем были созданы и реализованы остальные формы автоматизированной системы тестирования знаний по дисциплине «Русский язык». Более подробно функционал программы представлен в разделе «Руководство пользователя» и в приложении «Листинг кода программы».

Урок математики

«Программа действий. Алгоритм».

Цели: 1)обучающая

Сформировать первоначальные представления о понятиях «блок-схема», «программа

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

2)развивающая

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

3)воспитывающая

Формировать коммуникативные навыки (воспитание товарищества, взаимопомощи).

1. Самоопределение к деятельности (организационный момент)

2. Актуализация знаний.

Ребята, давайте вспомним, чем мы занимались на прошлом уроке?

(учились находить операцию и результат операции; учились находить операцию обратную данной)

Все эти знания могут нам сегодня пригодиться, чтобы помочь Ивану Царевичу победить злого Кощея и освободить Василису Премудрую.

Хотите со мной отправиться в сказку про «Кощея Бессмертного»?

Ну что ж, в путь! (слайд №1)

Ребята, многие наверное из вас читали эту сказку, кто помнит, где спрятана смерть Кощея Бессмертного?

Давайте мысленно вместе с Иваном Царевичем преодолеем путь и победим злого Кощея.

Какие же препятствия нужно преодолеть на пути? Кто сможет это воспроизвести?

добраться достать догнать сбить достать победить

До дуба cундук зайца утку из моря Кощея

Молодцы! Я думаю, что Иван Царевич поблагодарил бы вас.

Ребята, а как нам показать, что эти действия идут именно в такой последовательности? Какой значок нам придумать? ()

Т.о. мы получили схему действий.

А как бы вы назвали полученную схему действий?

(план, маршрут, путь, путешествие,….)

Вывод: В математике такую схему называют блок-схемой.

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

Это наша программа действий.

Поэтому как вы думаете, какова тема нашего урока?

3. «Открытие» детьми нового знания.

Тема: «Программа действий. Алгоритм» (слайд №2)

А чему мы будем учиться сегодня на уроке? Что нового узнаем?

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

1) -Какая же 1-я операция в нашей программе? (добраться до дуба) (слайд №3)

Ребята, а давайте посмотрим простой ли это дуб? А дуб-то не простой, а с заданием. И только выполнив его, мы сможем добраться до дуба.

Какое же задание нам надо выполнить?

(из 45 вычесть 14, т.е. заполнить пустое окошечко)

А кто думает иначе? Результат операции равен 31.

2) –Итак, до дуба мы добрались! Молодцы!

А сундук-то тоже необычный, а математический (слайд № 5)

Ребята, а как нам здесь-то быть?

Вопрос стоит на первом месте, а результат известен? Что нам делать?

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

3) -Молодцы! Научились выполнять обратную операцию, достали сундук!

Открываем его, а из него выскакивает заяц и убегает (слайд № 6)

Попробуем его догнать. Поэтому на вопросы отвечайте быстро (слайд № 7)

Сосчитайте от 327 до 332, хором 1,2 группы.

А теперь в обратном порядке две другие группы.

Какое круглое число встретилось вам при счёте? (330)

Даёте характеристику этому числу, выложите графическую модель.

(330 – трёхзначное, т.к. в записи этого числа 3 знака, чётное, т.к. оканчивается на 0, соседи этого числа 329 и 331, сумма цифр числа равна 6, его можно представить в виде суммы разрядных слагаемых 330= 300+30, т. д…..)

(1 ученик выкладывает графическую модель этого числа на наборном полотне)

4) -Поймали мы зайца, но из него вылетела утка (слайд № 8)

Кто быстрее собьёт её из ружья?

Давайте, выразим 330см в различных единицах длины (слайд № 9)

Но в начале давайте вспомним, с какими единицами длины мы знакомы? Назовите их в порядке убывания (м, дм, см)

330см=…м…см 330см=…дм 330см=…м…дм

Самыми быстрыми и меткими у нас оказались …

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

5) -Молодцы! Утку, мы сбили, а яйцо упало в море (слайд № 10)

Чтобы достать его нужно подобрать подходящую схему и решить задачу (слайд № 11)

Задача: Иван Царевич проплыл по морю в первый день 12км. А во второй на 4км больше. Сколько километров проплыл Иван Царевич во второй день?

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

Решите задачу самостоятельно на индивидуальных досках.

Иван Царевич предлагает свой вариант ответа. Проверьте, пожалуйста (слайд № 12)

12+4=16(км)

Поднимите руку, у кого из вас такое же решение, как и у Иван Царевича. Кто не согласен,

поспорьте с ним.

Почему вы эту задачу решили действием сложения?

Как ответить на вопрос задачи?

6)- Вот и достали яйцо, осталось сломать иглу и Кощей будет побеждён (слайд № 13)

У вас на столах лежат карточки, на которых показано, как найти путь к Василисе Премудрой.

Если вы их выложите правильно, в нужном порядке, то Кощей будет побеждён.

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

3. Постановка проблемы.

Какие операции надо выполнить, чтобы найти Василису Премудрую? (слайд № 14)

(-скакать на коне по лесу;

Плыть по морю на корабле;

Лететь на ковре самолёте через горы)

Что мы с вами составляем?

(план, маршрут, программу действий,…)

1-я группа пообщайтесь с классом, какую программу действий составили вы? (затем слово 2-й, 3-й, 4-й группам)

Почему в начале урока мы быстро составили программу действий, а сейчас не можем?

Почему возникли разные мнения? (мы не знаем порядка действий, не знаем, что за чем идёт)

Вывод: - В математике говорят, мы не знаем алгоритма (слайд № 15)

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

А важно ли уметь её составлять? (да)

Для чего? (чтобы правильно выполнять действия, прийти к намеченной цели,…)

А часто ли в жизни нам приходится сталкиваться с алгоритмом?

А как нам узнать, правильное ли решение принял Иван Царевич, смогли ли мы ему помочь?

(достаю яйцо, раскрываю его, достаю 4 бумажки, на которых написано:

М Л Г М Л Г МОРЕ ЛЕС ГОРЫ МОРЕ ЛЕС ГОРЫ (слайд № 16)

Сейчас вы получите зашифрованный путь Ивана Царевича к Василисе Премудрой.

Разгадайте этот путь.

Что бы это значило? И выложите у себя на столах. (По заданному алгоритму дети

выкладывают)

(1 представитель от группы выступает)

А кто из вас изначально так составил?

Ребята, а кто составил по другому, это что ваша вина, вы что не хотели спасти Василису Премудрую?

А почему вы не смогли это сделать? (Не знали порядок действий. Не знали алгоритма).

Вывод: - Значит, что мы с вами сейчас составили? (алгоритм) (слайд №17)

А как по - другому можно сказать? (программа действий)

-Какими способами, т.е. чем может быть записана программа действий?

(буквами, словами. Картинками, блок-схемой,…) (слайд № 18)

-Мы свою программу выполнили?

-Вот и уничтожили злого Кощея. Молодцы! (слайд № 19)

-А почему мы смогли её выполнить? (потому что знали алгоритм)

5. Первичное закрепление.

1) -Люди, которые составляют эти программы, т.е. алгоритмы называются программистами.

Вы хотите ими сегодня побыть?

Но так как мы ещё маленькие попробуем составить программу действий с помощью картинок. (4 набора – режим дня)

У вас на столах конверты с картинками. Достаньте их, рассмотрите и подумайте какую программу действий и для кого мы будем составлять? Как её можно назвать?

(Дети выкладывают программу на наборное полотно).

Вывод: Каждый организованный человек живёт по режиму дня.

Но как вы поняли мы с вами составили только фрагмент из вашего режима.

Что, вы заметили?

- А можно ли какие-то этапы алгоритма, т.е. операции поменять местами?

Если мы поменяем, что-то от этого изменится?

Вывод: Те операции, которые можно поменять местами наз. перестановочными.

(меняю 2 любых операции)

А эти операции можно поменять местами? (нет)

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

(неперестановочными)

Вывод: Итак, в программе операции могут быть перестановочны, а могут нет.

Какие ещё операции в этой программе могут быть перестановочны?

2)Работа в группах.

1 группа : Сделай бутерброд.

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

(В разном порядке даны картинки, на которых нарисованы: нож, булка хлеба, масло, отрезанный кусок хлеба, кусок мажут маслом).

Алгоритм «Сделай бутерброд» (предполагаемый вариант)

1) Возьми хлеб.

2) Возьми нож.

3) Отрежь кусок хлеба.

4) Возьми масло.

5) Намажь маслом кусок.

Некоторые операции могут быть перестановочными, дети обговаривают их.

2 группа: «Закопай червонцы».

(Помоги Буратино правильно закопать золотые червонцы на Поле чудес)

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

Положи деньги в ямку. Скажи: «Крекс, фекс, пекс!» Полей водой. Выкопай ямку. Засыпь ямку землёй.

Алгоритм «Закопай червонцы» (предполагаемый вариант)

1) Выкопай ямку.

2) Положи деньги в ямку.

3) Полей водой.

4) Засыпь ямку землёй.

5) Скажи: «Крекс, фекс, пекс!»)

3 группа: «Помоги Вини-Пуху подкрепиться».

(Расставь события по порядку)

? – Вымой лапы.

? – Открой кран.

? – Сядь за стол.

? – Закрой кран.

? – Вытри лапы полотенцем.

? – Съешь мёд.

? – Возьми ложку.

(Предполагаемый ответ:

1. Открой кран.

2. Вымой лапы.

3. Закрой кран.

4. Вытри лапы полотенцем.

5. Сядь за стол.

6. Возьми ложку.

7. Съешь мёд.)

4 группа : Сборка пирамидки и разборка пирамидки.

а) Составить программу сборки пирамидки

б) Составь программу разборки собранной пирамидки.

(каждая группа защищают свой алгоритм)

Ребята, понравилось вам быть программистами?

Составили мы свои программы действий?

А кому было трудно?

6. Д/з: 1)№9 с.12 – из учебника на повторение;

2) Иван Царевич предлагает своё дифференцированное задание

в конвертах. (1,2 группе – посложнее, 3,4 – полегче)

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

1 группа: Приготовь яичницу.

2 группа: «Завари чай».

3 группа: Съешь яблоко».

4 группа: Съешь конфету»

3) по желанию: составить программу своего пути в школу (творческое задание)

(на следующем уроке эту программу удобно использовать на этапе постановки проблемы)

7. Итог урока.

Наш урок подошёл к концу.И вот сегодня в наши знания добавилась ещё одна маленькая деталь. Какая? Чему учились сегодня на уроке?- А, что такое алгоритм?-Кто помогал нам в этом? (Иван Царевич) -Поблагодарим его и пригласим на следующий урок, чтобы он проверил наши знания.-А сейчас оцените свою работу на уроке (на доске рисунок Ивана Царевича на коне)ёжик – если на уроке было трудно и вам нужна помощь;цветок – если можете работать самостоятельно, но ещё в чём-то затрудняетесь;ягодка – могу работать сам и могу помочь другому.-Над чем ещё надо поработать? (наметить цели последующей деятельности).-И я, и Иван Царевич благодарим вас за хорошую работу.Урок окончен!

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

Свойства алгоритма:

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

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

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

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

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

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

-словесный – способ на естественном языке.

-графический -описания алгоритма с помощью схем.

Процесс выполнения операций или групп операций

ввод исходных данных, вывод результата

Решение-выбор направления выполнения

Модификация-выполнение операций, меняющих команды или группы команд, изменяющих программ.

Соединители линий на одной странице.

Межстраничные соединители.

-язык программирования –удобен для ввода в комп-р.

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

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

-Линейный – алгоритм, в кот-ом команды выполняются последовательно друг за другом в порядке их естественного следования независимо от каких-либо условий. S1, s2 , S3…Sn

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

· Полная условная конструкция (полное ветвление)

· Неполное условная конструкция

· Выбор из нескольких

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

· Цикл с параметром

· Цикл с предусловием. Может не выполниться ни разу. В теле цикла обязательно нах-ся оператор, к-ый изменяет значение переменной, входящей в блок Q.

· Цикл с постусловием. Выполняется хоть один раз.

Основные принципы алгоритмизации:

1. Выявить исходные данные, результаты и назначить им имена.

2. Метод решения задач.

3. Разбить метод решения задач на этапы.

4. При граф-ом представлении алгоритма каждый этап в виде соответствующего блока –схемы алгоритма и указать линиями связи порядок их выполнения.

5. В полученной схеме при любом варианте вычислений.

Предусмотреть выдачу результатов или сообщений об их отсутствии.

Обеспечить возможности после выполнение любой операции так или иначе перейти к блоку конец.

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

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

Рассмотрим основные структуры алгоритмов, а их шесть:

· Следование. Это последовательность блоков (или групп блоков) алгоритма. В программе следование представлено в виде последовательного выполнения операций

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

·
Обход. Эта структура является частным случаем разветвения, когда в одной из ветвей нет никаких действий.

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