
- •1).Net Framework: общая характеристика, основные компоненты.
- •2).Net Framework: виртуальная машина и управляемый код
- •3) Алфавит языка c#. Лексемы: идентификаторы, ключевые слова, неименованные компоненты.
- •4) Типы данных языка с#: концепция, основные типы.
- •5) Переменные: правила описания, инициализация.
- •Область видимости переменных
- •6) Операции языка c#. Правила вычисления выражений.
- •1) Операция присваивания
- •2) Арифметические операции
- •3) Поразрядные операции
- •4) Операции отношения:
- •5) Логические операции:
- •6) Операция «приведение к типу»:
- •7) Строковые преобразования. Класс Convert:
- •8) Понятие исключения:
- •7) Операторы языка c#. Составной оператор. Блок. Метки
- •1) Оператор присваивания:
- •2) Вызов метода:
- •3) Блок или составной оператор:
- •4) Операторы ветвления:
- •4.1. Оператор if:
- •4.2. Оператор switch:
- •5) Операторы цикла:
- •5.1. Оператор for:
- •5.2. Оператор while:
- •5.3. Оператор foreach:
- •6) Операторы перехода:
- •6.1. Оператор goto:
- •6.2. Операторы break и continue:
- •6.3. Оператор return:
- •8) Операторы выбора: if и switch
- •4.1. Оператор if:
- •4.2. Оператор switch:
- •9) Операторы цикла.
- •5.1. Оператор for:
- •5.2. Оператор while:
- •5.3. Оператор foreach:
- •10) Операторы передачи управления.
- •11) Логические и поразрядные операции языка с#.
- •12) Классы. Основные понятия, спецификаторы доступа.
5.2. Оператор while:
Цикл while является универсальным видом цикла, включаемым во все языки программирования. Тело цикла выполняется до тех пор, пока остаётся истинным выражение while. В языке C# у этого вида цикла две модификации – с проверкой условия в начале (цикл с предусловием) и в конце цикла (цикл с постусловием). Первая модификация имеет следующий синтаксис:
while (выражение) оператор
Эта модификация соответствует стратегии: "сначала проверь, а потом делай". В результате проверки может оказаться, что и делать ничего не нужно. Тело такого цикла может ни разу не выполняться. Конечно же, возможно и зацикливание. В нормальной ситуации каждое выполнение тела цикла – это очередной шаг к завершению цикла. С помощью этого вида цикла факториал вычисляется так:
i = 1; r = 1; while (i <= n) { r = r * i; i++; }
Цикл, проверяющий условие завершения в конце, соответствует стратегии: "сначала делай, а потом проверь". Вот синтаксис этой модификации:
do оператор while(выражение);
Тело такого цикла выполняется, по меньшей мере, один раз. Пример записи цикла:
i = 1; r = 1; do { r = r * i; i++; }while (i <= n)
5.3. Оператор foreach:
Новым видом цикла, не унаследованным от С++, является цикл foreach, удобный при работе с массивами. Рассмотрим его подробно в другой моей статье при изучении массивов Массивы в c#.
10) Операторы передачи управления.
Оператор GOTO Конструкция оператора имеет вид:
goto <имя метки>;
***
<имя метки>: оператор;
Оператор goto передает управление непосредственно на оператор, обозначенный меткой <имя метки>. Обозначеный оператор выполняется сразу же после выполнения оператора goto, если оператор с данной меткой отсутствует или есть больше одного оператора обозначенного одной и той же меткой, то выдается сообщение про ошибку. Пример:
if ( errorcode > 0 )
goto exit;
***
exit: return(errorcode);
В примере оператор goto передает управление на оператор, обозначенный меткой exit, когда происходит ошибка. Метка - это простой идентификатор. Ее имя не должно совпадать с любыми служебными или зарезервированными словами С. Названия меток для одной ф-и должны быть разными.
Оператор CONTINUE Данный оператор передает управление на следующую итерацию в операторах цикла do, for, while. Операторы, которые остались в теле вышеуказаных циклов при этом не выполняются. В середине циклу do, while такая итерация означает переход к перерасчету условных выражений и цикла. Для оператора forтакая итерация приводит к приросту переменных цикла і перерасчету условного выражения цикла.
Пример:
while (i > 0 )
{
x = f(i);
if (x == 1) continue;
y = x*x;
}
Тело оператора выполняется, если і > 0. сначала значение f(i) присваивается переменной х, потом, если х = 1 выполняется оператор сontinue, при этом остальные операторы тела цикла игнорируются и выполнение цикла повторяется с его заголовка.
Пример:
Теперь предлагается для рассмотрения исходник квадратного уравнения, написанный с использованием вышеуказаных операторов, с соответствующими месту комментариями. //кв.уравнение
#include <stdio.h> //библиотека ввода/вывода
#include <math.h> //библиотека матем. функций
#include <conio.h> //библиотека для работы с экраном - для getch() и clrscr()
#include <iostream.h> //библиотека потокового ввода/вывода - для cout и cin
float a,b,c,d,x1,x2; //переменные
void main () //главная ф-я
{
clrscr(); //очистим экран
cout << "nVvedit A->"; //организуем ввод коэфициэнтов уравнения с помощью
cin >> a; //ф-й потокового ввода-вывода (cout и cin с библиотеки iostream.h)
cout << "nVvedit B->";
cin >> b;
cout << "nVvedit C->";
cin >> c;
d = pow(b,2)-(4*a*c); //найдем дискриминант
if (d < 0) goto d1; //проверяем условия, и, с помощью
if (d==0) goto d2; //меток переходим к соответствующему блоку
if (d>0) goto d3;
d1: { //блок 1: дискриминант < 0
printf("nKoreniv nema");
goto exit; //безусловный переход на exit
}
d2: { //блок 2: дискриминант=0
x1=-b/(2*a)
printf("nx = %f",x1);
goto exit; //безусловный переход на exit
}
d3: { //блок 3: дискриминант>0
x1=(-b-sqrt(d))/(2*a);
x2=(-b+sqrt(d))/(2*a);
printf("nx1 = %f",x1);
printf("nx2 = %f",x2);
goto exit; //безусловный перехід на exit
}
exit: //метка использована для перехода к
//концу программы
getch(); //программа ждет нажатия любой клавиши для перехода далее
} //конец програми
Заметка:
Не стоит злоупотреблять операторами передачи управления - я думаю (хотя, не только я), что это рушит логическую структуру программы, однако, если они действительно необходимы, ими можно пользоваться.