МУ_ЛР1_ОП (1079921), страница 2
Текст из файла (страница 2)
/// Простые переменные разных типов
int j = 5; // переменная целого типа
unsigned char c = 'А'; // переменная символьного типа
long l; // переменная целого типа длинная
float f = 5.5f; // переменная вещественного типа
double d = 10.00; // переменная вещественного типа длинная
bool b = true; // переменная логического типа
string s; // переменная типа строка из библиотеки STL
Подчеркну еще раз, что для переменных выделяется специальная область в оперативной памяти (ОП), в которой можно записывать и перезаписывать значения данных. Напомню, что оперативная память это специальное устройство компьютера, которое непосредственно связано с микропроцессором и служит для хранения программ и данных. Для доступа к переменным и командам используются адреса в оперативной памяти. В С++ можно явно использовать в программах адреса переменных. Для этого применяются специальные типы переменных: указатели и ссылки.
11 Константы
Кроме переменных, в операторах и операциях можно использовать константы. Константы не могут изменяться и в большинстве случаев не хранятся в оперативной памяти. Они заменяются в исходном тексте программы. Константы записываются на основе правил, определенных в языке и бывают двух основных типов: числовые и символьные. Для группового описания констант используются перечисления (enum). Примеры использования констант показаны ниже.
int i = 5; // константа целого типа,
double d = 5.2; // вещественная константа, используемая для инициализации
d = d*5 + 11.7; // константы в выражении
string Str1 = "Пример строки 1 "; // строковая константа в " … "
В языке С++ можно использовать также переменные константного типа. Для этого используется специальное ключевое слово const. Для таких переменных также выделяется оперативная память, но в программе их изменять нельзя. Константные переменные должны быть обязательно инициализированы. Примеры:
const int i = 3; // константа целого типа,
const double d = 3.3; // вещественная константа, используемая для инициализации
12 Операторы и составные операторы
Для работы с константами и переменными используются операторы программы (Si). Операторы подразделяются на две группы: операторы изменения переменных и операторы управления. Основным оператором изменения переменных, является оператор присваивания, который имеет вид:
<левая часть выражения присваивания> = <правая часть выражения присваивания>;
В левой части оператора присваивания (в общем случае выражения) чаще записывается конкретная переменная, а в правой части выражение аналогичного типа. Например:
a = b + c; // a, b, c - переменные одного типа
Str3 = Str1 + Str2; // переменные Str1, Str2, Str3 имеют тип string
Операторы управления рассмотрим ниже. В языках структурного программирования используется понятие составного оператора. Составной оператор – это любая совокупность операторов заключенная в специальные операторные скобки. В С++ операторными скобками являются фигурные скобки (“{”, “}”). В других языках программирования могут быть и другие операторные скобки (например, begin и end). В принципе, существуют языки, в которых не применяются операторные скобки и для объединения операторов используется специальное структурное текстовое представление программы (например, OUTLINE как в WORD). Составной оператор можно записать так:
{ S1 , S2 , S3 , …, Si ,… , Sk } ;
Где Si - любые операторы и директивы описания языка С++.
Примеры составного оператора:
{ i = 5 ; c = (a>b) ? a : b; fun(a , 15); };
{
if ( a > b)
{ int i =5; a = 0; b = 15 + i;}
else
{
a = 15; b = 0;};
};
В данном примере использованы также операторы ветвления (if – else и условный оператор () ? :).
13 Форматированный ввод-вывод.
Функция printf (вывод по формату), является функцией вывода в языке СИ. Первый аргумент функции - строка в двойных кавычках, которая печатается в том виде, в котором указана в функции. Пример:
printf("Пример сообщения"); выведет на печать текст:
Пример сообщения
Однако функция printf("Длина равна %4dсм",1); выведет на печать уже следующее сообщение:
Длина равна 1см
Таким образом, запись "%4d" означает: впечатать заданную вторым аргументом величину в десятичной (d) форме в следующие 4 позиции. Кроме десятичного спецификатора формата вывода могут быть использованы следующие:
o-преобразование в восьмеричный формат;
x-преобразование в шестнадцатеричный формат;
n-преобразование в беззнаковый десятичный формат;
s-печать в строковом формате;
с-печать в символьном виде.
Пусть p-указатель на строку "Первое значение", а переменная x- содержит число5.813, тогда оператор printf("%s%6.3f",p,x);выведет на печать
Первое значение 5.813.
Под число с плавающей точкой отведено 6 позиций, три из которых - под дробнуючасть. Это справедливо для всех типов данных. Спецификатор f используется для вывода данных типа float (число с плавающей точкой).Строковая переменная в функции printf может содержать управляющие символы:
\n-новая строка;
\f-новая страница;
\t-табуляция;
\b-стереть предыдущий символ и т.д.
В языке СИ для ввода данных используются различные функции, в том числе getch и scanf. c=getch(); Здесь с - переменная типа char или unsigned, ей будет присвоено значение, введенное с клавиатуры. Пусть переменные a, letter и n объявлены как int a,n; char letter; входная строка имеет вид
3162 y 47,
тогда функция scanf("%4d%c%2d",&a, &letter,&n); присвоит переменным значения a=3162, letter='y', n=47. (Знак & перед переменной, определяет использование указателя-адреса переменной, но об этом речь пойдет в других ЛР) Все аргументы представляют собой указатели. При вводе функция scanf рассматривает пробелы как разделители вводимых данных.
Примечание: Для систематических сведений о работе функций можно воспользоваться также: литературой по курсу, лекциями по курсу, MSDN и другими источниками информации.
14 Отладка программ.
При разработке программ важную роль играет отладчик, который встроен в систему программирования. В режиме отладки можно проверить работоспособность программы и выполнить поиск ошибок самого разного характера. Отладчик позволяет проследить ход (по шагам) выполнения программы и одновременно получить текущие значения всех переменных и объектов программы, что позволяет установить моменты времени (и операторы), в которые происходит ошибка и предпринять меры ее устранения. В целом, отладчик позволяет выполнить следующие действия:
-
Запустить программу в режиме отладки без трассировки по шагам (F5);
-
Выполнить программу по шагам (F10);
-
Выполнить программу по шагам с обращениями к вложенным функциям(F11);
-
Установить точку останова (BreakPoint – F9);
-
Выполнить программу до первой точки останова (F5);
-
Просмотреть любые данные в режиме отладки в специальном окне (locals);
-
Просмотреть любые данные в режиме отладки при помощи мышки;
-
Изменить любые данные в режиме отладки в специальном окне (locals и Watch);
-
Установить просмотр переменных в специальном окне (Watch);
-
Просмотреть последовательность и вложенность вызова функций.
При выполнении всех лабораторных курса студенты должны активно использовать отладчик VS, знать его возможности и отвечать на контрольные вопросы, связанные с отладкой и тестированием программ.
Примечание. Подробное описание материала и понятий вы можете найти в литературе [1 - 6] или справочной системе MS VS. Кроме того, не пропускайте лекции по курсу. Не рекомендую безоговорочно верить материалам из сети Интернет (например, в Википедии), так как там в некоторых статьях есть ошибки!
15 Пример программы линейного вычисления с вводом выводом данных.
П
усть необходимо создать программу для вычисления значения переменной F ( переменной с плавающей точкой) на основе следующей формулы:
Параметры вычисления a и b являются целыми переменными (тип - int), а переменная l является переменной с плавающей точкой (вещественной переменной). Параметры вычисления должны быть введены с клавиатуры (с консоли), а результат должен быть выведен в окно командной строки. Тогда можно создать программу, приведенную ниже и выполнить необходимые вычисления. Пояснения в тексте программы даны в виде комментариев(//).
#define _USE_MATH_DEFINES
// Подключение библиотеки математических функций
#include <math.h>
#include <stdio.h>
#include <process.h>
// описание константы для числа пи
#define PI 3.14f
// Начало программы – точка входа в программу
void main(void)
{
// Руссификация ввода и вывода в консольном окне
system(" chcp 1251 > nul");
// Описание исходных данных и вычисляемых переменных
int a , b; // переменные целого типа
float F , l ; // переменные вещественного типа
// Ввод данных а
printf("Введите a: ");
scanf_s("%d", &a);
// Ввод данных b
printf("Введите b: ");
scanf_s("%d", &b);
// Ввод данных l
printf("Введите l: ");
scanf_s("%f", &l);
// Вычисление по формуле
F = 2*a*b*sin(l+0.5f*PI);
// Вывод результата работы программы
printf("\nF = %7.2f для a = %d b = %d l = %5.2f \n" , F , a , b , l);
// Ожидание завершения работы программы
system(" PAUSE");
};
Нужно создать пустой проект в MS VS, как описано выше, скопировать через буфер обмена в него текст данного примера, отладить его и выполнить.
16 Контрольное задание ЛР.
Написать программу на языке СИ для вычисления значения выражения по формуле варианта (см. ниже). Значения переменных a,b (целые переменные) и l (переменная с плавающей точкой) ввести с клавиатуры. При использовании математических функций необходимо использовать библиотеку #include <math.h>. Для ввода - вывода использовать библиотеку #include <stdio.h>. Вывести на консоль значения функции F и всех входных величин (a, b, l).
17 Варианты заданий для студентов СУЦ.
В
арианты заданий приведены ниже. Номер варианта должен соответсвовать номеру студента в групповом журнале.
18 Дополнительные требования для студентов СУЦ (д.т.).
Для продвинутых студентов, по желанию, можно построить программу с дополнительными требованиями:
1. Создать вывод нескольких значений функции F для разных аргументов. Для этого нужно организовать цикл по переменной l , изменяя ее значения с определенным шагом, размер шага (h - float) и число циклов (n - int) задает преподаватель после демонстрации студентом основного задания. Пример организации цикла (оператор for) расчета и вывода дан ниже. Вывод значений выполнить построчно для каждого значения функции и всех ее аргументов.















