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

Урок является продолжением изучения темы множественного выбора на языке Pascal. Предназначен как для изучения на уроках, так и во время проведения элективных курсов.

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

Технология: информационная.

Время проведения: 40 минут.

Оборудование: компьютерный класс, мультимедийные устройства.

Цель урока:

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

Задачи:

  • Обучающие – познакомить учеников с использованием команды множественного выбора CASE; привести примеры.
  • Развивающие — развитие умения преодолевать трудности при выполнении заданий самостоятельной работы, развитие логического мышления, памяти, внимания, навыков коммуникативной работы в группах.
  • Воспитательные — воспитание аккуратности, ответственности за свою работу в коллективе, уважительного отношения к мнению одноклассников, уметь работать самостоятельно, выделять главное, сравнивать, делать выводы, развитие познавательного интереса, логического мышления.

Подготовка к уроку:

  1. Подбор изображений для слайдов.
  2. Подбор и набор текста и задач.
  3. Составление и оформление презентации.

План урока:

  1. Организационный момент.
  2. Мотивационное начало урока.
  3. Изложение нового материала. Составление учащимися краткого конспекта нового материала.
  4. Закрепление изученного материала.
  5. Домашнее задание.
  6. Итог урока.

Ход урока

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

  1. Какое минимальное количество разделов может быть в программе в Turbo Pascal? Назовите их. (Один — раздел операторов).
  2. Назовите основные типы данных и соответствующие им стандартные имена, которые мы использовали на прошлом уроке. (Целочисленный тип — INTEGER, вещественный тип — REAL, логический — BOOLEAN.)
  3. Укажите, какие операции деления возможны над данными целочисленного типа. Поясните их результат и назовите соответствующее стандартное имя, используемое в программе. (а. MOD; б. DIV.)
  4. Укажите типы данных, в которых нет возможности ввода данных с помощью оператора READ. (Логический тип данных — BOOLEAN.)
  5. Перечислите операторы, которые могут использоваться для организации линейных алгоритмов. (BEGIN, END, READ).
  6. Назовите операторы для программ с разветвляющейся конструкцией. (IF … THEN … ELSE.)

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

Мотивационное начало урока. Достаточно часто при составлении программ необходимо сделать выбор из достаточно большого количества вариантов. Команду IF в данном случае использовать не рационально. И тут на помощь к программистам приходит команда множественного выбора CASE.

Изложение нового материала. Составление учащимися краткого конспекта нового материала.

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

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

Структура оператора выбора такова:

case <переменная> of
     <значение1>:<действия1>;
     <значение2>:<действия2>;
     <значение3>:<действия3>;
     ……………………………………………………………………;
     else <действия 4>;
end;

Оператор выбора работает следующим образом. В зависимости от того, какое значение принимает переменная, выполняется тот или иной блок действий. В случае если переменная не принимает ни одно из перечисленных значений, “работает” ветвь “ELSE” Но эта ветвь может и отсутствовать, в этом случае просто ничего не выполняется.

У множественного ветвления есть ограничения; в роли переменной может выступать только переменная порядкового типа. Но есть и положительные стороны — в качестве значений можно указывать целый диапазон.

Давайте рассмотрим на примере преимущества оператора case на примере следующей программы.

Задача 1. Приведите введенное пользователем число от 0 до 9 к его словесному представлению.

Сначала рассмотрим данную задачу с использованием оператора if:

program chislo;
var n : shortint; {-128..127}
begin
     write(‘Введи число: ‘);
     readln(n);
     if n=0 then write(‘Нуль’)
       else if n=1 then write(‘Один’)
       else if n=2 then write(‘Два’)
         else if n=3 then write(‘Три’)
           else if n=4 then write(‘Четыре’)
             else if n=5 then write(‘Пять’)
               else if n=6 then write(‘Шесть’)
                 else if n=7 then write(‘Семь’)
                   else if n=8 then write(‘Восемь’)
                     else if n=9 then write(‘Девять’)
                       else write(‘Это не цифра’);
end;

Теперь с помощью оператора case:

program chislo;
var n : shortint;
begin
     write(‘Введи число: ‘);
     readln(n);
     case n of
       0: write(‘Нуль’);
       1: write(‘Один’);
       2: write(‘Два’);
       3: write(‘Три’);
       4: write(‘Четыре’);
       5: write(‘Пять’);
       6: write(‘Шесть’);
       7: write(‘Семь’);
       8: write(‘Восемь’);
       9: write(‘Девять’);
       else write(‘Это не цифра’);
     end;
end;

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

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

program nomermesaca;
var x:byte;
begin
       writeln(‘ введите номер месяца ‘); readln(x); Case x of
           1,2,12:writeln (‘зима’);
           3,4,5:writeln (‘весна’);
           6,7,8:writeln (‘лето’);
           9,10,11:writeln (‘осень’)
       else
             writeln (‘ошибка’);
       end;
end.

Я думаю до readln(x); всё понятно. Теперь разбираем непосредственно часть программы с оператором-”case”.

Допустим, мы ввели число 5. Так вот программа берет нашу переменную x, которая в нашем случае равняется пяти, и ищет нашу пятёрку среди тех данных, которые мы ввели между “Case x of… и … Else writeln (‘ошибка’);”.

Пройдя первую строку программа нужной пятёрки не нашла и, перейдя на вторую, нужная пятёрка была найдена и в соответствии с командой, которую мы задали в этом случае программа выводит на экран слово «Весна».

Если бы мы ввели число большее, чем 12,то программа бы выдала нам следующее: «Ошибка»

Закрепление изученного материала. Применение знаний на практике и формирование практических умений и навыков.

Учащимся предлагаются несколько задач, которые они должны составить на компьютере:

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

program Calc;
var a, b, c: integer;
       begin
       writeln(‘Введите a’); Read(a);
       writeln(‘Введите b’); Read(b);
       writeln(‘Введите c‘); Read(c);
       case c of
           1: writeln(‘Сумма=‘, a+b);
           2: writeln(‘Разность=‘, a-b);
           3: writeln(‘Произведение=‘, a*b);
           4: writeln(‘Целая часть от деления=‘, a div b);
           5: writeln(‘Остаток от деления=‘, a mod b);
           else writeln(‘Введен неизвестный номер операции’);
       end;
end.

Задача 4. Написать программу, которая в зависимости от введённого числа выводила бы на экран: если 1, 2, 3, 4, 5 то ‘один’, если 6, 7, 10, 15 то ‘два’, если 8 то ‘три’, если 16, 17, 18, 19, 20, 22, 25 то ‘четыре’. Иначе вывести на экран ‘ошибка’.

program primer;
var n : integer;
begin
       write(‘Введите число: ‘);
       readln(n);
       case n of
           1..5: write(‘один’);
           6, 7, 10, 15: write(‘два’);
           8: write(‘три’);
           16..20, 22, 25: write(‘четыре’);
       else write(‘ошибка’);
       end;
end.

Выявление пробелов в знаниях учащихся и их ликвидация. Беседа.

  1. С помощью каких операторов можно организовать многовариантное ветвление? (IF…THEN…ELSE, CASE…OF). Ставится ли перед ELSE ;? (Нет)
  2. Какой тип может иметь переменная, выступающая в роли параметра в операторе выбора CASE (Перечисляемый).
  3. Может ли отсутствовать ELSE в операторе выбора? (Да)
  4. Как “работает” оператор выбора? (Оператор выбора работает следующим образом. В зависимости от того, какое значение принимает переменная выполняется тот или иной блок действий. В случае если переменная не принимает ни одно из перечисленных значений, “работает” ветвь “else” Но эта ветвь может и отсутствовать, в этом случае просто ничего не выполняется.)

Домашнее задание.

Составить программу по следующему условию.

В некотором учебном заведении действуют следующие правила приема. Абитуриенты сдают три экзамена. Если они набирают не менее 13 баллов, то это дает право поступить на дневное отделение, от 10 до 12 — вечернее, от 8 до 9 — заочное и ниже 8 баллов — отказ в приеме на учебу. Записать программу, которая в зависимости от суммы набранных баллов сообщает абитуриенту его права на поступление.

Итог урока.

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

предыдущие:

  • Операционная система Linux
  • Управление компьютером
  • Задания на компьютерный марафон по информатике в 8 классе
  • История развития вычислительной техники
  • Архитектура персонального компьютера

Задание для выполнения

Написать программы
решения квадратного уравнения и системы
неравенств.

Лабораторная работа № 8 инструкция множественного выбора switch/case

Цель работы:
изучить
правила составления программ с
ис­пользованием оператора-переключателя
switch.

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

Общая
форма оператора выбора:

switch(выpaжeниe)
{

case
const_ l: операторы;
break;

case
const_2:
операторы;
break;

case
const_3: операторы;
break;

.
. .

case
const_ N: операторы;
break;

default:
операторы;

}

Оператор
switch
проверяет,
совпадает
ли
значение выражения с одним из значений,
приведенных ниже констант. При совпадении
выполняют­ся операторы, стоящие после
совпавшей константы.

Выражение
должно
иметь целочисленный
тип:


целой константы;


символьной константы;


перечисление;


вызов функции, возвращающей
целочисленное значение.

const_1…
const_N

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

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

Конструкция:

case
const_2:

case
const_3: операторы;
break;

означает,
что если значение выражения равно
const_2
или const_3,
то выполняются соответствующие операторы.

break

оператор завершения
работы
switch.
После
выполнения одной из ветвей case
все
остальные ветви будут опущены. Если
выполненные операторы не содержат
оператора break,
то
выполняются операторы всех следующих
ветвей case,
пока
не встретится
оператор break
или
не
закончится
оператор switch.

ПРИМЕР
РЕШЕНИЯ

Сначала
вводится первое число, затем действие
(‘+’, ‘-’, ‘*’,‘/’) и

второе
число.
Программа считает и выводит результат.

include
<stdio.h>

include
<conio.h>

void
main(void)

{

//определение
переменных

double
x,
у;
// для ввода чисел

char
ch;
//
для ввода символа

//флаг,
в котором будет храниться

//1,
если
все данные введены верно

//и
0,
если
выражение не подсчитано,

//то
нечего выводить

int
f
=
1;

//ввод
данных

printf(«Vvedite
cislo: «);

scanf
(«%lf», &x) ;

printf(«Vvedite
dejstvie: «);

fflush(stdin);
// очистка
буфера ввода

scanf(
«%c»,&ch);

printf(«Vvedite
chislo: «);

scanf
(«%lf «, &y) ;

switch
(ch)
{

case
‘+’:
x += y; break;

case
’-’ : x­=y; break;

case
‘*’
:
x*= y; break;

case
‘/’:

if
(y) x /=
y;

else
{ f
= 0;

printf(«aaErrors!!!!n»);

}

break;

default:
f
= 0;

printf(”Net
takogo dejstvijan»)

break;

}

if
(f) printf(«resultat — %. 2lfn»,x);

getch
();

}

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

1. Изучить
теоретические сведения.

2. Ответить на
контрольные вопросы.

3. Выполнить задание.

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

1. Какие служебные
слова могут использоваться при записи
оператора-переключателя?

2. Какого типа
должно быть константы в операторе
switch?

3. Что произойдет,
если значение выражения не равно ни
одной из констант, записанных после
case?

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

  • #
  • #
  • #
  • #

Итак мы рассмотрели оператор с одиночным выбором if и оператор с двойным выбором if else, но в С++ еще имеется оператор множественного выбора switch, который мы сейчас детально рассмотрим.

// форма записи оператора множественного выбора switch
switch (/*переменная или выражение*/)
 {
 case /*константное выражение1/*: 
 {
 /*группа операторов*/;
 break;
 }
 case /*константное выражение2*/: 
 {
 /*группа операторов*/;
 break;
 }
 //.    .    .
 default:
                {
                 /*группа операторов*/;
                }
 }

На начальном этапе анализируется выражение или переменная. После чего осуществляется переход к той ветви программы, для которой значение переменной или выражения совпадает с указанным константным выражением. Далее выполняется оператор или группа операторов пока не встретится зарезервированное слово break или закрывающая фигурная скобочка. Если значение переменной или выражения не совпадает ни с одним константным выражением, то передается управление ветви программы содержащей зарезервированное слово default. После чего выполняется оператор или группа операторов данной ветви. Сейчас рассмотрим задачу с использованием оператора выбора switch.

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

// switch.cpp: определяет точку входа для консольного приложения.

 #include "stdafx.h"
 #include <iostream>
 using namespace std;

 int main(int argc, char* argv[])
 {
  int count; // переменная для выбора в switch
  double a,b; // переменные для хранения операндов
  cout << "Vvedite pervoe chislo: ";
  cin >> a;
  cout << "Vvedite vtoroe chislo: ";
  cin >> b;
  cout << "Vibirite deistvie: 1-clojenie; 2-vichitanie; 3-ymnojenie; 4-delenie: ";
  cin >> count;
  switch (count) // начало оператора switch
  {
 	 case 1: // если count = 1
 	 {
  	 cout << a << " + " << b << " = " << a + b << endl; // выполнить сложение
  	 break;
  	 }
  	 case 2: // если count = 2
  	 {
  	 cout << a << " - " << b << " = " << a - b << endl; // выполнить вычитание
  	 break;
  	 }
  	 case 3: // если count = 3 
  	 {
  	 cout << a << " * " << b << " = " << a * b << endl; // выполнить умножение
  	 break;
  	 }
  	 case 4: // если count = 4
  	 {
  	 cout << a << " / " << b << " = " << a / b << endl; // выполнить деление
  	 break;
 	 }
 	 default: // если count равно любому другому значению
 	 cout << "Nepravilni vvod" << endl;
 	 }
 system("pause");
 return 0;
}

В 9-й строке мы объявили переменную count целочисленного типа. Именно значение данной переменной программа будет сравнивать со значением константного выражения. В строке 10 объявлены две переменные вещественного типа данных, для хранения введённых чисел. Почему вещественного, объясню позже. С 17 по 41 строки записан условный оператор множественного выбора switch. На начальном этапе анализируется переменная count. Анализируется таким образом:
если переменная count равна единице, значит, выполняется блок операторов с 20-й по 23-ю строки;
если переменная count равна двойке, значит, выполняется блок операторов  с  25-й по 28-ю строки;
если переменная count равна тройке, значит, выполняется блок операторов  с  30-й по 33-ю строки;
если переменная count равна четырем, значит, выполняется блок операторов с 35-й по 38-ю строки;

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

cout << "Nepravilni vvod" << endl;

Оператор switch может содержать, а может и не содержать зарезервированное слово default. Если значение переменной не совпадет ни с одним константным выражением и не будет default, то программное управление в этом случае просто перешло бы к первому оператору после switch. В строках 19, 24, 29, 34 записаны константные выражения, с которыми программа сравнивает значение переменной count.
В строках 22, 27, 32, 37, записан оператор break. Возникает вопрос: «Зачем он нужен?» Допустим, пользователь ввел 2, то есть переменная count инициализировалась двойкой. Начинает работать условный оператор множественного выбора switch. То есть выполняется поиск двойки в константных выражениях. Сначала проверяется строка 19, мы видим, что в строке 19 константное выражение равно единице, а нам нужна двойка. Проверяем дальше. А дальше по порядку строка 24. Мы видим, что в строке 24 константное выражение равно двойке, то, что нужно!!! Переменная count равна константному выражению, выполняется блок операторов с 25 по 28 строки. И вот в 27-й строке записан оператор break, который заставляет программу перейти к первому оператору после оператора switch. В данном случае управление передается строке 42. А нужен этот переход только для того, чтобы не выполнялись заведомо ненужные действия. Если убрать оператор break, то программа будет дальше сравнивать значение переменной с константными выражениями, пока они все не закончатся и потом все равно передаст управление строке 42. Результат работы программы показан ниже (см. Рисунок 1).

Оператор множественного выбора switch C++

Рисунок 1 — Оператор множественного выбора в С++

Вернемся к строке 10, там объявляются две переменные типа double. Наверное, возникает вопрос, «Почему вещественного типа, а не целочисленного?». Отвечаю: «Потому, что одно из действий, которые может выполнять программа является деление, а при делении результат имеет вещественный тип данных. Компилятор С++ при делении чисел обращает внимание на их типы данных. Если мы просто делим числа на калькуляторе, например 4/5=0.8 Компилятор С++ нам выдаст результат при таком делении 0. Так как оба числа являются целочисленными, значит, результат тоже будет целочисленный, то есть целая часть от обычного деления, а в нашем случае целая часть при таком делении – это 0, соответственно часть информации теряется, или как еще говорят, отсекается (восемь десятых, в нашем случае, отсекается). А если делимое и делитель поменять местами, на калькуляторе получим: 5/4=1.25; компилятор С++ покажет несколько иной результат, а именно 5/4=1 (0.25 отсекается). Такое явление в С++ называется неявным приведением типа.» Вещественный тип данных используется для более точного представления чисел, чем целочисленный (то есть отображает дробную часть).

В С++ существуют два вещественных типа данных:

1) double – вещественный тип данных двойной точности, а значит занимает вдвое больше памяти, чем тип float
2) float – вещественный тип данных одинарной точности

На чтение 12 мин Просмотров 4 Опубликовано 11 апреля 2023 Обновлено 11 апреля 2023

Содержание

  1. Семинар. Диаграммы Насси — Шнейдермана
  2. Н.М. Тимофеева, г. Обнинск Калужской обл.
  3. 1. Блок действия
  4. 2. Блоки с разветвлением
  5. 3. Блок множественного выбора
  6. 4. Блок цикла с предусловием
  7. 5. Блок цикла с постусловием
  8. 6. Блок подпрограммы
  9. Оператор выбора на блок-схеме
  10. Оператор выбора или вариантов Case
  11. Оператор выбора на блок-схеме
  12. Основы оператора выбора Case
  13. Оператор множественного выбора в блок схемах
  14. Оператор выбора (переключатель) switch
  15. Шаблон оператора switch
  16. Оператор break

Семинар. Диаграммы Насси — Шнейдермана

Н.М. Тимофеева,
г. Обнинск Калужской обл.

Вы, конечно, знаете о графическом способе записи алгоритма решения задачи — в виде блок-схемы. Менее известен второй способ такого представления алгоритма — диаграмма Насси – Шнейдермана (ее также называют “диаграммой Нэсси – Шнейдермана”, “N – S-диаграммой” или “структурограммой”).

В своей статье “Краткая история структурных блок-схем (диаграмм Насси – Шнейдермана)” [1] один из авторов диаграммы Бен Шнейдерман пишет: “Пленительная история и эволюция структурных блок-схем (обычно называемых диаграммами Насси – Шнейдермана, или структурограммами) восходит к 1972 году”. Далее он рассказывает, что впервые подумал о создании своих способов записи алгоритмов во время посещения лекции по структурному программированию, когда еще учился в магистратуре. Ему пришло в голову, что если оператор GOTO 1 не должен использоваться, то так же не нужны и соединительные линии в старых блок-схемах. Пятнадцать минут вычерчивания привели к первым идеям по оформлению следования, ветвления и циклов. Вместе с аспирантом Исааком Насси, в то время более глубоко знавшим принципы структурного программирования, они написали статью “Технологии блок-схем для структурного программирования” [2], в которой описали свои идеи и представили новый вид графической записи алгоритмов. Статья была опубликована в августе 1973 года.

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

Очевидные преимущества N – S-диаграмм заключаются в:

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

— компактности, т.к. даже относительно длинный алгоритм на языке N–S-диаграмм несложно разместить на одной странице;

Диаграммы Насси – Шнейдермана строятся с использованием шести элементарных “строительных блоков”.

1. Блок действия

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

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

2. Блоки с разветвлением

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

Такая алгоритмическая конструкция (ветвление) представляется двумя смежными блоками действий; действие слева выполняется, если условие верно, действие справа — если условие неверно. Например:

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

3. Блок множественного выбора

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

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

4. Блок цикла с предусловием

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

Действия, которые повторяются (так называемое “тело цикла”), представлены самостоятельным блоком внутри блока цикла с предусловием. Например, для задачи: “Накачать спущенную велосипедную шину”:

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

Цикл с заданным количеством повторений тела цикла (в языках программирования его называют “цикл с параметром” или “цикл со счетчиком” [3]) — это тоже цикл с предусловием. Действия повторяются определенное количество раз и отсчитываются перед каждым выполнением. Например, разбить в миску шесть яиц:

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

5. Блок цикла с постусловием

Блок цикла с постусловием используется, когда в алгоритме действия должны повторяться до наступления определенного условия (условие проверяется после выполнения действий):

Например, в задаче приготовления теста для блинов:

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

6. Блок подпрограммы

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

Диаграмма, иллюстрирующая действия в подпрограмме, оформляется отдельно.

Подпрограмма “Очистить травосборник”

Перечисленные блоки могут произвольным образом вкладываться один в другой. Проиллюстрируем сказанное на примере задачи: “Найти наименьшее число в следующей последовательности чисел: 51 25 35 79 13 26 65”.

Рассматривая приведенную последовательность чисел, вы можете увидеть, что 13 — наименьшее число в ней, но как вы это определили? Можете ли вы вывести общее правило для определения наименьшего числа в любой последовательности чисел? Есть хорошее упражнение, которое вы можете выполнить с товарищем, чтобы разобраться с этой задачей.

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

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

Разработку алгоритма решения задачи и соответствующей диаграммы будем проводить методом, известным под названием “Проектирование сверху вниз”, или “Пошаговая детализация”. Идея метода очень проста — делим всю задачу на маленькие части и затем рассматриваем каждую часть и детализируем (уточняем) ее до отдельных элементарных действий, которые можно выполнить.

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

1. Нулевой шаг детализации

Как вы нашли наименьшее число? Вы просмотрели всю последовательность, рассматривая каждое число и проверяя, не наименьшее ли оно. Это повторяющееся действие — значит, должен быть цикл. Какой? Так как количество повторений известно, то может быть применен цикл с параметром, в N – S-диаграммах являющийся, как указывалось выше, циклом с предусловием:

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

Но как вы получили первое наименьшее число? Простейший способ сделать это — принять за наименьшее число первое число в последовательности чисел:

Проверим работу этого алгоритма на примере последовательности чисел: 51 25 35 79 13 26.

1. Установить в качестве наименьшего первое число последовательности (51).

2. Конец последовательности? — Нет.

1 Оператор, использовавшийся в первых языках программирования высокого уровня, при выполнении которого управление передавалось в другое место программы, отмеченное так называемой “меткой”. — Ред.

2 Фрагмент “Иначе” и соответствующий ему фрагмент “Действие n + 1” в блоке может отсутствовать. — Ред.

3 Т.е. здесь может быть применен неполный вариант блока ветвления (см. выше). — Ред.

Источник

Оператор выбора на блок-схеме

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

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

Поэтому знание и умение использовать оператор выбора Case важно в багаже знаний любого программиста.

Для начало определим, чем же является оператор вариантов ( выбора ).

Оператор выбора или вариантов Case

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

Иногда оператор Case называют еще оператором множественного выбора. Верны оба названия. Суть от них не меняется.

Оператор выбора на блок-схеме

Основы оператора выбора Case

Определимся с основными понятиями, изображенными на блок-схеме.

Селектор – это переменная или выражение порядкового типа данных.

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

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

К порядковому типу данных не относиться только вещественный тип ( real ).

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

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

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

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

Если после метки стоит не одни оператор, а несколько, то они заключаются в операторные скобки ( begin – end 😉

Предоставляю вашему вниманию задачу на вычисление суммы цифр в числе. Часто встречается такое условие в лабораторных работах.

Источник

Оператор множественного выбора в блок схемах

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

значение1: оператор1;
значение2: оператор2;
значение3: оператор3;
..
else операторN
end;

Значение «выражения» и значения констант («значение1» и т.д.) должны быть порядкового типа.
Выполнение оператора Case:
В заголовке оператора case вместо логического выражения фигурирует переменная или выражение порядкового типа, которую называют селектором. До этого в программе ей присваивается какое-либо значение. По ходу выполнения оператора case, значение переменной-селектора (значение выражения) сравнивается с различными, описанными в нем альтернативами (метками-значениями). Как только совпадение будет найдено, то выполняется блок кода при данной метке и происходит выход в основную ветку программы. Значения-метки являются константами, которые может принимать селектор. Их тип и тип селектора должны быть совместимы по присваиванию.

Если совпадений не будет, то выполняется блок else. Если блок else отсутствует (он является не обязательным), то никакой блок кода в операторе case не выполняется.
Если для разных переменных-селекторов требуется выполнить один и тот же оператор, то можно эти константы перечислить через запятую и после двоеточия указать этот оператор.
Пример 1:

Источник

Оператор выбора (переключатель) switch

Пожалуйста, приостановите работу AdBlock на этом сайте.

Начнём, как обычно, с примера задачи, которую поможет решить данный оператор.

Задача на оператор switch . Программа-тест.

Написать программу, которая проверяет знание начала и конца Второй мировой войны. Выберите правильный вариант ответа. Начало и конец Второй мировой войны:
a. 01.09.1939 — 2.09.1945
b. 01.09.1939 — 9.05.1945
c. 22.06.1941 — 9.05.1945
d. 22.06.1941 — 2.09.1945

При выборе правильного варианта вывести GOOD , при выборе неправильного BAD . Если выбран вариант, которого нет в ответах, вывести ERROR .

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

Используйте заголовочный файл locale.h и функцию setlocale в своих программах, если хотите использовать русские символы.

Шаблон оператора switch

Общий шаблон для оператора switch.

Работает он следующим образом.

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

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

Примеры правильных и неправильных выражений:

После того как выражение вычислено, его результат проверяется на соответствие с ключ_1 , потом с ключ_2 , потом с ключ_3 и т.д.

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

Внимательно следите за тем, чтобы у каждый ветки case был свой уникальный ключ.

Если совпадений не обнаружено, то выполняются операторы, записанные в ветке default .

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

Рис.1 Условная схема оператора выбора switch

Теперь давайте дополним нашу программу. В качестве выражения-переключателя у нас будет выступать переменная answer. В качестве ключей буквы a , b , c и d . Получится вот такой код.

Оператор break

Теперь давайте потестируем нашу программу. Запустим её и введём правильный ответ. Результат работы:

Рис.2 Результат работы программы Листинг 3.

Ууппс… Не ожидали? А я ожидал. Это одна из особенностей оператора switch , о которой я вам пока не рассказал. Эта особенность называется сквозное выполнение . Поясню, как это работает.

После того как нашлось совпадение в одной из веток case, если явно не указан выход из оператора switch , то выполнятся последовательно все остальные ветки, записанные в коде после той, в которой произошло совпадение. Если в какой-то из них будет оператор выхода, то выполнение оператора switch завершится.

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

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

Давайте добавим этот оператор в нашу программу.

Рис.3 Результат работы программы Листинг 4.

Теперь всё работает как надо. Теперь пара нюансов.

Ветви case оператора switch можно разместить в любом порядке.

Источник

Предмет: Информатика и ИКТ

Класс: 8 (9)

Тема: Организация множественного выбора на языке Pascal (case … of)

Тип урока по основной дидактической цели: комбинированный урок

Тип урока по основному способу проведения:сочетание различных форм: лекция, лабораторная работа

Форма организации работы: фронтальная, индивидуальная

Оборудование: компьютер, проектор, экран,

Методическое оснащение: учебник «Информатика и ИКТ» Семакин И. Г. и др., презентация к уроку «Множественное ветвление»

ПО:MS PowerPoint, PascalABC.exe

Цели:

  • образовательная: расширить представления учащихся об организации условного оператора на языке программирования Pascal, научить применять множественный выбор case … of при решении задач
  • развивающая: развивать алгоритмическое мышление при решения практических задач
  • воспитательная: воспитывать умение автоматизации собственной деятельности.

Планируемые результаты:

  • предметные: уметь применять множественный выбор case … ofпри решении задач множественного ветвления
  • личностные: иметь представление о программировании как сфере автоматизации деятельности человека;
  • метапредметные:уметь выбирать наиболее эффективные способы решения задач в зависимости от конкретных условий.

Формируемые УУД:

  • Познавательные УУД –восприятие и  извлечение необходимой информации из прослушанного текста, выбор наиболее эффективных способов решения задач в зависимости от конкретных условий.
  • Личностные УУД – выработка учебной мотивации.
  • Регулятивные УУД – составление плана и последовательности своих действий; контроль результатов своей деятельности; оценивание результатов своей деятельности в сравнении с ожидаемыми результатами.
  • Коммуникативные УУД – умение учувствовать в коллективном обсуждении проблемы.

План урока:

  1. Организационный момент (1 мин)
  2. Проверка домашнего задания (4 мин)
  3. Актуализация знаний (3 мин)
  4. Мотивация и целеполагание (4 мин)
  5. Объяснение нового материала (8 мин)
  6. Практическая работа (15 мин)
  7. Проверка уровня первичного усвоения знаний и умений (3 мин)
  8. Домашнее задание (2 мин)

Этап урока

Деятельность учителя

Деятельность учащихся

1

Организационный момент (1 мин)

Здравствуйте, ребята! Проверти свою готовность к уроку.

Приветствуют учителя.

2

Проверка домашнего задания (5 мин)

Домашним заданием была задача: Даны координаты точки на плоскости. Определить, в  какой четверти расположена точка, или на каких осях она лежит.

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

3

Актуализация знаний (2 мин)

Вспомним, что мы изучали на предыдущих уроках.

Назовите служебные слова:

  • Название программы
  • Раздел переменных
  • Раздел операторов
  • Неполное ветвление
  • Полное ветвление
  • Целочисленный тип величин
  • Вещественный тип величин

Назовите геометрическую фигуру при составлении блок-схемы, отвечающую за:

  • начало/конец программы
  • ввод/вывод данных
  • выполнение операций
  • условие

  • program
  • var
  • begin … end
  • if … then
  • if … then … else
  • integer
  • real
  • эллипс
  • параллелограмм
  • прямоугольник
  • ромб

4

Мотивация и целеполагание (4 мин)

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

Рассмотрим программу. Арифметические действия пронумерованы следующим образом: 1 – сложение, 2 – вычитание, 3 – умножение, 4 – деление. Вводятся 2 числа А и В и номер операции. Необходимо вывести результат данной операции.

Посмотрим на блок-схему к данной задаче (слайд 5)

Сколько проверок условия мы здесь видим?

А теперь программный код с вложенными ветвлениями (слайд 6)

Другой программный код без вложенных ветвлений (слайд 7).

Сколько в данном коде проверяется условий?

Второй способ нагляднее, но в первом не делаются лишние проверки, в нем вообще не проверяется условие N=4.

В таких ситуациях удобней использовать оператор множественного выбора. Поэтому цель сегодняшнего урока – применение оператора множественного ветвления при решении задач. Записываем тему нашего сегодняшнего урока «Организация множественного выбора на языке Pascal» (слайд 8)

3 условия

4 условия

5

Объяснение нового материала (8 мин)

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

Структура оператора выбора такова:

case<переменная>of

<значение1>:<действия1>;

<значение2>:<действия2>;

<значение3>:<действия3>;

……………………………;

else<действия N>;

end;

Запишем данную структуру себе в тетрадь.

Оператор выбора работает следующим образом. В зависимости от того, какое значение принимает переменная, выполняется тот или иной блок действий. В случае если переменная не принимает ни одно из перечисленных значений, “работает” ветвь “ELSE”. Но эта ветвь может и отсутствовать, в этом случае просто ничего не выполняется.

У множественного ветвления есть ограничения; в роли переменной может выступать только переменная порядкового типа. Но есть и положительные стороны — в качестве значений можно указывать целый диапазон.

Рассмотрим на нашем примере (слайд 9).

В зависимости от условий задач могут быть использованы такие записи, как:

1)case N of

      0..13: Write(‘текст1’);

      14..20: Write(‘текст2’);

      21..69: Write(‘текст3’);

      70..100:Write(‘текст4’);

  end;

2) case N of

2,4,8: Write(‘текст1’);

      3,9,27: Write(‘текст2’);

      4,16,64: Write(‘текст3’);

end;

6

Практическая работа (15 мин)

Рассмотрим и решим задачи. (Приложение 2)

Задача 1.Дано целое число в диапазоне от 1 до 5. Вывести строку – словесное описание соответствующей оценки (1 – «плохо», 2 – «неудовлетворительно», 3 – «удовлетворительно», 4 – «хорошо», 5 – «отлично»)

Какие в задаче будут исходные данные?

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

Что у на будет результатом программы?

Как будет организовываться оператор выбора?

Хорошо.

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

Задача 2.Дан номер месяца (1 – январь, 2 – февраль, …). Вывести название соответствующего времени года («зима», «весна» и т. д.).

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

Хорошо, пусть это будет переменная N.

Какого типа будет N? Не забываем, что данная переменная будет у нас использована в операторе выбора. Вспомните, какого типа могут быть переменные в case … of.

Верно, N:integer

Что у нас будет результатом программы?

Правильно.

Попробуйте самостоятельно описать оператор выбора. И проведите проверку программы на правильность.

Число от 1 до 5

Пусть это будет N:integer

Вывод оценки на экран

caseNof

если 1, то «плохо»

если 2, то «неудовлетворительно»

и т.д

Она переменная, отвечающая за номер месяца

Переменные порядкового типа, а значит N–integer

Вывод названия месяца на экран

7

Проверка уровня первичного усвоения знаний и умений (3 мин)

С помощью каких операторов можно организовать многовариантное ветвление?

Какой тип может иметь переменная, выступающая в роли параметра в операторе выбора CASE

Может ли отсутствовать ELSE в операторе выбора?

Как “работает” оператор выбора?

if…then…else, case…of

порядковый, перечисляемый

да

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

8

Домашнее задание (2 мин)

Записи в тетради.

Задача:В некотором учебном заведении действуют следующие правила приема. Абитуриенты сдают три экзамена. Если они набирают не менее 13 баллов, то это дает право поступить на дневное отделение, от 10 до 12 — вечернее, от 8 до 9 — заочное и ниже 8 баллов — отказ в приеме на учебу. Записать программу, которая в зависимости от суммы набранных баллов сообщает абитуриенту его права на поступление

Выполнить на отдельных листочках

Приложение 1

Вариант 1

Координаты точки

Расположение точки

(2,3)

(-3,-5)

(2,-1)

(3,0)

(-5,1)

Вариант 2

Координаты точки

Расположение точки

(-6,2)

(0,7)

(-1,-1)

(3,9)

(8,-4)

Приложение 2

Понравилась статья? Поделить с друзьями:
  • Покупка квартиры находящейся в ипотеке у банка пошаговая инструкция
  • Лекарство спектрацеф инструкция по применению цена
  • Мед препарат небилет инструкция по применению
  • Рикта эсмил 1а инструкция по эксплуатации
  • Планер своими руками чертежи схемы инструкция ежедневник