Образцы решения типовых задач.
Лабораторная работа №5.
Тема: Составление программ разветвляющейся структуры. Обработчик исключений.
Цель: Развить навыки программирования разветвляющихся структур. Развить навыки использования различных методов обработки исключений.
Оборудование и материалы: Методическое пособие, ручка, карандаш, линейка, ластик, шаблон А4.
Ход работы
Методические рекомендации.
Необходимая информация содержится в лекции № 3, № 10.
Решение задач представить в следующем порядке: постановка задачи, построение математической модели, блок-схемы процедур и функций, программный код, тестирование.
Задание для лабораторной работы выбрать согласно варианту по приведённой таблице. Вариант определяется порядковым номером в журнале группы.
Образцы решения типовых задач.
Пример 1.Разработать программу, которая вычисляет значение функции, заданной следующим образом:
у =
Программа должна начинаться с ввода значения аргумента. Затем в зависимости от того, в какой интервал попадает введенное значение, вычисляем значение функции по одному из заданных выражений.
Алгоритм решения данной задачи представлен в виде блок – схемы:
Источник
По номеру месяца вывести его название блок схема
Кроме оператора if в языке программирования Паскаль предусмотрен так называемый переключатель Case — оператор выбора. Его можно трактовать как некий вопрос, имеющий большое число ответов (а не только два, как это имеет место в операторе if-else). Однако в отличие от if, Case имеет ряд принципиальных ограничений.
Case выражение of значение1: оператор1; Значение «выражения» и значения констант («значение1» и т.д.) должны быть порядкового типа. Если совпадений не будет, то выполняется блок else. Если блок else отсутствует (он является не обязательным), то никакой блок кода в операторе case не выполняется. Источник Блок схема пожалуйста (Определение названия месяца по номеру)Помощь в написании контрольных, курсовых и дипломных работ здесь. Определение квартала года по порядковому номеру месяца Функция на Borland С++ Builder 6.0. Для успешной работы программы помести на форму два компонента TLabel *Label1 и Label2, а также кнопку TButton *Button1. По поводу использования массива согласен. Однако, что касается защиты от дурака, я думаю, при решении именно данной задачи она лишняя. Теоретически, пользователь может ввести не только число, но и символ, или же число, но отрицательное или дробное. Тогда предложенный вами алгоритм не сработает. Согласен. В предложенной мной блок-схеме тоже не учтены все подобные случаи, но я думаю, что здесь все равно лучше просто вывести сообщения об ошибке и не надо ни с чем мудрить когда стоит настолько конкретная задача.
Но любой алгоритм должен ориентироваться на конкретную задачу. Например, пусть вы пишете какую-то обучающую программу, скажем, для дошколят (хотите обучить их названиям месяцев). Сейчас это модно и практикуется достаточно широко. Попробуйте им объяснить, почему вы вводите 14, а результат воспринимается как 2 и в результате выводится «февраль». У них возникнет ощущение, что в году не 12 месяцев, а больше. Кроме того, придется объяснять, что такое остаток и как он находится. Больше того, остаток, как известно, может быть равен нулю. Что такое нулевой месяц? Нечто между декабрем и январем? Я думаю, в данном случае целессобразно вывести сообщение наподобие такого: Однако, с другой стороны, мне приходилось решать задачи (например определения дня недели по имеющейся дате), где предложенный вами принцип остатка оказывается весьма полезным. Теперь обращаю внимание, что в данной конкретной задаче нужно по известному номеру месяца определить его название. Т.е. номер месяца нам уже дан. Мы можем вообще его считать из бинарного файла и преобразовать прочитаное двоичное число в десятичное (только брать надо не байт целиком, а сначала прочитать первые три бита, к результату прибавить 1, прочитать следующие два бита, прибавить полученное число к предыдущему результату, далее прочитать следующий бит и полученное число снова прибавить к результату). Тогда половина из того, о чем мы с вами беседуем, просто теряет смысл. Но тут же возникнет вопрос о существовании файла и о его размере (если размер файла равен нулю, то читать там нечего). Вариантов, если поразмыслить, может быть несколько. А если еще начнем ориентироваться на конкретный язык (не нарушая при этом свойства массовости алгоритма) то в Borland С++ Builder есть инструмент TrackBar, используя который при решении данной задачи вообще можно исключить все возможные ошибки ввода. Делается это примерно так (номер месяца задается положением ползунка; для наглядности приведены 4 элемента TrackBar, хотя для решения задачи достаточно одного). Также программист может жестко «забить» нужный ему номер месяца в программе а не спрашивать его у пользователя (тогда и мою блок-схему нужно перерисовать). Т.е. вариантов уйма. Поэтому, т.к., по условию задачи, номер месяца предполагается известным (но не известен способ получения этого номера), не стоит особо мудрить. Любой алгоритм априори предполагает четкую формулировку задачи. На данный момент она не совсем четкая. Поэтому и сам алгоритм вызывает такие споры.
Источник |