Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа 2 (win).doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
336.9 Кб
Скачать

4. Объявление переменных

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

Объявление переменной имеет следующий формат:

Тип_переменной <список переменных через запятую>;

Переменные можно инициализировать при описании.

Инициализация – задание начального значения или списка начальных значений переменной (переменным) при объявлении.

Переменная любого типа может быть объявлена как немодифицируемая. Это достигается добавлением ключевого слова const. Объекты с типом const представляют собой данные используемые только для чтения, т.е. этой переменной не может быть присвоено новое значение. Отметим, что если после слова const отсутствует спецификатор-типа, то подразумевается спецификатор типа int.

Пример 3 Объявление и инициализация переменных и констант

int a, b, c;

float f, a, b;

int a=1, b, c=2;

const double A=2.128E-2;

const B=286; //подразумевается const int B=286

Задание 3

Определите идентификаторы и типы всех переменных, констант для вычисления площади окружности. Запишите операцию присваивания.

5. Структура программы на с

Общая структура программы на С следующая:

директивы_препроцессора

int main()

{

тело программы

}

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

Внимание

  • все директивы препроцессора начинаются со знака #;

  • после директивы препроцессора точка с запятой не ставится.

Запустим Visual C++ и создадим новое консольное приложение. В результате на экране получим:

#include "stdafx.h"

using namespace System;

int main(array<System::String ^> ^args)

{

Console::WriteLine(L"Hello World");

return 0;

}

Эта простая программа печатает сообщение «Hello World!» на стандартном устройстве вывода (которым, как правило, является монитор (дисплей).

Рассмотрим структуру программы.

В первой строке программы расположен комментарий, далее следует директива препроцессора #include, встретив которую, компилятор заменяет её на полный текст файла, на который она ссылается. В данном случае эта строка будет заменена стандартным заголовочным файлом stdafx.h (h – от header, заголовок).

Строка программы

using namespace System;

означает, что компилятор должен использовать пространство имен System. Пространство имен (namespace) создает декларативную область, в которой могут размещаться различные элементы программы. Ключевое слово using информирует компилятор об использовании заявленного пространства имен (в данном случае System).

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

В фигурных скобках формируется тело программы.

Тело программы – программный блок, содержащий операторы описания, присваивания, управляющих конструкций, функции и др.

В примере 4 тело программы содержит два оператора – оператор WriteLine и return.

Инструкция return обеспечивает механизм завершения работы функции main.

Последняя фигурная скобка обозначает конец определения функции main.

Для запуска программы на выполнение необходимо нажать сочетание клавиш Ctrl+F5:

6. Категории операторов в С/С++. Консольный ввод/вывод

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

Все операторы языка С/С++  могут быть условно разделены на следующие категории:

  • оператор объявления;

  • операторы ввода/вывода;

  • оператор-выражение;

  • операторы управления: условные операторы, к которым относятся оператор условия if и оператор выбора switch; операторы  цикла (for, while, do while); операторы  перехода (break, continue, return, goto); оператор возврата return;

  • другие операторы.

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

Существует несколько способов консольного ввода и вывода.

Первый способ – это использование функции ввода printf() и функции вывода scanf() (унаследована в С++ от С).

Второй способ – это использование оператора ввода Cin >> и оператора вывода Cout <<.

Назначение операторов ввода и вывода легче запомнить, если считать, что >> указывает в сторону перемещения данных. Например,

>> x – перемещает данные в x, а << x – перемещает данные из x.

Внимание

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

Для работы с операторами Cin и Cout необходимо подключить библиотеку <iostream> директивой #include<iostream> (таблица 7).

Таблица 7 – Функции и операторы ввода/вывода информации

Библиотека stdio.h

Библиотека iostream

Вывод

Функция

printf();

Оператор

Cout

Ввод

Функция

scanf();

Оператор

Cin

Примечание

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

В дальнейшем будем также подключать библиотеку <conio.h> (директивой #include<conio.h>). Библиотека conio.h содержит функции для работы с терминалом в текстовом режиме, в частности getch();которая выполняет задержку выполнения программы до нажатия клавиши и обеспечивает закрытие приложения по нажатию на клавишу.

Формат функции вывода:

printf("строка_формата", список_переменных);

Формат функции ввода:

scanf("строка_формата", &список_переменных);

Символы в строке формата делятся на три категории:

  • обычные символы;

  • управляющие символы (см. табл. 2);

  • спецификатор формата.

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

Спецификаторы:

%d – целое число;

%u – целое число без знака (для типа unsigned);

%c – символ;

%s – строка;

%f – вещественное число c фиксированной точкой;

%e – вещественное число с плавающей точкой (с мантиссой и порядком)

Внимание

Спецификатор должен соответствовать типу выводимой переменной.

Пример 4 Ввод/вывод данных с использованием функций

Напишем программу, запрашивающую длины трех сторон треугольника.

#include "stdafx.h"

#include<stdio.h>

#include<conio.h>

using namespace System;

int main(array<System::String ^> ^args)

{

int a,b,c;

printf("введите длины трех сторон треугольника\n");

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

printf("ввод выполнен\n");

getch();

return 0;

}

Тестирование:

В данном примере оператор ввода scanf("%d %d %d",&a,&b,&c); в строке формата содержит три спецификатора %d, т.к. вводятся три целочисленных числа a,b,c , соответствующих сторонам треугольника.

Задание 4

Измените текст программы примера 4 так, чтобы можно было выполнить ввод вещественных значений переменных a,b,c.

Совет

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

Примечание

При использовании оператора вывода Cout и оператора ввода Cin в пространстве имен System

using namespace System;

с библиотекой iostream необходимо писать:

std::cout и

std::cin

т.к. в iostream все классы объявлены в пространстве std (в iostream.h все классы объявлены в глобальном пространстве имен).

Пример 5 Ввод/вывод данных с использованием операторов

Рассмотрим две программы с пространством имен std и System.

Программа 1

Программа 2

#include "stdafx.h"

#include<iostream>

#include<conio.h>

using namespace std;

int main(array<System::String ^> ^args)

{

int a,b,c;

cout << "введите длины трех сторон треугольника\n";

cin >> a >> b >>c;

cout << "ввод выполнен\n";

getch();

return 0;

}

#include "stdafx.h"

#include<iostream>

#include<conio.h>

using namespace System;

int main(array<System::String ^> ^args)

{

int a,b,c;

std::cout << "введите длины трех сторон треугольника\n";

std::cin >> a >> b >>c;

std::cout << "ввод выполнен\n";

getch();

return 0;

}

Задание 5

На основе примера 5 разработайте программу-запрос на ввод (по вариантам):

1) текущего года, номера месяца и дня;

2) возраста, роста и веса пользователя;

3) года поступления пользователя в Вуз, группы и номера по списку;

4) года, номера месяца рождения и числа полных лет пользователя;

5) года, номера месяца и дня рождения пользователя;

6) номера домашнего, рабочего и сотового телефона пользователя и др.

Завершите программу сообщением «Ввод данных закончен».

Составьте две программы – с использованием функций printf(); scanf(); и операторов Cout и Cin.

Примечание

При вводе и выводе информации следует обратить внимание на то, что консольное приложение создается в Windows, а выполняется как программа DOS. В DOS используется кодировка OEM (866), а в Windows — ANSI (1251), буквы русского алфавита в них имеют разные коды. Первые 128 символов совпадают – это ASCII, стандарт английских символов (плюс служебные). Следовательно, для работы с русскими буквами (кириллицей) необходимо в Visual C++ обеспечить преобразование символьной информации между этими двумя кодировками.

7. Директива #define

Если в программе возникает необходимость часто печатать или выводить на экран дисплея значение какой-либо переменной (или выполнять другие действия), то целесообразно ввести сокращенное обозначение с использование директивы #define, например

#define V printf("выполните ввод\n");

#define Pi 3.14

После этих директив в программе можно использовать операторы V и Pi.