Параметр цикла – это переменная, которая при каждом входе в цикл принимает новое значение.

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

пока <условие> , повторять

нц

<тело цикла>

кц

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

нц

<тело цикла>

кц

повторять до тех пор, пока <условие>

Пример 1. Последовательно вводятся N целых чисел. Найти максимальное из них.

Решение: Задача решается с помощью циклического алгоритма. Так, как число повторений цикла заранее известно (это N) , то при решении этой задачи можно использовать цикл с параметром.

Сначала задаем N- число вводимых чисел, а затем в цикле вводим целые числа (в переменную K) и выбираем максимальное из них S.

На рисунке 1 представлен алгоритм задачи в виде блок-схемы и на алгоритмическом языке.

Контрольный пример разработан и оформлен с помощью трассировочной таблицы 1.

Пример 2. Вычислите бесконечную сумму с заданной точностью Е (Е > 0). Считайте, что требуемая точность достигнута, если очередное слагаемое, которое следует добавить к сумме, оказалось по модулю меньше, чем Е, - это и все последующие слагаемые можно уже не учитывать (X -вещественное).

Параметр цикла – это переменная, которая при каждом входе в цикл принимает новое значение. - student2.ru

           
    Параметр цикла – это переменная, которая при каждом входе в цикл принимает новое значение. - student2.ru
 
    Параметр цикла – это переменная, которая при каждом входе в цикл принимает новое значение. - student2.ru
 
  Параметр цикла – это переменная, которая при каждом входе в цикл принимает новое значение. - student2.ru

Параметр цикла – это переменная, которая при каждом входе в цикл принимает новое значение. - student2.ru

           
    Параметр цикла – это переменная, которая при каждом входе в цикл принимает новое значение. - student2.ru
 
  Параметр цикла – это переменная, которая при каждом входе в цикл принимает новое значение. - student2.ru
    Параметр цикла – это переменная, которая при каждом входе в цикл принимает новое значение. - student2.ru
 

Параметр цикла – это переменная, которая при каждом входе в цикл принимает новое значение. - student2.ru Параметр цикла – это переменная, которая при каждом входе в цикл принимает новое значение. - student2.ru

       
    Параметр цикла – это переменная, которая при каждом входе в цикл принимает новое значение. - student2.ru
  Параметр цикла – это переменная, которая при каждом входе в цикл принимает новое значение. - student2.ru
 

Рисунок 1 - Представление алгоритма задачи в виде блок-схемы и на алгоритмическом языке

Таблица 1 - Контрольный пример

шаг действие n j k S Проверка условия
ввод N        
дляj от 1 доN повторять     Если j <=N, то НЦ
ввод k    
если j=1   да
тоS=k кв
если к>s Нет, кв, кц
дляj от 1 доN повторять Если j <=N, то нц
ввод k  
если j=1 Нет, кв
если к>s Да
тоS=k кв, кц
дляj от 1 доN повторять Если j <=N, то нц
ввод k -2  
если j=1 -2 Нет, кв
если к>s -2 Нет, кв, кц
дляj от 1 доN повторять -2 Если j <=N, то нц
ввод k  
если j=1 Нет, кв
если к>s Нет, кв, кц
дляj от 1 доN повторять Если j <=N, то нц
ввод k  
если j=1 Нет, кв
если к>s Нет, кв, кц
дляj от 1 доN повторять Если j >=N, то КЦ
вывод S        


Решение примера 2: Сначала необходимо проанализировать, как изменяются слагаемые и сумма – убывают или возрастают и насколько быстро. Следует просчитать вручную контрольный пример, чтобы правильно определить диапазон вводимых значений и предусмотреть возможные ошибки. Например, в данном примере число X не следует брать больше трех, а Е меньше 0,0001. Оператор еслиi=200тоbreak кв обеспечивает выход из цикла в случае зацикливания.

Блок-схема алгоритма решения задачи представлена на рисунке 2.

 
  Параметр цикла – это переменная, которая при каждом входе в цикл принимает новое значение. - student2.ru

Параметр цикла – это переменная, которая при каждом входе в цикл принимает новое значение. - student2.ru

 
 
y=x

Параметр цикла – это переменная, которая при каждом входе в цикл принимает новое значение. - student2.ru

c=y/n

     
  Параметр цикла – это переменная, которая при каждом входе в цикл принимает новое значение. - student2.ru
 
    Параметр цикла – это переменная, которая при каждом входе в цикл принимает новое значение. - student2.ru

Рисунок 2 – Блок-схема алгоритма решения задачи

На алгоритмическом языке алгоритм решения задачи представлен ниже.

алгцикл

цел i, n

вещ e, x, s, c, y

Нач

ввод x, e

i=1 // циклическая переменная i содержит значения переменной k

s=0 // сумма слагаемых

n=1 // факториал: Параметр цикла – это переменная, которая при каждом входе в цикл принимает новое значение. - student2.ru

y=x // значение числителя: x в степени k

c=y/n // первое слагаемое

пока abs(c)>e, повторять

нц

s=s+c // накапливаем сумму

i=i+1 // увеличиваем на единицу циклическую переменную

n=n*i // насчитываем факториал

y=y*x // значение числителя: x в степени k

c:=y/n // очередное слагаемое

если i=200

тоbreak

кв

кц

вывод s

Кон

Практическая часть

1. Изучите теоретическую часть.

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

Варианты Задание1
Последовательно вводятся N целых чисел. Определите, каких среди них чисел больше: положительных или отрицатель­ных
Последовательно вводятся N целых чисел.Сосчитайте сколькоиз них совпадают с первым числом
Последовательно вводятся N целых чисел.Найдите разницу между наибольшим и наименьшим из них
Последовательно вводятся N целых чисел. Найдите среднее арифметическое этих чисел

Задание 2: Вычислите бесконечную сумму с заданной точностью Е (Е > 0). Считайте, что требуемая точность достигнута, если вычислена сумма нескольких первых слагаемых и очередное слагаемое оказалось по модулю меньше, чем Е, - это и все последующие слагаемые можно уже не учитывать.

1) Параметр цикла – это переменная, которая при каждом входе в цикл принимает новое значение. - student2.ru 2) Параметр цикла – это переменная, которая при каждом входе в цикл принимает новое значение. - student2.ru 3) Параметр цикла – это переменная, которая при каждом входе в цикл принимает новое значение. - student2.ru 4) Параметр цикла – это переменная, которая при каждом входе в цикл принимает новое значение. - student2.ru

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

Вопросы для контроля

1. Какие операторы циклов Вы знаете?

2. В чем особенности каждого из них?

Литература

1. Информатика. Учебник – 3-е перераб изд. / Под редакцией Н. В. Макаровой. – М.: Финансы и статистика, 2004. – 768с.

2. Симонович С. В.,Информатика: Базовый курс. – СПБ.: Питер, 2001 – 640с.

Практическая работа №3

Тема: Составление спецификации программы.

Цель: Научиться составлять спецификацию программы.

Оборудование и программное обеспечение:

1 Персональный компьютер IBM PC/AT.

2 Операционная система Windows XP.

3 Текстовый редактор Word.

Теоретическая часть

Постановка задачи(problem definition) — это точная формулировка реше­ния задачи на компьютере с описанием входной и выходной информации.

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

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

Обязательные разделы для спецификации:

1 Название задачи: Краткое описание решаемой задачи, название программы. Система программирования и требования к аппаратному обеспечению.

2 Описание: Подробно излагается постановка задачи, модели (формулы, с помощью которых решается задача).

3 Управление режимами работы программы: Указываются названия и назначения компонентов, с помощью которых реализуется управление режимами работы программы (пунктов меню, кнопок, …). Определяются названия событий, связанных с ними.

4 Входные данные: Описываются входные данные: их тип, диапазон (значения, которые они могут принимать).

5 Выходные данные: Описываются выходные данные. Указывается, в каком виде они должны быть представлены.

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

7 Примечания: Сообщаются дополнительные сведения, полезные при реализации (ориентировочное время работы, рекомендации по реализации, мотивировка принятия решений).

8 Примеры работы программного комплекса. Приводится 1 или несколько примеров работы программного комплекса, на которых проводилась её отладка и тестирование

Пример 1: Спецификация программы «Корни квадратного уравнения»

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

1. Название задачи: Корни квадратного уравнения

Название программы: Korni

Система программирования: (Delphi) С++Builder

Компьютер: IBM PC Сeleron 3000

2. Описание

Дано: Три целых числа а, b, с

Определить: Корни квадратного уравнения

Математическая модель задачи

а) уравнение ax2 + bx + с = 0 является квадратным, если а <> 0;

б) для определения корней квадратного уравнения необходимо найти дискриминант по формуле

D = b2 - 4 aс;

в) если D < 0, то уравнение не имеет корней;

г) если D = 0, то уравнение имеет один корень, значение которого находится по формуле x = -b/2a;

д) если D > 0, то уравнение имеет два корня, значения которых находятся по формулам

x1 = (-b + sqrt(D))/2a, x2 = (-b - sqrt(D))/2a;

3. Управление режимами работы программы

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

- Расчет (содержит алгоритм расчета дискриминанта, корней квадратного уравнения и вывода результатов пользователю);

- Очистка (содержит алгоритм очистки строк ввода данных и поля вывода результата);

- Выход (завершает работу программы).

4. Входные данные

Пользователь должен ввести в строки ввода (Edit1, Edit2, Edit3) коэффициенты квадратного уравнения – целые числа, которые будут помещены в переменные целого типа (а, b, с типа int).

5. Выходные данные

а) вещественная переменная (D типа double) будет хранить промежуточный результат – значение дискриминанта;

б) вещественные переменные (x1 и x2 типа double) будут содержать значения корней квадратного уравнения. Результат будет выведен в поле Memo1 и должен содержать одно из следующих сообщений:

- Уравнение не имеет корней // (D < 0)

- Уравнение имеет один корень, значение которого равно …. // (D = 0)

- Уравнение имеет два корня, значения которых равны …. и …. // (D > 0)

- Уравнение не является квадратным // (а = 0)

6. Ошибки

- необходимо проверить значение первого коэффициента а, вводимого в строку (Edit1) и обработать исключительную ситуацию с помощью оператора если..то..иначе (if… else);

- при преобразовании текста из строк ввода (Edit1, Edit2, Edit3) в целые числа (а, b, с) может произойти ошибка преобразования типов, которую следует обработать с помощью блока try… catch (с помощью события OnKeyPressстрок ввода).

7. Примеры работы программного проекта

а) а = 1 6) а = 1 в) а = 2 г) а = 0

b = 1 b = 2 b = 5 b = 3

с = 1 с = 1 с = 2 с = 5

Результаты работы программы:

а) Уравнение не имеет корней

6) Уравнение имеет один корень, значение которого равно -1

в) Уравнение имеет два корня значения которых равны -0,5 и -2

г) Уравнение не является квадратным

Практическая часть

1 Изучите теоретическую часть.

2 Составьте спецификацию программы одного из вариантов заданий:

Вар Задание
Даны три точки Параметр цикла – это переменная, которая при каждом входе в цикл принимает новое значение. - student2.ru , Параметр цикла – это переменная, которая при каждом входе в цикл принимает новое значение. - student2.ru и Параметр цикла – это переменная, которая при каждом входе в цикл принимает новое значение. - student2.ru . Определить, которая из точек находится ближе к началу координат.
На плоскости ХОУ задана своими координатами точка А. Указать, где она расположена: на какой оси или в каком координатном углу.
Даны действительные числа х, у, z. Вычислить: Параметр цикла – это переменная, которая при каждом входе в цикл принимает новое значение. - student2.ru .
Определить, является ли треугольник со сторонами a, b, c равносторонним.
Даны три точки Параметр цикла – это переменная, которая при каждом входе в цикл принимает новое значение. - student2.ru , Параметр цикла – это переменная, которая при каждом входе в цикл принимает новое значение. - student2.ru и Параметр цикла – это переменная, которая при каждом входе в цикл принимает новое значение. - student2.ru . Определить, между которыми из них расстояние является кратчайшим.
Даны два отрезка a и b, заданные координатами точек, являющихся концами отрезков. Определить, середина какого отрезка находится ближе к оси ОХ.
Даны действительные числа a, b, c Параметр цикла – это переменная, которая при каждом входе в цикл принимает новое значение. - student2.ru . Выяснить, что больше - сумма четных или сумма нечетных из них.
Даны два отрезка a и b, заданные координатами точек, являющихся концами отрезков. Определить, середина какого отрезка находится дальше от оси ОУ.

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

Вопросы для контроля

1. Какие разделы для спецификации являются обязательными?

2. В чем особенность каждого из разделов?

Литература

1. Информатика. Учебник – 3-е перераб изд. / Под редакцией Н. В. Макаровой. – М.: Финансы и статистика, 2004. – 768с.

2. Симонович С. В.,Информатика: Базовый курс. – СПБ.: Питер, 2001 – 640с.

Практическая работа №4

Тема: Использование побитовых операций.

Цель: Научиться выполнять побитовые операции.

Оборудование и программное обеспечение:

1 Персональный компьютер IBM PC/AT.

2 Операционная система Windows XP.

3 Текстовый редактор Word.

Теоретическая часть

Поскольку язык С был разработан в качестве замены языка ассемблера, он предусматривает многие операции низкого уровня, в частности, побитовые операция (bitwise operation), предназначенные для проверки, установки и сдвига битов, из которых состоят байты и машинные слова, образующие переменные типа char или int. Побитовые операторы применяются к отдельным битам операндов.

Оператор Действие

& и

| или

^ Исключающее ИЛИ

~ Дополнение до единицы (НЕ)

>> Сдвиг вправо

<< Сдвиг влево

Операция поразрядного логического И (&) сравнивает каждый бит первого операнда с соответствующим битом второго операнда. Если оба сравниваемых бита единицы, то соответствующий бит результата устанавливается в 1, в противном случае в 0.

Операция поразрядного логического ИЛИ (|) сравнивает каждый бит первого операнда с соответствующим битом второго операнда. Если любой (или оба) из сравниваемых битов равен 1, то соответствующий бит результата устанавливается в 1, в противном случае результирующий бит равен 0.

Операция поразрядного исключающего ИЛИ (^) сравнивает каждый бит первого операнда с соответствующими битами второго операнда. Если один из сравниваемых битов равен 0, а второй бит равен 1, то соответствующий бит результата устанавливается в 1, в противном случае, т.е. когда оба бита равны 1 или 0, бит результата устанавливается в 0.

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

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

char getchar_f rom_modem (void) {

char ch;

ch = read_modem(); /* Считывает символ из порта модема */

return (ch & 127);

}

Четность обычно задается восьмым битом, который обнуляется в результате вы­полнения операции И. Вторым операндом этого оператора является байт, в котором все биты от 1 до 7 равны 1, а восьмой бит равен 0. Выражение ch &127означает попарное применение операции И ко всем битам, составляющим значение переменной ch, и битам числа 127. В результате восьмой бит переменной ch становится равным 0. Предположим, что переменная ch содержит символ "А" и бит четности.

Бит четности

|

1 1 0 0 0 0 0 1 Переменная ch, содержащая символ “a” и бит четности

0 1 1 1 1 1 1 1 Двоичное представление числа 127

& _________ Побитовый оператор И

0 1 0 0 0 0 0 1 Символ “A” без бита четности

Результатом работы операторов сравнения и логических операторов всегда являются истинные или ложные значения, в то время как аналогичные no6итовые операторы могут порождать любые целые числа. Иными словами, результатом побитовых операций являются любые числа, а не только 0 или 1, как при использовании логических операторов.

Операции сдвига осуществляют смещение операнда влево (<<) или вправо (>>) на число битов, задаваемое вторым операндом.

Общий вид операторов побитового сдвига вправо выглядит следующим образом.

значение >> количество разрядов

Оператор побитового сдвига влево выглядит так.

значение << количество разрядов

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

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

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

unsigned char x Двоичное представление Значение

x = 7; 0 0 0 0 0 1 1 1 7

x = x << 1; 0 0 0 0 1 1 1 0 14

x = x << 3; 0 1 1 1 0 0 0 0 112

x = x << 2; 1 1 0 0 0 0 0 0 192

x = x >> 1; 0 1 1 0 0 0 0 0 96

x = x >> 2; 0 0 0 1 1 0 0 0 24

Последующие деления числа не возвращают потерянные биты.

Пример 1. Операции побитового сдвига.

#include <stdio.h>

int main(void){

unsigned int i;

int j ;

i = 1;

for(j=0; j<4; j++) {

i = i << 1; /* Сдвиг влево на 1 бит означает умножение на 2*/

printf("Сдвиг влево %d: %d\n", j, i);

}

for(j=0; j<4; j++) {

i = i >> 1; /* Сдвиг вправо на 1 бит означает деление на 2*/

printf("Сдвиг вправо %d: %d\n", j, i);

}

return 0;

}

Оператор дополнения до единицы "~" инвертирует каждый бит операнда. Это зна­чит, что каждая единица станет нулем, и наоборот.

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

Исходный байт 00101100

После первого отрицания 11010011

После второго отрицания 00101100

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

char ch, ch1;

ch1 = ~ch ; /* Дополнение до единицы */

Разумеется, файл, закодированный с помощью функции encode(), очень легко расшифровать!

Практическая часть

1 Изучите теоретическую часть.

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

Вариант 1:y = a*8 + b/4, где a = 001010111, b = 100111011

Вариант 2:y = a/4 - b*4, где a = 011011111, b = 100110101

Вариант 3:y = (a + b/8)*4, где a = 0111001, b = 1001101

Вариант 4:y = (a*2 - b*4)/8, где a = 0110101001, b = 1010110001

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

Вопросы для контроля

3. Каким образом осуществляется побитовый сдвиг?

4. В чем особенность использования побитовых операций?

Литература

1 Павловская Т.А. С/С++. Программирование на языке высокого уровня. – СПб. : Питер, 2011. – 461 с.

2 Шилдт Г. Полный справочник по С++, 4-е издание. : Пер. с англ. – М. : Издательский дом «Вильям», 2012. – 800 с.

Практическая работа № 5

Тема: Определение приоритетов операций и порядка их вычислений в выражениях.

Цель: Научиться определять приоритеты операций и порядок их вычислений в выражениях.

Оборудование и программное обеспечение:

1 Персональный компьютер IBM PC/AT.

2 Операционная система Windows XP.

3 Текстовый редактор Word.

Теоретическая часть

При вычислении некоторых выражений необходимо знать cosx, tgx и т. д. Для этого в С++ есть системные математические функции.

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

Имя функции Аргумент 1 Аргумент 2 Результат Примечание
abs int x   int |x|
acos double   double arccos
asin double   double arcsin
atan double   double arctg
cos double   double cos(радиан)
exp double x   double ex
fabs double   double |x|
fmod double x double y double x%y
log double   double ln
log10 double   double lg
pow double x double у double xy
sin double   double sin (радиан)
sqrt double x   double Параметр цикла – это переменная, которая при каждом входе в цикл принимает новое значение. - student2.ru
tan double   double tg (радиан)

Объявления (прототипы) вышеуказанных функций находятся в math.h. Там же есть макроопределения известных математических констант.

Для дос­тупа к ним необходимо написать следующие строки:

#define_USE_MATH_DEFINES

#include <math.h>

В модуле math.h так же находятся функцииpowи powl, которые находят значение выраженияxy:

pow(double x, double y);

long double powl(long double x, long double y);

Функции sqr(х) и sqrt(х) позволяют, соответственно, возвести значение х в квадрат и найти квадратный корень из него.

Пример 1. Запишите выражение в соответствии с правилами языка программирования С++.

Параметр цикла – это переменная, которая при каждом входе в цикл принимает новое значение. - student2.ru

На языке программирования С++ выражение следует записать как:

a = (2*sin(2*y -x/3))/(pow(cos(z), 3) - sqrt(2));

Когда в выражении смешиваются переменные разных типов, необходимо выпол­нить преобразование типов.

Для оператора присваивания правило преобразования типов формулируется просто: значение правой части преобразовывается к типу левой части.

Пример 2.

void main(){

int х;

char ch;

float f;

ch = x; /* Строка 1*/

x = f; /* Строка 2*/

f = ch; /* Строка 3 */

f = x; /* Строка 4 */

}

В строке 1 левый старший разряд целой переменной х отбрасывается, и пере­менной ch присваиваются 8 младших битов. Если значение переменной хизменя­ется от 0 до 255, то переменные ch и х будут эквивалентными. В противном случае в переменной ch будут учтены лишь 8 младших бит переменной х(Это относится лишь к тем компиляторам, в которых переменные типа char по умолчанию не имеют знака. Если тип char по умолчанию имеет знак, то переменные ch и х будут экви­валентными, только если переменная х изменяется от -128 до 127 либо переменная ch имеет тип unsigned char).

В строке 2 переменной х будет присвоена целая часть переменной f.

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

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

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

1. Операнды типа float преобразуются к типу double.

2. Если один операнд long double, то второй преобразуется к этому же типу.

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

4. Любые операнды типа char и short преобразуются к типу int.

5. Любые операнды unsigned char или unsigned short преобразуются к типу unsigned int.

6. Если один операнд типа unsigned long, то второй преобразуется к типу unsigned long.

7. Если один операнд типа long, то второй преобразуется к типу long.

8. Если один операнд типа unsigned int, то второй операнд преобразуется к этому же типу.

9. Если один из операторов имеет тип long, a второй — unsigned int, и значение переменной типа unsigned int невозможно представить с помощью типа long, то оба операнда преобразуются в тип unsigned long.

Пример 3.

double ft, sd;

unsigned char ch;

unsigned long in;

int i;

....

sd=ft*(i+ch/in);

При выполнении оператора присваивания правила преобразования будут использоваться следующим образом. Операнд ch преобразуется к unsigned int (правило 5). Затем он преобразуется к типу unsigned long (правило 6). По этому же правилу i преобразуется к unsigned long и результат операции, заключенной в круглые скобки будет иметь тип unsigned long. Затем он преобразуется к типу double (правило 3) и результат всего выражения будет иметь тип double.

Практическая часть

1. Изучите теоретическую часть.

2. Запишите выражение одного из вариантов заданий в соответствии с правилами языка программирования С++. Определите порядок выполнения операций в выражении. Укажите тип переменной а, факты преобразования типов в выражении и применяемые при этом правила, если исходные переменные имеют типы: x - double, y - int, z - long double. Определите значение переменной а при заданных x, y и z.

Варианты заданий

1 Параметр цикла – это переменная, которая при каждом входе в цикл принимает новое значение. - student2.ru , x = -2; y = 5;z = -1,2.

2 Параметр цикла – это переменная, которая при каждом входе в цикл принимает новое значение. - student2.ru , x = 1,44; y = 3;z = π2/16.

3 Параметр цикла – это переменная, которая при каждом входе в цикл принимает новое значение. - student2.ru , x = π/3; y = 64;z = π/6.

4 Параметр цикла – это переменная, которая при каждом входе в цикл принимает новое значение. - student2.ru , x = π/4; y = -2;z = π/4.

5 Параметр цикла – это переменная, которая при каждом входе в цикл принимает новое значение. - student2.ru , x = 4,41; y = 2;z = -0,3.

6 Параметр цикла – это переменная, которая при каждом входе в цикл принимает новое значение. - student2.ru , x = 3; y = 8;z = -0,125.

7 Параметр цикла – это переменная, которая при каждом входе в цикл принимает новое значение. - student2.ru , x = π/6; y = 3;z = π/4.

8 Параметр цикла – это переменная, которая при каждом входе в цикл принимает новое значение. - student2.ru , x = -1; y = -2;z = π.

3. Оформите отчет по выполнению практической работы, в котором отразите: номер работы, тему, цель, задание; выражение, записанное в соответствии с правилами языка программирования С++; последовательность выполнения операций в выражении; шаги и правила преобразования типов в выражении; значение переменной а; краткие выводы, ответы на вопросы.

Вопросы для контроля

1 С чем связано понятие "приоритет операций"?

2 Как повысить приоритет операций?

Литература

1. Павловская Т.А. С/С++. Программирование на языке высокого уровня. – СПб. : Питер, 2011. – 461 с.

2. Шилдт Г. Полный справочник по С++, 4-е издание. : Пер. с англ. – М. : Издательский дом «Вильям», 2012. – 800 с.

Практическая работа №6

Тема: Составление простейших программ.

Цель: Освоить способы составления простейших программ в среде Borland C++.

Оборудование и программное обеспечение:

1 Персональный компьютер IBM PC/AT.

2 Операционная система Windows XP.

3 Среда программирования Borland C++.

Теоретическая часть

В папке BC\BIN которая обычно размещается на диске C сначала следует создать папку в которой будут сохраняться файлы программ, а затем запустить приложение BC. На экране появится окно программы Borland C++. Далее нужно выбрать пункт меню File/New и в рабочей области откроется текстовый редактор для набора текста программы.

Сначала следует сохранить файл программы в отдельной папке, размещенной в каталоге BC\BIN, под именем, являющимся идентификатором. После этого можно набирать текст программы. Не следует забывать о частом сохранении текста программы с помощью команды меню Save. Запустить программу на выполнение можно с помощью команды меню Run.

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

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

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

В любом случае программа должна содержать функцию main (), которая при выполнении программы вызывается первой. В хорошо написанном коде функция main () должна содержать, по существу, схему работы всей программы. Общий вид программы на языке С (Функции с именами fl(), ..., fN() определяются пользователем).

// Директивы препроцессора

// объявления глобальных переменных

// прототипы обычных функций

тип_возвращаемого_значения main (список параметров){

последовательность операторов

}

// определения обычных функций f1- fn

тип_возвращаемого_значения f1 (список параметров){

последовательность операторов

}

тип_возвращаемого_значения fn (список параметров){

последовательность операторов

}

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

1 #include <stdio.h>

2int main()

3 {

4 printf (" Я люблю %с%s ", 'C', "++!");

5getche();

6 return (0);

7 }

Комментарий:

1 -директива препроцессора – команда компилятору поместить в этом месте программы код, хранящийся в библиотечном файле STDIO.H. Файлы с расширением H называются файлами заголовков и обычно содержат объявления различных констант и идентификаторов, а также прототипы функций.

2 -заголовок функции main( ). С нее начинается выполнение программы, которое завершается вызовом инструкции return. Ключевое слово int слева от имени функции указывает на тип возвращаемого ею значения.

3 -фигурная скобка определяет начало составного оператора и тела функции (тело функции расположено между фигурными скобками).

4 - команда осуществляет вывод на экран строки «Я люблю С++!».

Функция getche() останавливает работу программы и ждет нажатия клавиши: введенный символ отображается на экране. Эта функция часто используется просто для остановки программы, чтобы можно было просмотреть результат вывода данных на экране, для продолжения работы программы следует нажать Enter.

6 - значение 0 в инструкции return будет воспринято как признак успешного завершения программы. Допускается использование функции return без круглых скобок.

7 -фигурная скобка определяет конец составного оператора и тела функции.

Пример 2.

Наши рекомендации