Можно ли изменить значение переменной во время работы программы

Содержание

  • 1 Переменные
    • 1.1 Классы памяти переменных
  • 2 Выражения в C++

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

Переменные

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

Пример описания целой переменной с именем а и вещественной переменной х:

int a; float x;

Общий вид оператора описания переменных:

[класс памяти] [const] тип имя [инициализатор];

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

  • Необязательный класс памяти может принимать одно из значений auto, extern, static и register. О них рассказывается чуть ниже.
  • Модификатор const показывает, что значение переменной изменять нельзя. Такую переменную называют именованной константой, или просто константой.
  • При описании можно присвоить переменной начальное значение, это называется инициализацией. Инициализатор можно записывать в двух формах — со знаком равенства: = значение или в круглых скобках: ( значение )

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

Примеры:
short int а = 1; // целая переменная а
const char С = ‘С’ ; // символьная константа С
char s, sf = ‘f’ ; // инициализация относится только к sf
char t (54);
float с = 0.22, x(3), sum;

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

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

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

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

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

Время жизни может быть постоянным (в течение выполнения программы) и временным (в течение выполнения блока).

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

Классы памяти переменных

Для задания класса памяти используются следующие спецификаторы:

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

extern — означает, что переменная определяется в другом месте программы (в другом файле или дальше по тексту). Используется для создания переменных, доступных во всех модулях программы, в которых они объявлены (Если переменная в том же операторе инициализируется, спецификатор extern игнорируется).

staticстатическая переменная. Время жизни — постоянное. Инициализируется один раз при первом выполнении оператора, содержащего определение переменной. В зависимости от расположения оператора описания статические переменные могут быть глобальными и локальными. Глобальные статические переменные видны только в том модуле, в котором они описаны.

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

int а; //1 глобальная переменная а
int main(){
int b; // 2 локальная переменная b
extern int x; //3 переменная x определена в другом месте
static int с; // 4 локальная статическая переменная с
а = 1; //5 присваивание глобальной переменной
int а; // 6 локальная переменная а
а = 2; //7 присваивание локальной переменной
::а = 3; //8 присваивание .глобальной переменной
return 0;
}
int x = 4; // 9 определение и инициализация х

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

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

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

Переменные и выражения в C++СоветНе жалейте времени на придумывание подходящих имен. Имя должно отражать смысл хранимой величины, быть легко распознаваемым и, желательно, не содержать символов, которые можно перепутать друг с другом, например, 1, l (строчная L) или I (прописная i). Для разделения частей имени можно использовать знак подчеркивания. Не давайте переменным имена, демонстрирующие знание иностранного слэнга — ведь «как вы лодку назовете, так она и поплывет». Как правило, переменным с большой областью видимости даются более длинные имена (желательно с префиксом типа), а для переменных, вся жизнь которых проходит на протяжении нескольких строк исходного текста, хватит и одной буквы с комментарием при объявлении.

Описание переменной может выполняться в форме объявления или определения. Объявление информирует компилятор о типе переменной и классе памяти, а определение содержит, кроме этого, указание компилятору выделить память в соответствии с типом переменной. В C++ большинство объявлений являются одновременно и определениями. В приведенном выше примере только описание 3 является объявлением, но не определением.

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

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

Примеры выражений:

(а + 0.12)/6
х && у || !z
(t * sin(x)-1.05e4)/((2 * к + 2) * (2 * к + 3))

Операции выполняются в соответствии с приоритетами. Для изменения порядка выполнения операций используются круглые скобки. Если в одном выражении записагю несколько операций одинакового приоритета, унарные операции, условная операция и операции присваивания выполняются справа палево, остальные — слева направо. Например, а = b = с означает [ccie_cpp]а = (Ь = с), а а + b + с означает (а + Ь) + с. Порядок вычисления подвыражений внутри выражений не определен: например, нельзя считать, что в выражении (sin(x + 2) + cos(y + 1)) обращение к синусу будет выполнено раньше, чем к косинусу, и что х + 2 будет вычислено раньше, чем y+1.

Результат вычисления выражения характеризуется значением и типом. Например, если а и b — переменные целого типа и описаны так:

int а = 2, b = 5;

то выражение а + b имеет значение 7 и тип 1nt, а выражение а = b имеет значение, равное помещенному в переменную а (в данному случае 5) и тип, совпадающий с типом этой переменной. Таким образом, в C++ допустимы выражения вида а = b = с: сначала вычисляется выражение b = с, а затем его результат становится правым операндом для операции присваивания переменной а.

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

Преобразования бывают двух типов:

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

К первому типу относится, например, преобразование целого числа в вещественное (без потери точности) и наоборот (возможно, с потерей точности), ко второму — преобразование знакового целого в беззнаковое.

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

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

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

По материалам книги Павловской Т.А «C++ программирование на языке высокого уровня».

I want to know if there is any way I can change the value of a variable during execution time, using Visual Studio 2008? I know I can do this on Eclipse (put a breakpoint, add a watcher and edit whatever variable value I want) but I didn’t find this feature on VS yet?

Any idea?

Thanks.

abatishchev's user avatar

abatishchev

97.2k85 gold badges297 silver badges432 bronze badges

asked Jun 4, 2010 at 8:14

Amokrane Chentir's user avatar

Amokrane ChentirAmokrane Chentir

29.7k37 gold badges114 silver badges157 bronze badges

In VS if you hover your mouse over this variable, you’ll notice it displays it’s value in a tooltip. You can click into this tooltip and edit it manually — though you need to provide a value of the correct format for the data type. Strings also need quotes «».

There is likely a way to do this via some of the other debugging windows, but I don’t know of any. I’ll leave those answers to someone else.

answered Jun 4, 2010 at 8:17

Adam Houldsworth's user avatar

Adam HouldsworthAdam Houldsworth

62.9k10 gold badges148 silver badges186 bronze badges

0

In VS, there is the command/immediate window (when debugging, under the Debug -> Windows menu) which allows you to change variable values.

A more visual way is the Variable window.

answered Jun 4, 2010 at 8:16

Oded's user avatar

1

Use the Immediate Window.

Use the Immediate window to debug and evaluate expressions, execute
statements, and print variable values. The Immediate window evaluates
expressions by building and using the currently selected project.

answered Jun 4, 2010 at 8:16

Leniel Maccaferri's user avatar

Leniel MaccaferriLeniel Maccaferri

99.4k45 gold badges364 silver badges474 bronze badges

Yes. There are several Ways.

Double-click the variables value in the Watch, Local or Auto’s window. You can also do this from the immediate window.

answered Jun 4, 2010 at 8:17

Mitch Wheat's user avatar

Mitch WheatMitch Wheat

294k43 gold badges465 silver badges538 bronze badges

You can do it using one of the following ways

  • User Immediate window
  • Using quickwatch window

Both allow user to change the variables value.

answered Jun 4, 2010 at 8:23

Ram's user avatar

RamRam

11.3k15 gold badges61 silver badges92 bronze badges

You can do this as follows:
1. Put a breakpoint just after the line of code where you want to update the varaible value.
2. Run the application till the breakpoint is hit.
3. Just hover over the variable you want to edit and the varable name and value will be shown.
4. Click on the Value field and edit it, press enter.

Mission accomplished…

Mustafa Ekici's user avatar

answered Jun 4, 2010 at 8:21

Chinjoo's user avatar

ChinjooChinjoo

2,6776 gold badges26 silver badges45 bronze badges

1

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

int num = 1;
std::cout << num << std::endl;
// тип данных указывать не надо, так как переменная была определена выше
num = 2;
std::cout << num << std::endl;
  1
  2

C++ статически типизированный язык, это значит что тип переменной задается при определении и больше не меняется.

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

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

num = "Hello";
// error: assigning to 'int' from incompatible type

Интересно то, что компилятор делает такую проверку без запуска кода на выполнение, именно поэтому такой вид типизации называют статическим (статика – без запуска). В динамических языках, таких как Javascript, Ruby, PHP или Python, подобное поведение не является ошибкой, переменная может легко изменить свой тип в процессе работы.

Задание

В коде определена переменная со значением 10. Переопределите значение этой переменной и присвойте ей значение на единицу больше.

Упражнение не проходит проверку — что делать? 😶

Если вы зашли в тупик, то самое время задать вопрос в «Обсуждениях». Как правильно задать вопрос:

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

В моей среде код работает, а здесь нет 🤨

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

Мой код отличается от решения учителя 🤔

Это нормально 🙆, в программировании одну задачу можно выполнить множеством способов. Если ваш код прошел проверку, то он соответствует условиям задачи.

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

Прочитал урок — ничего не понятно 🙄

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

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

Полезное

  • Если в редакторе есть запись // BEGIN и // END, то код нужно писать между этими строчками.

Определения

  • Переменная — Способ сохранить информацию и дать ей имя для последующего использования в коде.

Нашли ошибку? Есть что добавить? Пулреквесты приветствуются https://github.com/hexlet-basics

Типы
данных и переменные

Для
обработки данных их необходимо хранить
в памяти. При этом к этим данным надо

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

Переменная

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

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

целые
переменные
– тип int
(от
английского integer
целый),
занимают 4 байта в памяти;

вещественные
переменные,
которые могут иметь дробную часть (тип
float

от английского floating
point –
плавающая
точка) , занимают 4 байта в памяти

символы
(тип
char

от английского character

символ), занимают 1 байт в памяти

Любую
переменную, которые вы будете использовать
в программе, необходимо объявлять
сказать компьютеру, чтобы он выделил
для неё ячейку памяти нужного размера
и присвоил ей имя. Переменные обычно
объявляются в начале программы. Для
объявления надо написать название типа
переменных (int,
float
или
char),
а затем через запятую имена всех
объявляемых переменных. При желании
можно сразу записать в новую ячейку
нужное значение, как показано в примерах
ниже. Если переменной не присваивается
никакого значения, то в ней находится
«мусор», то есть то, что было там раньше.

Примеры.

Вычисление
суммы двух чисел (ввод и вывод)

Пример.
Ввести
с клавиатуры два целых числа и вывести
на экран их сумму.

Сразу
запишем решение задачи на языке Си.

• Программа
чаще всего содержит 4 части:

o
объявление
переменных;

o
ввод
исходных данных;

o
обработка
данных (вычисления);

o
вывод
результата.

• Перед
вводом данных необходимо вывести на
экран подсказку (иначе компьютер будет

ждать
ввода данных, а пользователь не будет
знать, что от него хочет машина).

• Символы
n
в
функции printf
обозначают
переход в начало новой строки.

• Для
ввода данных используют функцию scanf.

Формат
ввода – это строка в кавычках, в которой
перечислены один или несколько

форматов
ввода данных:

%d
ввод
целого числа (переменная типа int)

%f
ввод
вещественного числа (переменная типа
float)


ввод
одного символа (переменная типа char)

oПосле
формата ввода через запятую перечисляются
адреса ячеек памяти, в которые надо
записать введенные значения. Почувствуйте
разницу:

a
значение
переменной a

&a
адрес
переменной a

o
Количество
форматов в строке должно быть равно
количеству адресов переменных в

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

и
b

целые
переменные, то следующие вызовы функций
ошибочны

scanf
( «%d%d», &a );
куда
записывать второе введенное число?

scanf
( «%d%d», &a, &b, &c );
не
задан формат для переменной c

scanf
( «%f%f», &a, &b );
нельзя
вводить целые переменные по ве-

щественному
формату

• Для
вычислений используют оператор
присваивания
,
в
котором o
справа
от знака равенства стоит арифметическое
выражение, которое надо вычислить

o
слева
от знака равенства ставится имя
переменной, в которую надо записать
результат

c
= a + b;
//
сумму a и b записать в c

• Для
вывода чисел и значений переменных на
экран используют функцию printf

содержание
скобок при вызове функции printf
очень
похоже на функцию scanf

oСначала
идет символьная строка — формат вывода
— в которой можно использовать

специальные
символы

%d
вывод
целого числа

%f
вывод
вещественного числа


вывод
одного символа

%s
вывод
символьной строки

n
переход
в начало новой строки

все
остальные символы (кроме некоторых
других специальных команд) просто
выводятся на экран.

oОдной
строки формата недостаточно: в ней
сказано, в какое место выводить данные,
но

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

printf
( «
Результат:
%d + %d = %d n», a, 5, a+5 );

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

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

Составляющие
арифметических выражений

Арифметические
выражения, стоящие в правой части
оператора присваивания, могут содержать

• целые
и вещественные числа (в вещественных
числах целая и дробная часть разделяются

точкой,
а не запятой, как это принято в математике)

• знаки
арифметических действий

+
сложение,
вычитание

*
/
умножение,
деление

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

• вызовы
стандартных функций

abs(i)
модуль
целого числа i

fabs(x)
модуль
вещественного числа x

sqrt(x)
квадратный
корень из вещественного числа x

pow(x,y)
вычисляет
x
в
степени y

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

Особенности
арифметических операций

При
использовании деления надо помнить,
что

При
делении целого числа на целое остаток
от деления отбрасывается, таким образом,
7/4
будет
равно 1. Если же надо получить вещественное
число и не отбрасывать остаток, делимое
или делитель надо преобразовать к
вещественной форме. Например:

int
i, n;

float
x;

i
= 7;

x
= i / 4;
//
x=1, делится целое на целое

x
= i / 4.;
//
x=1.75, делится целое на дробное

x
=(float) i / 4;
//
x=1.75, делится дробное на целое

n
= 7. / 4.;
//
n=1, результат записывается в

//
целую переменную

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

ostatok
= a % b;

Приоритет
арифметических операций

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

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

• операции
в скобках, затем…

• вызовы
функций, затем…

• умножение,
деление и остаток от деления, слева
направо, затем…

• сложение
и вычитание, слева направо.

Специфические
операторы присваивания

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

например:

i
= i + 1;

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

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

Инкремент
и декремент

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

i
++;
//
или…

++
i;

что
равносильно оператору присваивания

i
= i + 1;

и
быстрого уменьшения на единицу
(декремента)

i—
—;
//
или…

— — i;

что
равносильно оператору присваивания

i
= i — 1;

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

Сокращенная
запись арифметических выражений

Если
мы хотим изменить значение какой-то
переменной (взять ее старое значение,
что-то

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

Целые
числа

Первым
параметром при вызове функций scanf
и
printf
должна
стоять символьная

строка,
определяющая формат ввода или вывода
данных. Для функции scanf,
которая выполняет ввод данных, достаточно
просто указать один из форматов %d,
%f
или
%c
для
ввода целого числа, вещественного числа
или символа, соответственно. В то же
время форматная строка в функции printf
позволяет
управлять выводом на экран, а именно,
задать размер поля, которое отводится
для данного числа.

Ниже
показаны примеры форматирования при
выводе целого числа 1234.
Чтобы увидеть

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

Для
вывода символов используются такие же
приемы форматирования, но формат %d
заменяется
на %c.

Вещественные
числа

Для
вывода (и для ввода) вещественных чисел
могут использоваться три формата: %f,

%e
и
%g.
В таблице показаны примеры использования
формата %f.

Формат
%e
применяется
в научных расчетах для вывода очень
больших или очень ма-

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

выделенной мантиссой
и
порядком).
Например, число 123.45
может
быть записано в стандартном виде как
123.45 =
1.2345×102
.
Здесь 1.2345
–мантисса
(она всегда находится в интервале от 1
до 10), а 2 – порядок (мантисса умножается
на 10 в этой степени). При выводе по формату
%e
также
можно задать число позиций, которые
отводятся для вывода числа, и число цифр
в дробной части мантиссы. Порядок всегда
указывается в виде двух цифр, перед
которыми стоит буква e
и
знак порядка (плюс или минус).

Формат
%g
применяется
для того, чтобы удалить лишние нули в
конце дробной части

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

Выбор
вариантов

Необходимость
ветвлений

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

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

• оператор
if
— else
для
выбора из двух вариантов

• оператор
множественного выбора switch
для
выбора из нескольких вариантов

Условный
оператор
if
— else

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

По
условию задачи нам надо вывести один
из двух вариантов ответа: если первое
число

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

• Условный
оператор имеет следующий вид:

• Эта
запись представляет собой единый
оператор, поэтому между скобкой,
завершающей

блок
«если»
и
словом else
не
могут находиться никакие операторы.

• После
слова else
никогда
НЕ
ставится
условие — блок «иначе» выполняется
тогда, ко-

гда
основное условие, указанное в скобках
после if,
ложно.

• Если
в блоке «если» или в блоке «иначе» только
один оператор, то фигурные скобки можно
не ставить.

• В
условии можно использовать знаки
логических отношений

><больше,
меньше

>=
<=
больше
или равно, меньше или равно

==
равно

!=
не
равно

• В
языке Си любое число, не равное нулю,
обозначает истинное условие, а ноль —
ложное условие.

• Если
в блоке «иначе» не надо ничего делать
(например: «если в продаже есть мороженое,
купи мороженое», а если нет …), то весь
блок «иначе» можно опустить и использовать
сокращенную форму условного оператора:

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

• В
блоки «если» и «иначе» могут входить
любые другие операторы, в том числе и
другие

вложенные
условные операторы; при этом оператор
else
относится
к ближайшему предыдущему if:

• Чтобы
легче разобраться в программе, все блоки
«если» и «иначе» (вместе с ограничивающими
их скобками) сдвигаются вправо на 2-3
символа (запись «лесенкой»).

Сложные
условия

Простейшие
условия состоят из одного отношения
(больше, меньше и т.д.). Иногда надо

написать
условие, в котором объединяются два или
более простейших отношений. Например,фирма
отбирает сотрудников в возрасте от 25
до 40 лет (вклчительно). Тогда простейшая
программа могла бы выглядеть так:

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

o
операцияИ
требуется
одновременное выполнение двух условий

условие_1
&& условие_2

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

ности)

o
операция
ИЛИ

требуется выполнение хотя бы одного из
двух условий (или обоих

сразу)

условие_1
|| условие_2

Таблица
истинности запишется в виде

o
в
сложных условиях иногда используется
операция НЕ

отрицание условия (или обратное условие)

!
условие

Например,
следующие два условия равносильны

A
> B ! ( A <= B )

• Порядок
выполнения (приоритет)
логических операций и отношений:

o
операции
в скобках, затем

o
операция
НЕ,
затем

o
логические
отношения >,
<,
>=,
<=,
==,!=,
затем

o
операцияИ,
затем

o
операций
ИЛИ

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

Переключатель
switch
(множественный
выбор)

Если
надо выбрать один из нескольких вариантов
в зависимости от значения некоторой

целой
или символьной переменной, можно
использовать несколько вложенных
операторов if,

но
значительно удобнее использовать
специальный оператор switch.

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

• Оператор
множественного выбора switch
состоит
из заголовка и тела оператора, заключенного
в фигурные скобки.

• В
заголовке после ключевого слова switch
в
круглых скобках записано имя переменной

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

• Каждому
варианту соответствует метка case,
после которой стоит одно из возможных

значений
этой переменной и двоеточие; если
значение переменной совпадает с одной
из

меток,
то программа переходит на эту метку и
выполняет все последующие операторы.

• Оператор
break
служит
для выхода из тела оператора switch.
Если
убрать все операторы break,
то, например, при нажатии на букву a
будет
напечатано

Антилопа

Барсук

Волк

Не
знаю таких!

• Если
значение переменной не совпадает ни с
одной из меток, программа переходит на

метку
default
(по
умолчанию, то есть если ничего другого
не указано).

• Можно
ставить две метки на один оператор.
Например, чтобы программа реагировала
как на большие, так и на маленькие буквы,
надо в теле оператораswitch
написать
так:

и
так далее.

Циклы

Необходимость
циклов

Теперь
посмотрим, как вывести на экран это
самое приветствие 10 раз. Конечно, можно
написать 10 раз оператор printf,
но если надо вывести строку 200 раз, то
программа значительно увеличится.
Поэтому надо использовать циклы.

Цикл
это
последовательность команд, которая
выполняется несколько раз.

В
языке Си существует несколько видов
циклов.

Цикл
с известным числом шагов (
for)

Часто
мы заранее знаем заранее (или можем
рассчитать), сколько раз нам надо
выполнить

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

repeat

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

В
языке Си цикла repeat
нет,
а есть цикл for.
Он не скрывает ячейку-счетчик, а требует

явно
объявить ее (выделить под нее память),
и даже позволяет использовать ее значение
в теле цикла. Ниже показан пример
программы, которая печатает приветствие
10 раз.

• Цикл
for
используется
тогда, когда количество повторений
цикла заранее известно или

может
быть вычислено.

• Цикл
for
состоит
из заголовка и тела цикла.

• В
заголовке после слова for
в
круглых скобках записываются через
точку с запятой три

выражения:

o
начальные
значения
:
операторы присваивания, которые
выполняются один раз перед выполнением
цикла;

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

o
действия
в конце каждого шага
цикла
(в большинстве случаев это операторы
присваивания).

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

Примеры
заголовков:

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

• В
тело цикла могут входить любые другие
операторы, в том числе и другие циклы
(такой

прием
называется «вложенные
циклы»
).

• Для
того, чтобы легче разобраться в программе,
все тело цикла и ограничивающие его

скобки
сдвигаются вправо на 2-3 символа (запись
«лесенкой»).

Квадрат
числа

Напишем
программу, которая вводит с клавиатуры
натуральное число N
и
выводит на эк-

ран
квадраты всех целых чисел от 1 до N
таком
виде

Квадрат
числа 1 равен 1

Квадрат
числа 2 равен 4

Мы
объявили две переменные: N

максимальное число, i

вспомогательная переменная,которая в
цикле принимает последовательно все
значения от 1
до
N.
Для
ввода значения N
мы
напечатали на экране подсказку и
использовали функцию scanf
с
форматом %d
(ввод
целого числа).

При
входе в цикл выполняется оператор i
= 1
,
и
затем переменная i
с
каждым шагом

увеличивается
на единицу (i
++
).
Цикл выполняется пока истинно условие
i
<= N
.
В
теле цикла единственный оператор вывода
печатает на экране само число и его
квадрат по заданному формату. Для
возведения в квадрат или другую невысокую
степень лучше использовать умножение.

Цикл
с условием (
while)

Очень
часто заранее невозможно сказать,
сколько раз надо выполнить какую-то
операцию, но можно определить условие,
при котором она должна заканчиваться.
Такое задание на русском языке может
выглядеть так: делай эту работу до тех
пор, пока
она
не будет закончена(пили бревно, пока
оно не будет распилено; иди вперед, пока
не дойдешь до двери). Слово «пока» на
английском языке записывается как
while,
и так же называется еще один вид цикла.

Пример.
Ввести
целое число и определить, сколько в нем
цифр.

Для
решения этой задачи обычно применяется
такой алгоритм. Число делится на 10 и от-

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

• Цикл
while
используется
тогда, когда количество повторений
цикла заранее неизвестно

и
не может быть вычислено.

• Цикл
while
состоит
из заголовка и тела цикла.

• В
заголовке после слова while
в
круглых скобках записывается условие,
при котором

цикл
продолжает выполняться. Когда это
условие нарушается (становится ложно),
цикл

заканчивается.

• В
условии можно использовать знаки
логических отношений и операций

><больше,
меньше

>=
<=
больше
или равно, меньше или равно

==
равно

!=
не
равно

• Если
условие неверно в самом начале, то цикл
не выполняется ни разу (это цикл с
предусловием).

• Если
условие никогда не становится ложным
(неверным),
то цикл никогда не заканчива-

ется;
в таком случае говорят, что программа
«зациклилась»

это серьезная логическая

ошибка.

• В
языке Си любое число, не равное нулю,
обозначает истинное условие, а ноль —
ложное условие:

while
( 1 ){ … }
//
бесконечный цикл

while
( 0 ){ … }
//
цикл не выполнится ни разу

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

• В
тело цикла могут входить любые другие
операторы, в том числе и другие циклы
(такой

прием
называется «вложенные
циклы»
).

• Для
того, чтобы легче разобраться в программе,
все тело цикла и ограничивающие его

скобки
сдвигаются вправо на 2-3 символа (запись
«лесенкой»).

Цикл
с постусловием (
do
— while
)

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

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

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

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

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

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

В
отличие от предыдущей программы, теперь
надо при каждом делении определять
оста-

ток
(последняя цифра числа равна остатку
от деления его на 10) и суммировать все
остатки в специальной переменной.

• Цикл
do—while
используется
тогда, когда количество повторений
цикла заранее неизвестно и не может
быть вычислено.

• Цикл
состоит из заголовка do,
тела
цикла и завершающего условия.

• Условие
записывается в круглых скобках после
слова while,
цикл продолжает выполняться, пока
условие верно; когда условие становится
неверно, цикл заканчивается.

• Условие
проверяется только в конце очередного
шага цикла (это цикл с
постусловием
),

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

• Если
условие никогда не становится ложным
(неверным), то цикл никогда не заканчива-

ется;
в таком случае говорят, что программа
«зациклилась»

это серьезная логическая

ошибка.

• Тело
цикла заключается в фигурные скобки;
если в теле цикла стоит всего один
оператор,

скобки
можно не ставить.

• В
тело цикла могут входить любые другие
операторы, в том числе и другие циклы
(такой

прием
называется «вложенные
циклы»
).

• Для
того, чтобы легче разобраться в программе,
все тело цикла и ограничивающие его

скобки
сдвигаются вправо на 2-3 символа (запись
«лесенкой»).

Досрочный
выход из цикла

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

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

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

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

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

while(1){…}
(напомним,
что в языке Си единица считается истинным
условием). Выйти

из
такого цикла можно только с помощью
специального оператора break.

В
то же время, если второе число равно
нулю, то оставшуюся часть цикла не надо
выпол-

нять.
Для этого служит оператор continue.

• Если
только внутри цикла можно определить,
надо ли делать вычисления в теле цикла
и надо ли продолжать цикл (например, при
вводе исходных данных), часто используют
бесконечный цикл, внутри которого стоит
оператор выхода break:

• С
помощью оператора break
можно
досрочно выходить из любых циклов: for,
while,

do—while.

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

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

Суммы
с заданным числом элементов

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

• каждый
элемент представляет собой дробь;

• числитель
дроби при переходе к следующему элементу
возрастает на единицу;

• знаменатель
дроби с каждым шагом увеличивается в 2
раза;

• знаки
перед дробями чередуются (плюс, минус
и т.д.).

Любой
элемент последовательности можно
представить в виде

Т

где
изменение переменных z,
c
и
d
описываются
следующей таблицей (для первых пяти
элементов)

У
переменной z
меняется
знак (эту операцию можно записать в виде
z
= -z
),
значение переменной c увеличивается на
единицу (c
++
),
а переменная d
умножается
на 2 (d
= d*2
).
Алгоритм решения задачи можно записать
в виде следующих шагов:

• записать
в переменную S
значение
0;
в этой ячейке будет накапливаться сумма;

• записать
в переменные z,
c
и
d
начальные
значения (для первого элемента):

z
= 1, c = 1, d = 2.

• сделать
20 раз:

o
добавить
к сумме значение очередного элемента;

o
изменить
значения переменных z,
c
и
d
для
следующего элемента.

Суммы
с ограничивающим условием

Рассмотрим
более сложную задачу, когда количество
элементов заранее неизвестно.

Пример

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

Цикл
закончится тогда, когда переменная a
(она
обозначает модуль очередного элемента
последовательности) станет меньше
0,001. Чтобы программа вошла в цикл на
первом шаге, в эту переменную надо
записать любое значение, большее, чем
0,001.

Очевидно,
что если переменная a
не
будет уменьшаться, то условие в заголовке
цикла

всегда
будет истинно и программа «зациклится».

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

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

Adam Houldsworth
04 июнь 2010, в 09:24

Поделиться

В VS существует команда/немедленное окно (при отладке в меню Debug → Windows), которое позволяет вам изменять переменную значения.

Более визуальным способом является окно с переменными.

Oded
04 июнь 2010, в 08:34

Поделиться

Leniel Macaferi
04 июнь 2010, в 08:51

Поделиться

Да. Существует несколько способов.

Дважды щелкните значение переменных в окне Watch, Local или Auto. Вы также можете сделать это в ближайшем окне.

Mitch Wheat
04 июнь 2010, в 09:44

Поделиться

Вы можете сделать это следующим образом:
1. Поместите точку останова сразу после строки кода, где вы хотите обновить значение переменной.
2. Запустите приложение, пока не ударит точка останова.
3. Просто наведите указатель мыши на переменную, которую хотите изменить, и будет показано имя и значение переменной.
4. Нажмите поле «Значение» и отредактируйте его, нажмите «Enter».

Миссия выполнена…

Chinjoo
04 июнь 2010, в 09:38

Поделиться

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

  • Окно пользователя Immediate
  • Использование окна быстрого просмотра

Оба позволяют пользователю изменять значение переменных.

Ram
04 июнь 2010, в 09:09

Поделиться

Ещё вопросы

  • 1При добавлении нового окна на рабочий стол происходит какое-либо событие?
  • 0Поиск заголовка, который соответствует значению json
  • 02-я угловая директива пуста, когда 2 директивы находятся на странице
  • 0PHP передать по ссылке
  • 0Сортировать почтовые индексы в алфавитном и числовом формате?
  • 1Android, Drupal & DrupalCloud или учебник по Android-xmlrpc?
  • 0Определить, что сервер работает локально по его IP-адресу
  • 0MYSql подготовить, не принимая мой запрос: таблицы не используются
  • 0Почему я получаю ошибку «ошибка сегментации» при запуске программы?
  • 0Как отобразить индийский символ валюты вместо рупий
  • 0«Неожиданно в макроопределении»
  • 0Javascript новичок проблема, преобразование числа в любое слово
  • 0Как разобрать переменную на странице header ()
  • 1Android Bluetooth вылетает после изменения ориентации
  • 1Менеджеры нескольких транзакций — выбор одного во время выполнения — Spring
  • 0Отображение результатов SELECT MySQLi с помощью синтаксиса PHP с альтернативной структурой управления
  • 0Почему длина зашифрованного текста, сгенерированного php через mcrypt_encrypt (), отличается от длины, сгенерированной C с помощью библиотеки шифрования openssl
  • 0c ++: реализовать функцию write_padding
  • 0Как получить идентификатор категории в пользовательской вкладке редактирования категории?
  • 0как получить с помощью scanf строку (char *) из пользовательского ввода, разделенную двойными кавычками и содержащую пробелы [closed]
  • 0Диспетчер кучи Windows и сегменты кучи
  • 0Событие наведения для нескольких парных навигационных элементов
  • 0операторы <<, >> не удается перегрузить для определенного класса
  • 0Сбой фонового переключателя jquery
  • 0Phonegap: Создание базы данных Sqlite с простыми запросами
  • 0AngularJS ngHref внутри ngRepeat не оценивает значение
  • 0Неизвестный столбец «localhost.localdomain» в «списке полей»
  • 1Генератор пользовательских языков для Blockly
  • 0A: активен на пустой ссылке не работает
  • 1пока цикл не вырвется
  • 0Проблема с ng-repeat после вызова $ compile для связывания динамического HTML в угловых
  • 0Создайте событие в symfony2 для визуализации файла ветки
  • 0jQuery UI диалоговое окно модальное открывается только один раз с помощью селектора класса
  • 0Подсчитайте количество строк и обновите — Php Mysql
  • 0MySql подзапрос с подсчетом и порядком по RAND () для 2 таблиц
  • 1Используйте LINQ, чтобы получить объекты со свойствами = другое свойство объектов
  • 0Уникальные ограничения для таблицы отношений «многие ко многим»
  • 0Отправить пользовательский запрос HTTP POST с помощью cURL или socket_create
  • 1Попытка нарисовать изображение на JPanel
  • 0угловое добавление подтверждения ввода из директивы
  • 0Угловая проблема вставки конечной точки Instagram
  • 0Угловые маршруты не дают мне никакого выхода
  • 1Вывести двухстрочную строку как однорядную строку Tkinter
  • 1Получить количество пустых текстовых полей
  • 0PHP запускает запрос для каждой переменной массива и возвращает результаты в таблицу
  • 1JavaScript не загружается из-за изменения URL и страница не загружается
  • 0mysql Неверное количество столбцов во входных данных CSV при импорте CSV-файла
  • 1Проблема с использованием модуля cloudstorage в python
  • 1Ожидается целочисленный аргумент, есть число с плавающей точкой
  • 0Скачать файл и вставить значения в базу данных


1


1 Переменные Переменная – это величина, имеющая имя, тип и значение. Значение переменной можно изменять во время работы программы. Значение Имя Поместится? ? Другой тип данных В переменной хранятся данные определенного типа! !


2


2 Имена переменных В именах МОЖНО использовать латинские буквы (A-Z) цифры знак подчеркивания _ заглавные и строчные буквы не различаются В именах НЕЛЬЗЯ использовать русские буквы пробелы скобки, знаки +, =, !, ? и др. имя не может начинаться с цифры Какие имена правильные?? AXby R&B 4Wheel Вася PesBarbos TU154 [QuQu] _ABBA A+B


3


3 Переменные Типы переменных: integer{ целая } real{ вещественная } и другие… Объявление переменных: var a, b, c: integer; Выделение места в памяти variable – переменная тип – целые список имен переменных


4


4 Как записать значение в переменную? a := 5; Оператор присваивания При записи нового значения старое стирается! ! 5 5 Оператор – это команда языка программирова- ния (инструкция). Оператор присваивания – это команда для записи нового значения в переменную.


5


5 Блок-схема линейного алгоритма начало конец c := a + b; ввод a, b вывод c блок «начало» блок «ввод» блок «процесс» блок «вывод» блок «конец»


6


6 Как ввести значение с клавиатуры read ( a ); 1.Программа ждет, пока пользователь введет значение и нажмет Enter. 2.Введенное значение записывается в переменную a. ! Оператор ввода 5 5


7


7 Ввод значений двух переменных через пробел: через Enter: a 25 b 30 a 25 b 30 read ( a, b ); Ввод значений двух переменных (через пробел или Enter).


8


8 Оператор вывода { вывод значения переменной a} { вывод значения переменной a и переход на новую строчку} { вывод текста } {вывод текста и значения переменной c} write( a ); writeln( a ); writeln( ‘Привет!’ ); writeln( ‘Ответ: ‘, c ); writeln ( a, ‘+’, b, ‘=’, c );


9


Оператор условного перехода. IF… THEH…ELSE


10


Условный оператор с одной ветвью if then При выполнении такого оператора вычисляется условие, и если оно истинно, то выполняются команда1, в противном случае выполнение программы продолжается со следующей за условным оператором команды. условие Команда 1


11


Условный оператор с двумя ветвями if then команды1 else команды2 условие Команда 1 Команда 2 При выполнении такого оператора вычисляется условие, и если оно истинно, то выполняются команда1, в противном случае выполнение программы продолжается командой 2


12


12 Разветвляющиеся алгоритмы Задача. Ввести два целых числа и вывести на экран наибольшее из них. Идея решения: надо вывести на экран первое число, если оно больше второго, или второе, если оно больше первого. Особенность: действия исполнителя зависят от некоторых условий (если … иначе …). Алгоритмы, в которых последовательность шагов зависит от выполнения некоторых условий, называются разветвляющимися.


13


13 Вариант 1. Блок-схема начало max:= a; ввод a,b вывод max a > b? max:= b; конец да нет полная форма ветвления блок «решение» Если a = b? ?


14


14 Вариант 1. Программа max := a ; max := b ; полная форма условного оператора program qq; var a, b, max: integer; begin writeln(‘Введите два целых числа’); read ( a, b ); if a > b then begin end else begin end; writeln (‘Наибольшее число ‘, max); end.


15


15 Условный оператор if then begin {что делать, если условие верно} end else begin {что делать, если условие неверно} end; if then begin {что делать, если условие верно} end else begin {что делать, если условие неверно} end; Особенности: перед else НЕ ставится точка с запятой вторая часть ( else …) может отсутствовать (неполная форма) если в блоке один оператор, можно убрать слова begin и end


16


16 Что неправильно? if a > b then begin a := b; end else b := a; end; if a > b then begin a := b; end else b := a; end; if a > b then begin a := b; else begin b := a; end; if a > b then begin a := b; else begin b := a; end; if a > b then begin a := b; end; else begin b := a; end; if a > b then begin a := b; end; else begin b := a; end; if a > b then begin a := b; end else b > a begin b := a; end; if a > b then begin a := b; end else b > a begin b := a; end; begin end begin end


17


17 Вариант 2. Блок-схема неполная форма ветвления начало max:= a; ввод a,b вывод max max:= b; конец да нет b > a?


18


18 Вариант 2. Программа program qq; var a, b, max: integer; begin writeln(‘Введите два целых числа’); read ( a, b ); max := a; if b > a then max := b; writeln (‘Наибольшее число ‘, max); end. неполная форма условного оператора


19


19 Вариант 2Б. Программа program qq; var a, b, max: integer; begin writeln(‘Введите два целых числа’); read ( a, b ); max := b; if ??? then ??? writeln (‘Наибольшее число ‘, max); end. max := a; a > b


20


20 Что неправильно? if a > b then begin a := b; else b := a; if a > b then begin a := b; else b := a; if a > b then begin a := b; end; else b := a; if a > b then begin a := b; end; else b := a; if a > b then else begin b := a; end; if a > b then else begin b := a; end; if a > b then a := b; else b := a; end; if a > b then a := b; else b := a; end; a := b end a := b if b >= a then b := a; if b >= a then b := a;


21


21 Задания «8»: Ввести три числа и найти наибольшее из них. Пример: Введите три числа: Наибольшее число 15 «10»:Составить программу нахождения решения квадратного уравнения.


22


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