Форматированный вывод данных

СОДЕРЖАНИЕ

ВВЕДЕНИЕ.. 4

1. Теоретические сведения. 5

1.1. Общие сведения. 5

1.2. Основные понятия языка. 5

1.3. Типы данных. 7

1.4. Переменные и константы.. 9

1.5. Ввод и вывод информации. 10

1.5.1. Форматированный ввод данных. 12

1.5.2. Форматированный вывод данных. 13

1.5.3. Ввод и вывод данных с использованием библиотечной функции <iostream> 15

1.6. Операции и операторы.. 16

1.6.1. Операции языка Си. 16

1.6.2. Операторы.. 20

1.6.2.1. Оператор присваивания. 20

1.6.2.2. Условные операторы. Оператор безусловного перехода. 20

1.6.2.3. Операторы цикла. 22

1.7. Среда VisualC++ 2008 Express. 23

2.1. Лабораторная работа 1. Линейный вычислительный процесс. 27

2.2. Лабораторная работа 2. Разветвляющийся вычислительный процесс 36

2.3. Лабораторная работа 3. Оператор-переключатель SWITCH.. 41

2.4. Лабораторная работа 4. Циклический вычислительный процесс. 43

2.5. Лабораторная работа 5. Массивы.. 46

2.6. Лабораторная работа 6. Матрицы.. 51

2.7. Лабораторная работа 7. Подпрограммы.. 56

ЗАКЛЮЧЕНИЕ.. 63

БИБЛИОГРАФИЧЕСКИЙ СПИСОК.. 64

ВВЕДЕНИЕ

В данной работе представлены методические рекомендации по проведению лабораторных работ по теме «Алгоритмический язык Си++» дисциплины «Языки и системы программирования».

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

Алгоритмический язык Си++ является преемником языка Си, поэтому в методических указаниях рассматриваются оба языка, но примеры лабораторных работ приведены в основном на языке Си++ как в консольном режиме, так и объектно-ориентированном в среде VisualC++ 2008Express. Язык Си++ – один из основных языков разработки трансляторов.Поскольку системное программное обеспечение часто бывает написано на языке Си или Си++, то и программные интерфейсы к подсистемам ОС тоже часто пишут на Си++.

В методических указаниях в разделе 1 рассматриваются основные конструкции языков Си и Си++ (общие для Си и Си++). Примеры программ и задания к лабораторным работам приведены в разделе 2.

Теоретические сведения

Общие сведения

Язык Си, созданный Денисом Ритчи в начале 70-х годов в BellLaboratory американской корпорации AT&T, является одним из универсальных языков программирования. С 1989 года язык Си регламентируется стандартом Американского института национальных стандартов ANSI С. В настоящее время, кроме стандарта ANSI C разработан международный стандарт ISO C (InternationalStandardOrganization C). Язык Си считается языком системного программирования, хотя он удобен и для написания прикладных программ [3].

Алгоритмический язык Си++ является преемником языка Си. Первые версии языка программирования Си++ (тогда он назывался "Си с классами") были разработаны в начале 80-х годов Бьярном Страуструпом, сотрудником знаменитой AT&T BellLaboratory.

За основу был взят популярный в среде профессиональных разработчиков язык программирования Си. Первыми средствами, которыми был расширен Си, стали средства поддержки абстракций данных и объектно-ориентированного программирования.В 1993 язык был назван Си++, что можно трактовать как увеличенный или расширенный язык Си.Первым транслятором языка был препроцессор cfront, транслирующий программу на Си++ в эквивалентную программу на Си. И только в конце 80-х годов были реализованы прямые трансляторы, не использующие Си в качестве промежуточного языка. С момента опубликования и до настоящего момента язык постоянно усовершенствовался и расширялся.

Основные понятия языка

Программа, написанная на языках Си и Си++, состоит из операторов. Алфавит языка: латинские прописные и строчные буквы, цифры и специальные знаки. К таким знакам, например, относятся: точка (.), запятая (,), двоеточие (:), точка с запятой (;), фигурные скобки ({}) и др.

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

Различают видимые и управляющие символы. Первые могут быть отображены на экране дисплея либо отпечатаны на принтере. Вторые вызывают определенные действия в машине, например: звуковой сигнал – код 710, возврат курсора на один шаг – код 810, горизонтальная табуляция – код 910, перевод курсора на новую строку – код 1010, перемещение курсора в начало строки – код 1310 и т.д.

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

1. Они должны начинаться с буквы латинского алфавита (а,...,z, А,...,Z) или с символа подчеркивания (_).

2. В них могут использоваться буквы латинского алфавита, символ подчеркивания и цифры (0,...,9). Использование других символов в идентификаторах запрещено.

3. В языках Си и Си++ буквы нижнего регистра (а,...,z), применяемые в идентификаторах, отличаются от букв верхнего регистра (А,...,Z). Это означает, что следующие идентификаторы считаются разными: name, NaMe, NAME и т.д.

4. Идентификаторы могут иметь любую длину, но воспринимается и используется для различения объектов (функций, переменных, констант и т.д.) только часть символов. Их число меняется для разных систем программирования, но в соответствии со стандартом ANSI C не превышает 32 (в Си++ это ограничение снято). Если длина идентификатора установлена равной 5, то имена count и counter будут идентичны, поскольку у них совпадают первые пять символов.

5. Идентификаторы для новых объектов не должны совпадать с ключевыми словами языка и именами стандартных функций из библиотеки [2].

В программах на языке Си комментарии обрамляются символами /* и */. Их можно записывать в любом месте программы.

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

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

Простейшая программа на языке Си++ в консольном режиме:

// Простейшая программа

intmain() { return 1; }

Первая строчка в программе – комментарий, который служит лишь для пояснения. Признаком комментария являются два знака деления подряд (//).

main – это имя главной функции программы. С функции main всегда начинается выполнение. У функции есть имя (main), после имени в круглых скобках перечисляются аргументы или параметры функции (в данном случае у функции main аргументов нет). У функции может быть результат или возвращаемое значение. Если функция не возвращает никакого значения, то это обозначается ключевым словом void. В фигурных скобках записывается тело функции – действия, которые она выполняет. Оператор return 1 означает, что функция возвращает результат – целое число 1.

Типы данных

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

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

¾ char– символьный;

¾ int– целый;

¾ float– вещественный;

¾ double–вещественный двойной точности;

¾ void– не имеющий значения.

В языке Си++ добавлены еще следующие типы данных:

¾ bool–булевый (значения true (истина) или false (ложь));

¾ string– строковый.

Для того чтобы работать с текстом, в языке Си++ не существует особого встроенного типа данных. Текст представляется в виде последовательности знаков (байтов), заканчивающейся нулевым байтом. Иногда такое представление называют Си-строки, поскольку оно появилось в языке Си. Кроме того, в Си++ можно создать классы для более удобной работы с текстами (готовые классы для представления строк имеются в стандартной библиотеке шаблонов). Строки представляются в виде массива байтов:

charstring[20];string[0] = 'H';string[1] = 'e';string[2] = 'l';string[3] = 'l';string[4] = 'o';string[5] = 0;

В массиве string записана строка "Hello". Для записи строковых констант в программе используются литералы. Литерал – это последовательность знаков, заключенная в двойные кавычки:

"Это строка""0123456789""*"

Заметим, что символ, заключенный в двойные кавычки, отличается от символа, заключенного в апострофы. Литерал "*" обозначает два байта: первый байт содержит символ звездочки, второй байт содержит ноль. Константа '*' обозначает один байт, содержащий знак звездочки. С помощью литералов можно инициализировать массивы:

charalldigits[] = "0123456789";

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

¾ unsigned;

¾ signed;

¾ short;

¾ long.

Модификаторы записываются перед спецификаторами типа, например: unsignedchar. Если после модификатора опущен спецификатор, то компилятор предполагает, что этим спецификатором является int. Таким образом, следующие строки:

long а;

longint а;

являются идентичными и определяют объекта как длинный целый.

Переменные и константы

Все переменные до их использования должны быть определены (объявлены). При этом задается тип, а затем идет список из одной или более переменных этого типа, разделенных запятыми. Например:

int a, b, c;

char x, y;

Переменные в языке Си могут быть инициализированы при их определении:

int a = 25, h = 6;

char g = 'Q', k = 'm';

float r = 1.89;

long double n = r*123;

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

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

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

Наряду с переменными в языке существуют следующие виды констант:

¾ вещественные, например, 123.456, 5.61е-4. Они могут снабжаться суффиксом F (или f), например 123.456F, 5.61e-4f;

¾ целые, например 125;

¾ короткие целые, в конце записи которых добавляется буква (суффикс) H (или h), например 275h, 344H;

¾ длинные целые, в конце записи которых добавляется буква (суффикс) L (или l), например 361327L;

¾ беззнаковые, в конце записи которых добавляется буква U (или u), например 62125U;

¾ восьмеричные, в которых перед первой значащей цифрой записывается нуль (0), например 071;

¾ шестнадцатеричные, в которых перед первой значащей цифрой записывается пара символов нуль-икс (0x), например 0x5F;

¾ символьные– единственный символ, заключенный в одинарные кавычки, например 'О', '2', '.' и т.п. Символы, не имеющие графического представления, можно записывать, используя специальные комбинации, например \n (код 10), \0 (код 0). Эти комбинации выглядят как два символа, хотя фактически это один символ. Так же можно представить любой двоичный образ одного байта: '\NNN', где NNN – от одной до трех восьмеричных цифр. Допускается и шестнадцатеричное задание кодов символов, которое представляется в виде: '\х2В', '\хЗ6' и т.п.;

¾ строковые– последовательность из нуля символов и более, заключенная в двойные кавычки, например: "Это строковая константа". Кавычки не входят в строку, а лишь ограничивают ее. Строка представляет собой массив из перечисленных элементов, в конце которого помещается байт с символом '\0'. Таким образом, число байтов, необходимых для хранения строки, на единицу превышает число символов между двойными кавычками;

¾ константное выражение, состоящее из одних констант, которое вычисляется во время трансляции (например: а=60+301);

¾ типа longdouble, в конце записи которых добавляется буква L (или l), например: 1234567.89L.

Ввод и вывод информации

Операции ввода/вывода в языке Си организованы посредством библиотечных функций (причем их довольно много).

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

#include<stdio.h>

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

intgetchar(void);

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

Оператор ввода имеет вид:

х = getchar( );

Переменной хприсваивается очередной вводимый символ.

Другая функция –putchar(х) выдает значение переменной x в стандартный выходной поток (на экран дисплея). Функция putchar( ) имеет прототип:

intputchar(int);

Объявления getchar( ) и putchar( ) сделаны в заголовочном файле stdio.h, содержащем описания заголовков библиотечных функций стандартного ввода/вывода.

Для функции getchar( ) после выбора символа необходимо нажать клавишу <Enter>. Иногда это создает определенные неудобства. Функции getch( ) и getche( ) устраняют их. Они имеют следующие прототипы:

intgetch(void);

intgetche(void);

Обе эти функции вводят символ сразу же после нажатия соответствующей клавиши (здесь не надо дополнительно нажимать клавишу <Enter>). Отличие между ними заключается в том, что getche( ) отображает вводимый символ на экране дисплея, а getch( ) – нет. Прототипы этих функций содержатся в файле conio.h (консольный ввод/вывод). Для их использования файл conio.h также следует подключить к программе с помощью директивы #include .

Форматированный ввод данных

Функция scanf( ) (прототип содержится в файле stdio.h, т.е. для использования scanf( ) необходимо подключить библиотечную функцию с помощью #include<stdio.h>) обеспечивает форматированный ввод данных. Ее можно записать в следующем формальном виде:

scanf("управляющая строка", аргумент_1, аргумент_2,...);

Аргументы scanf( ) должны быть указателями на соответствующие значения. Для этого перед именем переменной записывается символ &.

Управляющая строка содержит спецификации преобразования и используется для установления количества и типов аргументов. В нее могут включаться:

— пробелы, символы табуляции и перехода на новую строку (все они игнорируются);

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

— обычные символы, кроме % (считается, что они должны совпадать с очередными неизвестными символами во входном потоке).

Рассмотрим символы преобразования функции scanf( ) (указываются после символа %):

— с–на входе ожидается появление одиночного символа;

— d или i– на входе ожидается десятичное целое число, и аргумент является указателем на переменную типа int;

— D или l– на входе ожидается десятичное целое число, и аргумент является указателем на переменную типа long;

— е илиЕ, f– на входе ожидается вещественное число с плавающей точкой;

— о– на входе ожидается восьмеричное целое число, и аргумент является указателем на переменную типа int;

— О– на входе ожидается восьмеричное целое число, и аргумент является указателем на переменную типа long;

— s– на входе ожидается появление строки символов;

— х– на входе ожидается шестнадцатеричное целое число, и аргумент является указателем на переменную типа int;

— Х– на входе ожидается шестнадцатеричное целое число, и аргумент является указателем на переменную типа long;

— р– на входе ожидается появление указателя в виде шестнадцатеричного числа;

— n– применяется в операциях форматирования. Аргумент, соответствующий этому символу спецификации, должен быть указателем на целое. В него возвращается номер позиции (после ввода), в которой записана спецификация %n;

— u– на входе ожидается беззнаковое целое число, и аргумент является указателем на переменную типа unsignedint;

— U– на входе ожидается беззнаковое целое число, и аргумент является указателем на переменную типа unsignedlong;

— [ ]– сканирует входную строку для получения символов[2].

Ввести целое число (int a;), символ (char b;) и вещественное число (float t;) можно так:

scanf("%d", &a);

scanf("%c", &b);

scanf("%d%c%f",&a, &b, &t);

Операции и операторы

Операции языка Си

Любое выражение языка состоит из операндов (переменных, констант и др.), соединенных знаками операций. Знак операции – это символ или группа символов, которые сообщают компилятору о необходимости выполнения определенных арифметических, логических или других действий.

В табл. 1 перечислены основные операции языка Си.

Чем выше расположена операция, тем выше ее приоритет (некоторые операции имеют одинаковый приоритет). Раньше выполняется та операция, которая раньше встречается.

Таблица 1

Знак операции Назначение операции
( ) Вызов функции
[ ] Выделение элемента массива
! Логическое отрицание
~ Поразрядное отрицание
- Изменение знака
++ Увеличение на единицу
-- Уменьшение на единицу
& Взятие адреса
* Обращение по адресу
(тип) Преобразование типа (т.е. (float) a)
sizeof( ) Определение размера в байтах
* Умножение
Продолжение таблицы 1
/ Деление
% Определение остатка от деления
+ Сложение
- Вычитание
<< Сдвиг влево
>> Сдвиг вправо
< Меньше, чем
<= Меньше или равно
> Больше, чем
>= Больше или равно
= = Равно
!= Не равно
& Поразрядное логическое «И»
| Поразрядное логическое «ИЛИ»
&& Логическое «И»
|| Логическое «ИЛИ»
?: Условная (тернарная) операция
= Присваивание
+=, - =, *=, /=, %=, <<=, >>=, &=, |=, ^= Составные операции присваивания (например, а *= b(т.е. a = a * b) и т.д.)
, Операция запятая
     

Различают унарные и бинарные операции. У первых из них один операнд, а у вторых – два.

В языке предусмотрены две нетрадиционные операции инкремента (++) и декремента (--). Они предназначены для увеличения и уменьшения на единицу значения операнда. Операции ++ и -- можно записывать как перед операндом, так и после него. В первом случае (++n или --n) значение операнда (n) изменяется перед его использованием в соответствующем выражении, а во втором (n++ или n--) – после его использования.

Широкое распространение находят также выражения с еще одной нетрадиционной условной операцией ?:. В операторе

y = x ? a: b;

y = a, если x не равно нулю (т.е. истинно), и y = b, если х равно нулю (ложно). Следующий оператор

y = (a>b) ? a: b;

позволяет присвоить переменной узначение большей переменной (а или b), т.е. y = max(a, b).

Еще одним отличием языка является то, что оператор вида

а = а + 5;

можно записать в другой форме: a += 5;. Вместо знака + можно использовать и символы других бинарных операций (табл. 1).

Операция запятая. Формулы будут вычисляться слева направо, и все выражение примет значение последней вычисленной формулы. Например, если имеются две переменные типа char, то выражение

z = (х = у, у = getch( ));

определяет следующие действия: значение переменной у присваивается переменной х; вводится символ с клавиатуры и присваивается переменной у; z получает значение переменной у. Скобки здесь необходимы, поскольку операция запятая имеет более низкий приоритет, чем операция присваивания, записанная после переменной z.

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

1. Если один из операндов в выражении имеет тип longdouble, то остальные тоже преобразуются к типу longdouble.

2. В противном случае, если один из операндов в выражении имеет тип double, то остальные тоже преобразуются к типу double.

3. В противном случае, если один из операндов в выражении имеет тип float, то остальные тоже преобразуются к типу float.

4. В противном случае, если один из операндов в выражении имеет тип unsignedlong, то остальные тоже преобразуются к типу unsignedlong.

5. В противном случае, если один из операндов в выражении имеет тип long, то остальные тоже преобразуются к типу long.

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

7. В противном случае все операнды преобразуются к типу int. При этом тип char преобразуется в int со знаком; тип unsignedchar в int, у которого старший байт всегда нулевой; тип signedchar в int, у которого в знаковый разряд передается знак из сhar; тип short в int (знаковый или беззнаковый).

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

В языке Си можно явно указать тип любого выражения. Для этого используется операция преобразования типа. Она применяется следующим образом:

(<тип>) <выражение>;

Например:

int a = 30000;

float b;

........

b = (float) a * 12;

(переменная a целого типа явно преобразована к типу float; если этого не сделать, то результат будет потерян, т.к. a * 12 > 32767).

Операторы

Оператор – это наименьшая исполняемая единица программы. Различают операторы присваивания (выражения), операторы объявления, составные операторы, пустые операторы, условные операторы, цикла и т.д. Для обозначения конца оператора в языке Си используется точка с запятой. Что касается составного оператора (или блока), представляющего собой набор логически связанных операторов, помещенных между открывающей ({) и закрывающей (}) фигурными скобками («операторными скобками»), то за ним точка с запятой не ставится. Отметим, что блок отличается от составного оператора наличием определений в теле блока.

Оператор присваивания

Оператор присваивания или выражения имеет вид:

<имя переменной>=<выражение>;

Например:

a = sin(b)+c;

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

Операцию «=» разрешается использовать многократно в одном выражении, например:

x = y = z = 100;

d=a=k=sin(x)*sqrt(y);

Операторы цикла

В языке Си и Си++ три оператора цикла: for, while и do - while. Первый из них имеет вид:

for (<выражение_1>; <выражение_2>; <выражение_3>)<тело_цикла>;

Тело цикла составляет либо один оператор, либо несколько операторов, заключенных в фигурные скобки { ... }, т.е. если в цикле выполняется несколько операторов, то применяется составной оператор. В выражениях 1, 2, 3 фигурирует специальная переменная, называемая управляющей. По ее значению устанавливается необходимость повторения цикла или выхода из него.

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

Примеры:

for (i = 1; i< 10; i++)

{ ...

}

for (сh = 'a'; ch != 'p';) scanf ("%c", &ch);

/* Цикл будет выполняться до тех пор, пока с клавиатуры не будет введен символ 'p' */

Любое из трех выражений в цикле for может отсутствовать, однако точка с запятой должна оставаться. Таким образом, for ( ; ; ) {...} – это бесконечный цикл, из которого можно выйти лишь другими способами.

Операция запятая находит широкое применение для построения выражений цикла for и позволяет параллельно изменять значения нескольких управляющих переменных.

Оператор while(с предусловием) имеет вид:

while (<выражение>) <тело_цикла>;

Выражение в скобках может принимать ненулевое (истинное) или нулевое (ложное) значение. Если оно истинно, то выполняется тело цикла и выражение вычисляется снова. Если выражение ложно, то цикл while заканчивается.

Оператор do-while(с постусловием) имеет вид:

do {<тело_цикла>} while (<выражение>);

Основным отличием между циклами while и do - while является то, что тело в цикле do - whileвыполняется по крайней мере один раз. Тело цикла будет выполняться до тех пор, пока выражение в скобках не примет ложное значение. Если оно ложно при входе в цикл, то его тело выполняется ровно один раз.

Допускается вложенность одних циклов в другие, т.е. в теле любого цикла могут появляться операторы for, while и do - while.

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

1.7.СредаVisualC++2008 Express

ОбщийвидокнаVisualC++ 2008 показан на рис. 1.

форматированный вывод данных - student2.ru

Рис. 1. Вид главного окна после загрузки VisualC++ 2008

СредаVisualC++2008 Express, какисредаBorlandBuilder 6 имееткакконсольныйрежим работы, такирежимWindowsForms (рис. 2).

форматированный вывод данных - student2.ru

Рис. 2. Окно создания проекта

Операторы ввода и вывода в режиме работы WindowsFormsимеют иной вид, чем в консольном режиме.

Пример оператора ввода простой переменной:

x=Convert::ToInt(textBox1->Text);

Здесь Convert::ToInt перевод строковой переменной в число целого типа.

Пример одного из операторов ввода массива:

intb[7]={5,2,3,7,0,1,8};

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

Random^ rand=gcnew Random;

for (i=0; i<n; i++)

a[i]=rand->Next(-10,10);

Пример оператора ввода матрицы с помощью генератора случайных чисел:

Random^ rand=gcnew Random;

for (i=0; i<n; i++)

for (j=0; j<m; j++)

a[i][j]=rand->Next(-50,50)-25.8;

Примеры операторов вывода простой переменной:

textBox1->Text=Convert::ToString(y);

richTextBox1->Text="Ответ R="+Convert::ToString(R);

Здесь Convert::ToString перевод числовой переменной в строку.

Примероператоравыводамассива:

for (i=0; i<n; i++)

richTextBox1->Text+=" "+Convert::ToString a[i];

Пример оператора вывода матрицыв общепринятом виде:

for (i=0; i<n; i++)

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

richTextBox1->Text+=" "+Convert::ToString(a[i][j]);

richTextBox1->Text+=Environment::NewLine;} // переводстроки

Пример оператора вывода матрицыв общепринятом виде с использованием другого способа перевода числа в строкуa[i][j].ToString():

for (i=0; i<n; i++)

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

richTextBox1->Text+=" "+a[i][j].ToString();

richTextBox1->Text+=Environment::NewLine;} // переводстроки

На рис. 3 показано окно VisualC++ 2008 cсозданной формой «Лабораторная работа» для ввода и вывода информации. Справа раскрыто окно свойств компонент.

На рис. 4 показана панель инструментов со стандартными компонентами.

форматированный вывод данных - student2.ru

Рис. 3. Окно VisualC++ 2008 c созданной формой для ввода и вывода информации

форматированный вывод данных - student2.ru

Рис. 4. Панель инструментов со стандартными компонентами

Лабораторные работы

Задания к лабораторной работе 1

Вариант 1

Решить систему уравнений:

форматированный вывод данных - student2.ru , используя правило Крамера.

Выдать на печать информацию в виде:

а) в центре строки напечатать слова «Ответ задачи»;

б) под словами напечатать ответ в виде:

Х=…

У=…

в) последнюю строку подчеркнуть;

г) пропустить две строки;

д) напечатать значение исходных данных в виде:

Исходные данные:

А= … В=… α=…

Вариант 2

На плоскости задан треугольник с координатами своих вершин: А(ха, уа), В(хв, ув), С(хс, ус). Вычислить длину сторон данного треугольника. Выдать на печать информацию в виде:

а) отступив 10 пробелов слева, напечатать заголовок «Исходные данные»;

б) под заголовком напечатать значения исходных данных в виде:

Вершины треугольника

хa=… уa=…

хb=… уb=…

хc=… уc=…

в) последнюю запись подчеркнуть;

г) пропустить 3 строки;

д) в центре листа напечатать ответ в виде:

Длины сторон треугольника:

АВ=… ВС=… АС=…

Вариант 3

Вычислить высоты треугольника со сторонами x, y, z по формулам:

форматированный вывод данных - student2.ru

форматированный вывод данных - student2.ru

форматированный вывод данных - student2.ru

где форматированный вывод данных - student2.ru

Выдать на печать информацию в виде:

а) отступить 5 позиций и напечатать слова «Высоты треугольника»;

б) под заголовком напечатать ответ в виде:

hx=…

hy=…

hz=…

в) последнюю строку подчеркнуть;

г) пропустить 3 строки;

д) напечатать значения исходных данных в виде:

Стороны треугольника:

x=… y=… z=…

е) последнюю строку подчеркнуть.

Вариант 4

По заданным радиусам оснований (R1 и R2), образующей (l) и высоте(h) вычислить площадь поверхности и объем усеченного конуса:

форматированный вывод данных - student2.ru

форматированный вывод данных - student2.ru

Выдать на печать информацию в виде:

а)в центре напечатать слова «Исходные Данные»;

б) R1=.. R2=.. l=.. h=..

в) подчеркнуть последнюю строку;

г) пропустить строку и напечатать значение промежуточных результатов форматированный вывод данных - student2.ru и форматированный вывод данных - student2.ru в виде:

Промежуточные результаты:

форматированный вывод данных - student2.ru =.. форматированный вывод данных - student2.ru =..

д) пропустить строку;

е) напечатать ответ в виде:

Ответ: S=..V=..

Вариант 5

Вычислить координаты точки, делящий отрезокА в отношении n1,n2 по формулам:

форматированный вывод данных - student2.ru

форматированный вывод данных - student2.ru

где форматированный вывод данных - student2.ru

Выдать на печать информацию в виде:

а) в центре листа напечатать ответ в виде «Координаты точки: х=…; y=…»;

б) пропустить 2 строки;

в) напечатать заголовок «Исходные данные»;

г) под заголовком напечатать значения исходных данных в виде:

XA=… XB=… YA=… YB=…

n1=… n2=…

д) последнюю строку подчеркнуть.

Вариант 6

Найти объем и площадь поверхности цилиндрического кольца высоты H с внешним радиусом R1 и внутренним R2.

Выдать на печать информацию в виде:

а) отступить 12 позиций слева и напечатать слова «Ответ задачи»;

б) подчеркнуть эти слова;

в) пропустить 2 строки и под словами напечатать ответ в виде:

V=…

S=…

г) пропустить 2 строки и, отступив 5 позиций, напечатать значения исходных данных в виде:

Исходные данные: H=…

R1=…

R2=…

д) пропустить строку и в центре листа напечатать слова «Задача решена».

Вариант 7

По заданным двум углам треугольника форматированный вывод данных - student2.ru и стороне между ними ВС найти третий угол, две стороны и площадь треугольника:

форматированный вывод данных - student2.ru форматированный вывод данных - student2.ru

форматированный вывод данных - student2.ru ; форматированный вывод данных - student2.ru

Выдать на печать информацию в виде:

а) отступить 10 позиций слева и напечатать слова «Исходные данные»;

б) под словами напечатать значения исходных данных в виде:

угол В=… угол С=…

сторона ВС=…

в) подчеркнуть напечатанное;

г) пропустить 2 строки и напечатать в центре листа ответ в виде:

Ответ: Угол А=…

Сторона АС=…

Сторона АВ=…

Площадь треугольника=

Вариант 8

По заданному радиусу R найти объём шара V и площадь сферы S:

форматированный вывод данных - student2.ru форматированный вывод данных - student2.ru форматированный вывод данных - student2.ru

Найти объем шара сегмента форматированный вывод данных - student2.ru высоты h: форматированный вывод данных - student2.ru

Выдать на печать информацию в виде:

а) в центре листа напечатать заголовок «Исходные данные»;

б) подчеркнуть напечатанные слова;

в) пропустить строку и под заголовком напечатать значение исходных данных в виде:

R :

h :

г) пропустить 2 строки;

д) отступить 10 позиций, напечатать ответ в виде:

Ответ: V = … ;

S = … ;VC = …

Вариант 9

Найти объём, площадь поверхности прямоугольного параллелепипеда с измерениями a,b,c и площади каждой грани.

Выдать на печать информацию в виде:

а) отступить 15 позиций и напечатать слова «Измерения параллелепипеда»;

б) под словами напечатать значения A, B, C в виде:

A=…

B=…

C=…

в) пропустить 2 строки и в центре листа напечатать ответ в виде:

Ответ задачи

Объём =…

Площадь поверхности =…

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