Реферат по предмету "Информатика, программирование"


Операторы языка Си

Кафедра: Автоматика иВычислительная Техника
 
ОПЕРАТОРЫ ЯЗЫКА СИ

Содержание
 
ХАРАКТЕРИСТИКИ ОПЕРАТОРОВ
ОПИСАНИЯ ОПЕРАТОРОВ
Пустой оператор
Оператор безусловного перехода
Операторы условного перехода
Оператор if
Оператор if-else
Оператор if-else if
Оператор переключатель switch
Операторы цикла
Оператор цикла for
Оператор цикла с предусловием while
Оператор цикла с постусловием do-while
ПРАКТИЧЕСКИЕ ЗАДАНИЯ
Убираем оператор goto
Упрощаем логические выражения
Взаимозаменяемость циклов
Компактный for
Обходимся без операторов условного перехода
ЛАБОРАТОРНЫЕ ЗАДАНИЯ
Линейное уравнение
Ввод русской буквы
Таблица умножения
ASCII-таблица
Машинный ноль и машинный эпсилон
ДОПОЛНИТЕЛЬНЫЕ ЗАДАНИЯ
БИБЛИОГРАФИЧЕСКИЙ СПИСОК
Характеристикиоператоров
Все операторы языка С могут быть условно разделены наследующие категории:
— условные операторы, к которым относятся операторусловия if и оператор выбора switch;
— операторы цикла (for,while,do while);
— операторы перехода (break, continue, return, goto);
— другие операторы (оператор «выражение»,пустой оператор).
Операторы в программе могут объединяться в составныеоператоры с помощью фигурных скобок. Любой оператор в программе может быть помеченметкой, состоящей из имени и следующего за ним двоеточия.
Все операторы языка С, кроме составных операторов,заканчиваются точкой с запятой ";". Описания операторов Пустой оператор
Пустой оператор состоит только из точки с запятой. Привыполнении этого оператора ничего не происходит. Он обычно используется вследующих случаях:
— в операторах do, for, while, if в строках,когда место оператора не требуется, но по синтаксису требуется хотя бы одиноператор;
— при необходимости пометить фигурную скобку.
Синтаксис языка С требует, чтобы после меткиобязательно следовал оператор. Фигурная же скобка оператором не является.Поэтому, если надо передать управление на фигурную скобку, необходимоиспользовать пустой оператор.
Пример:
int main ( )
{
;
{
if (...) goto a;    /* переход на скобку */
{ ...
}
a:; 
}
return 0;
}Оператор безусловногоперехода
Использование оператора безусловного перехода gotoв практике программирования на языке С настоятельно не рекомендуется, так какон затрудняет понимание программ и возможность их модификаций.
Формат этого оператора следующий:
goto имя-метки;
...
имя-метки: оператор;
Оператор goto передает управление на оператор,помеченный меткой имя-метки. Помеченный оператор должен находиться в тойже функции, что и оператор goto, а используемая метка должна бытьуникальной, т.е. одно имя-метки не может быть использовано для разныхоператоров программы. Имя-метки — это идентификатор.
Любой оператор в составном операторе может иметь своюметку. Используя оператор goto, можно передавать управление внутрьсоставного оператора. Но нужно быть осторожным при входе в составной оператор,содержащий объявления переменных с инициализацией, так как объявлениярасполагаются перед выполняемыми операторами и значения объявленных переменныхпри таком переходе будут не определены. Операторы условногопереходаОператорif
Формат оператора:
if (выражение) оператор;
Выполнение оператора if начинается с вычислениявыражения.
Далее выполнение осуществляется по следующей схеме:
— если выражение истинно (т.е. отлично от 0), товыполняется оператор.
— если выражение ложно, то выполняется следующий за ifоператор.
После выполнения оператора if значениепередается на следующий оператор программы, если последовательность выполненияоператоров программы не будет принудительно нарушена использованием операторовперехода.
Пример:    if(i
Оператор if-else
Формат оператора:
if (выражение) оператор-1; else оператор-2;
Выполнение оператора if начинается с вычислениявыражения.
Далее выполнение осуществляется по следующей схеме:
— если выражение истинно (т.е. отлично от 0), товыполняется оператор-1.
— если выражение ложно (т.е. равно 0), то выполняется оператор-2.
После выполнения оператора if значениепередается на следующий оператор программы, если последовательность выполненияоператоров программы не будет принудительно нарушена использованием операторовперехода.
Пример:
if (i
else { j = i-3;   i++; }
Этот пример иллюстрирует также и тот факт, что наместе оператор-1, так же как и на месте оператор-2 могут находиться сложныеконструкции.
Допускается использование вложенных операторов if.Оператор if может быть включен в конструкцию if или в конструкцию else другогооператора if. Чтобы сделать программу более читабельной, рекомендуется группироватьоператоры и конструкции во вложенных операторах if, используя фигурные скобки.Если же фигурные скобки опущены, то компилятор связывает каждое ключевое словоelse с наиболее близким if, для которого нет else.
Примеры:
int main ( )
{
int t=2, b=7, r=3;
if (t>b)
{
if (b
}
else r=t;
return (0);
}
В результате выполнения этой программы r станетравным 2.
Если же в программе опустить фигурные скобки, стоящиепосле оператора if, то программа будет иметь следующий вид:
int main  ( )
{
int t=2,b=7,r=3;
if ( a>b )
if ( b
else
r=t;
return (0);
}
В этом случае r получит значение равное 3, таккак ключевое слово else относится ко второму оператору if, которыйне выполняется, поскольку не выполняется условие, проверяемое в первомоператоре if. Операторif-else if
Следующий фрагмент иллюстрирует вложенные операторы if:
char ZNAC;
int x,y,z;
:
if (ZNAC == '-') x = y — z;
else if (ZNAC == '+') x = y + z;
else if (ZNAC == '*') x = y * z;
else if (ZNAC == '/') x = y / z;
else ...
Из рассмотрения этого примера можно сделать вывод, чтоконструкции использующие вложенные операторы if, являются довольногромоздкими и не всегда достаточно надежными. Другим способом организациивыбора из множества различных вариантов является использование специального операторавыбора switch. Оператор переключатель switch
Оператор switch предназначен для организациивыбора из множества различных вариантов. Формат оператора следующий:
switch ( выражение )
{   [объявление]
:
[ case  константное-выражение1]: [список-операторов1]
[ case  константное-выражение2]: [список-операторов2]
:
:
[ default: [ список операторов ]]
}
Выражение, следующее за ключевым словом switchв круглых скобках, может быть любым выражением, допустимыми в языке С, значениекоторого должно быть целым.
Значение этого выражения является ключевым для выбораиз нескольких вариантов. Тело оператора smitch состоит из несколькихоператоров, помеченных ключевым словом case с последующимконстантным-выражением. Следует отметить, что использование целого константноговыражения является существенным недостатком, присущим рассмотренному оператору.
Так как константное выражение вычисляется во времятрансляции, оно не может содержать переменные или вызовы функций. Обычно вкачестве константного выражения используются целые или символьные константы.
Все константные выражения в операторе switchдолжны быть уникальны. Кроме операторов, помеченных ключевым словом case,может быть, но обязательно один, фрагмент, помеченный ключевым словом default.
Список операторов может быть пустым, либо содержатьодин или более операторов. Причем в операторе switch не требуется заключатьпоследовательность операторов в фигурные скобки.
Отметим также, что в операторе switch можноиспользовать свои локальные переменные, объявления которых находятся передпервым ключевым словом case, однако в объявлениях не должнаиспользоваться инициализация.
Схема выполнения оператора switch следующая:
— вычисляется выражение в круглых скобках;
— вычисленные значения последовательно сравниваются сконстантными выражениями, следующими за ключевыми словами case;
— если одно из константных выражений совпадает созначением выражения, то управление передается на оператор, помеченныйсоответствующим ключевым словом case;
— если ни одно из константных выражений не равновыражению, то управление передается на оператор, помеченный ключевым словом default,а в случае его отсутствия управление передается на следующий после switchоператор.
Отметим интересную особенность использования оператораswitch: конструкция со словом default может быть не последней втеле оператора switch. Ключевые слова case и default в телеоператора switch существенны только при начальной проверке, когдаопределяется начальная точка выполнения тела оператора switch. Всеоператоры, между начальным оператором и концом тела, выполняются внезависимости от ключевых слов, если только какой-то из операторов не передаступравления из тела оператора switch. Таким образом, программист долженсам позаботится о выходе из case, если это необходимо. Чаще всего дляэтого используется оператор break.
Для того, чтобы выполнить одни и те же действия дляразличных значений выражения, можно пометить один и тот же оператор несколькимиключевыми словами case.
Пример:
int i=2;
switch (i)
{
case 1: i += 2;
case 2: i *= 3;
case 0: i /= 2;
case 4: i -= 5;
default:      ;
}
Выполнение оператора switch начинается соператора, помеченного case 2. Таким образом, переменнаяiполучает значение, равное 6, далее выполняется оператор, помеченныйключевым словом case 0, а затем case 4, переменная iпримет значение 3, а затем значение -2. Оператор, помеченныйключевым словом default, не изменяет значения переменной.
Рассмотрим ранее приведенный пример, в которомиллюстрировалось использование вложенных операторов if, переписаннойтеперь с использованием оператора switch.
char ZNAC;
int x,y,z;
switch (ZNAC)
{
case '+':  x = y + z;    break;
case '-':  x = y — z;    break;
case '*':  x = y * z;    break;
case '/':  x = u / z;    break;
default: ;
}
Использование оператора break позволяет внеобходимый момент прервать последовательность выполняемых операторов в телеоператора switch, путем передачи управления оператору, следующему за switch.
Отметим, что в теле оператора switch можноиспользовать вложенные операторы switch, при этом в ключевых словах caseможно использовать одинаковые константные выражения.
Пример:
switch (a)
{
case 1: b=c; break;
case 2:
switch (d)
{
case 0:  f=s;  break;
case 1:  f=9;  break;
case 2:  f-=9; break;
}
case 3: b-=c; break;
:
}ОператорыциклаОператорциклаfor
Оператор for — это наиболее общий способорганизации цикла. Он имеет следующий формат:
for ( выражение 1; выражение 2; выражение 3 ) тело
Выражение 1обычно используется для установления начального значения переменных,управляющих циклом. Выражение 2 — это выражение, определяющее условие,при котором тело цикла будет выполняться. Выражение 3 определяетизменение переменных, управляющих циклом после каждого выполнения тела цикла.
Схема выполнения оператора for:
1. Вычисляется выражение 1.
2. Вычисляется выражение 2.
3. Если значения выражения 2 отлично от нуля(истина), выполняется тело цикла, вычисляется выражение 3 иосуществляется переход к пункту 2, если выражение 2 равно нулю (ложь),то управление передается на оператор, следующий за оператором for.
Существенно то, что проверка условия всегдавыполняется в начале цикла. Это значит, что тело цикла может ни разу невыполниться, если условие выполнения сразу будет ложным.
Пример:
int main()
{
int i,b;
for (i=1; i
В этом примере вычисляются квадраты чисел от 1 до 9.
Некоторые варианты использования оператора forповышают его гибкость за счет возможности использования нескольких переменных,управляющих циклом.
Пример:
int main()
{
int top,  bot;
char string[100],  temp;
for ( top=0, bot=100; top
{
 temp=string[top];
string[bot]=temp;
}
return 0;
}
В этом примере, реализующем запись строки символов вобратном порядке, для управления циклом используются две переменные top и bot.Отметим, что на месте выражение 1 и выражение 3 здесьиспользуются несколько выражений, записанных через запятую, и выполняемыхпоследовательно.
Другим вариантом использования оператора forявляется бесконечный цикл. Для организации такого цикла можно использоватьпустое условное выражение, а для выхода из цикла обычно используютдополнительное условие и оператор break.
Пример:
for (;;)
{
...
...  break;
...
}
Так как согласно синтаксису языка С оператор можетбыть пустым, тело оператора for также может быть пустым. Такая формаоператора может быть использована для организации поиска.
Пример:
for (i=0; t[i]
В данном примере переменная цикла i принимаетзначение номера первого элемента массива t, значение которого больше 10.Операторциклас предусловием while
Оператор цикла while называется циклом с предусловиеми имеет следующий формат:
while (выражение) тело;
В качестве выражения допускается использовать любоевыражение языка Си, а в качестве тела любой оператор, в том числе пустой илисоставной. Схема выполнения оператора while следующая:
1. Вычисляется выражение.
2. Если выражение ложно, то выполнение оператора whileзаканчивается и выполняется следующий по порядку оператор. Если выражениеистинно, то выполняется тело оператора while.
3. Процесс повторяется с пункта 1.
Оператор цикла вида
for (выражение-1; выражение-2; выражение-3) тело;
может быть заменен оператором while следующим образом:
выражение-1;
while (выражение-2)

тело
выражение-3;
}
Так же как и при выполнении оператора for, в оператореwhile вначале происходит проверка условия. Поэтому оператор while удобноиспользовать в ситуациях, когда тело оператора не всегда нужно выполнять.
Внутри операторов for и while можно использоватьлокальные переменные, которые должны быть объявлены с определениемсоответствующих типов. Оператор цикла с постусловием do-while
Оператор цикла do while называется оператором цикла спостусловием и используется в тех случаях, когда необходимо выполнить телоцикла хотя бы один раз. Формат оператора имеет следующий вид:
do тело while (выражение);
Схема выполнения оператора do while:
1. Выполняется тело цикла (которое может бытьсоставным оператором).
2. Вычисляется выражение.
3. Если выражение ложно, то выполнение оператора dowhile заканчивается и выполняется следующий по порядку оператор. Если выражениеистинно, то выполнение оператора продолжается с пункта 1.
Чтобы прервать выполнение цикла до того, как условиестанет ложным, можно использовать оператор break.
Операторы while и do while могут быть вложенными.
Пример:
int i,j,k;
...
i=0;  j=0;  k=0;
do { i++;
j--;
while (a[k]
}
while (i/>/> Практические задания Убираем оператор goto
Запишите без оператора goto следующий фрагмент
m:      if(A)
{
B;
gotom;
}Упрощаем логическиевыражения
Перепишите операторы условного перехода так, чтобы ихусловия не содержали логических операций.
if(A && B || !C)
D;
else if(B || C)
E;
else
F;Взаимозаменяемостьциклов
Вычислить факториал n! тремяспособами с помощью трех видов цикла.Компактный for
Запишите двойной цикл
for (int i = 0; i
{
printf(“\n”);
for (int j = 0; j
printf(“%3d”, i*j);
}
с помощью одинарного цикла с теми же счетчиками i, j.Обходимся безоператоров условного перехода
Замените оператор
if(A)
B;
Эквивалентным оператором цикла for. Лабораторные задания Линейное уравнение
Операторыif-else if, switch. Написатьпрограмму, которая решает линейное уравнение a ∙ x + b = 0. Использовать операторы if-else if. Логические выражения в условиях этих операторов недолжны содержать логических операций && и ||. Предусмотреть четыревозможных исхода при решении уравнения:
-     нет решения,
-     найдено единственное решение,
-     любое число является решением,
-     решение единственное, но не входитв диапазон типа переменной x.
В операторе if-else ifопределить некоторую переменную flag, которая принимает четырезначения, соответствующих возможному исходу решения. Вывод текстовой информациис результатами решения организовать с использованием оператора switch,условие которого содержит flag. Выход из программы должен быть единственным.
Организовать проверку корректности данных при вводекоэффициентов a и b.Ввод русской буквы
Операторы while, switch. С клавиатуры вводятся символы. После анализа символа программа выводитна экран одно из следующих сообщений:
-     русская гласная буква такая-то,
-     русская согласная буква такая-то,
-     английская буква такая-то,
-     символ псевдографики такой-то,
-     другой символ.
В программе вместо числовых констант вида 128 использоватьсимвольные константы вида ‘А’. Обработать символы с расширенным кодом. Выход изпрограммы происходит по нажатию клавиши Escape.Таблица умножения
Использование двойного цикла for. В программе вводятся шестнадцатеричные числа m и n,после чего на экран выводится таблица умножения в шестнадцатеричной системесчисления следующего вида
Таблица 1. 1 2 … n 1 2 … m
Из таблицы должно быть видно, что например, 112 = 121,122 = 144, 132 = 169.
При больших размерах таблицу целесообразно выводить вфайл. Это можно сделать из командной строки DOS с помощью команды
tabl.exe >> tabl.txtASCII-таблица
Использование двойного цикла for. Вывести на экран ascii-таблицу без управляющих символов в следующем виде
Таблица 2. 2 3 E F 1 2 F
Символ с шестнадцатеричным кодом 0xSTнаходится на пересечении столбца S и строки T.
Для вывода на экран графических представленийуправляющих символов необходимо записывать их коды напрямую в видеопамять, безиспользования стандартных функций типа printf (см.[1]).Машинный ноль имашинный эпсилон
Операторы while. Найтимашинный ноль и машинный эпсилон для вещественных типов данных: float,double, long double.
Сравнить с теоретическими результатами и со справочнойинформацией в Help оболочки.
Учесть, что в арифметических выражениях вида 1+x>1компилятор использует повышенную точность во внутренних вычислениях. Поэтому значение1+x необходимо запомнить во вспомогательной переменнойтого же типа, который имеет переменная x.  Дополнительные задания
1.  Найдите сумму цифр целого числатипа unsigned long. Число вводится с клавиатуры.
2.  Найдите вероятность счастливогошестизначного трамвайного билета. У такого билета сумма первых трех цифрравняется сумме трех последних.
3.  С клавиатуры вводится число типа int.Найдите сумму битов этого числа.
4.  Вывести на экран все простые числадо N включительно. Число N имеет тип unsigned int и вводится с клавиатуры.

БИБЛИОГРАФИЧЕСКИЙСПИСОК
1.   Керниган Б., Ритчи Д., Фьюэр А. Язык программированияСи: Задачи по языку Си. М.: Финансы и статистика, 1985. – 192с.
2.   Керниган Б., Ритчи Д. Язык программирования Си. М.: Финансыи статистика, 1992. — 272с.
3.  Подбельский В.В., Фомин С.С.Программирование на языке Си. Учеб. пособие. М.:Финансы и статистика, 2004. 600 с.


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

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :

Пишем реферат самостоятельно:
! Как писать рефераты
Практические рекомендации по написанию студенческих рефератов.
! План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом.
! Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач.
! Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты.
! Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ.

Читайте также:
Виды рефератов Какими бывают рефераты по своему назначению и структуре.

Сейчас смотрят :