Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабы 1 курс 2 семестр / ЛР 1 Информатика 2 сем 2020

.pdf
Скачиваний:
11
Добавлен:
15.01.2021
Размер:
611.87 Кб
Скачать

Вфайле stdio.h содержатся описания стандартных функций вводавывода языка Си, в т.ч. printf() - вывод в консоль заданного текста.

Вфайле conio.h содержатся описания функций для консольного вводавывода, в т.ч. _getch() – получение символа с клавиатуры.

Про функции ввода-вывода будет рассказано ниже.

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

Наличие круглых скобок после слова main обозначает, что main - это имя функции. Если содержимое в этих скобках отсутствует или в них указано ключевое слово void (никакой), это означает, что в функцию main() не передается (из вне) никаких аргументов.

Ключевое слово void, стоящее перед main, обозначает, что функция никаких значений возвращать не будет.

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

Продробнее такие конструкции, как функции, будут разбираться при выполнении следующих лабораторных работ.

Стандартная библиотека C/C++ включает ряд функций для чтения и записи на консоли (ввод с клавиатуры, вывод на экран). Эти функции читают и пишут данные, как простой поток символов. Для их использования необходимо подключить заголовочный файл stdio.h

Для вывода результатов работы программы на экран можно воспользоваться конструкцией (точнее говоря, функцией) стандартного вывода «printf», которая имеет вид:

printf(управляющая_строка, значение_1, значение_2, ...);

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

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

Назначение

символ

%d (или %i)

целое число

%u

беззнаковое целое число

%o

целое число в 8-ричной системе счисления

%X

целое число в 16-ричной системе счисления

%f

десятичное число с плавающей запятой (xx.xxxx)

%s

строка символов

%%

символ «%»

 

16

В спецификаторе формата, после символа % может быть указана точность (число цифр после запятой). Точность задаѐтся следующим образом: %.n<код формата>. Где n - число цифр после запятой, а <код формата> - один из кодов приведѐнных выше.

Помимо стандартных символов и спецификаторов в управляющей строке можно указать специальные символы:

Символ

Описание

\n

Новая строка, перевод строки

\r

Возврат каретки

\t

Горизонтальная табуляция

\"

Двойная кавычка (")

\'

Апостроф (')

\\

Обратная косая черта (\)

\?

Знак вопроса (?)

// Пример использования:

#include <stdio.h>

void main()

{

printf("a=%d, b=%f, c=%.2f, d=%c", 5, 7.875, 7.875, 'A');

}

// На экране будет выведено: a=5, b=7.875000, c=7.88, d= A

Для считывания данных с консоли можно воспользоваться конструкцией (функцией) форматированного ввода «scanf()», работающей аналогично «printf()». Например:

int a; // переменная a

scanf("%d",&a); // записать в переменную a введённое с клавиатуры целочисленное значение

Но есть отличие: при вводе с помощью функции scanf() строки (спецификатор формата %s), строка прочтѐтся до первого пробела. Для считывания остальных слов из строки нужно соответствующее число раз повторно вызывать «scanf()» либо использовать функцию «gets»:

char buffer[100]; // массив из 100 символов

gets(buffer); // записать в массив строку символов (в которой могут быть пробелы), введённую с клавиатуры

17

С помощью функции gets() можно вводить строки, содержащие пробелы. Функция gets() читает символы с консоли до появления символа новой строки (\n). Сам символ новой строки появляется при нажатии клавиши «enter» клавиатуры.

Можно так же упомянуть функцию puts(), предназначенную для вывода на экран именно строк.

puts("abcdef");

А для вывода на экран и считывания с клавиатуры одиночного символа можно воспользоваться функциями putchar() и getchar().

char ch = getchar(); // Введённый символ записываем в переменную ch

putchar(ch); // Вывод значения переменной ch на экран

Или их аналогами _putch() и _getch(), описанными в заголовочном файле conio.h.

Ввышеприведѐнной программе функция _getch() используется просто для приостановки выполнения программы до тех пор, пока пользователь не нажмѐт «enter» на клавиатуре. Это нужно, чтобы пользователь увидел результаты работы программы. Без этого по выполнению программы консольное окно сразу же закроется.

Вместо функции _getch() можно было бы использовать в тех же целях и getchar(), но если на момент вызова getchar() в консоли останутся непрочтѐнные символы, она прочтѐт первый из них, а не будет дожидаться ввода нового символа с клавиатуры, и окно консоли сразу закроется.

Впрограммах, ориентированных на работу с консольным окном Windows (cmd.exe) для этих целей можно ещѐ использовать функцию system() для обращения к консоли с аргументом "pause", описание которой содержится в заголовочном файле <cstdlib>.

Вязыке «C++» для ввода данных с клавиатуры и вывода на экран можно использовать конструкции std::cin>>a и std::cout<<a (здесь a – имя переменной) соответственно, подключив заголовочный файл iostream.

Для форматирования текста, выводимого на экран std::cout, так же можно использовать специальные символы, такие как ‘\n’ - переход на новую строку, ‘\t’ – табуляция и другие.

#include <iostream>

...

int a; // переменная a

18

//Вывод на экран строки "vvedite znachenie:" std::cout<<"vvedite znachenie:"

//Ввод с клавиатуры значения в переменную a std::cin>>a;

//Вывод на экран на следующую строку

//“a = ” и значения переменной a std::cout<<"\na = "<<a;

Следует отметить, что конструкция std::cin>> , как и scanf(), считывает строку до первого пробела. Что бы прочитать строку вместе с пробелами,

можно использовать конструкцию std::cin.getline(massiv, quantity), где massiv

– имя символьного массива, в который нужно записать считанную строку, а quantity – количество символов, которые нужно прочитать. Например, при чтении из консоли строки «slovo_1 slovo_2», используя std::cin.getline(mass, 12), в массив mass запишется только «slovo_1 slo».

Подробнее работа со строками будет разобрана в следующих лабораторных.

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

имени Solution.

.sln – файл решения для созданной программы. Он содержит информацию о том, какие проекты входят в данное решение. Обычно эти проекты расположены в отдельных подкаталогах. Например, наш проект находится в подкаталоге hello;

.suo – файл настроек среды Visual Studio при работе с решением включает информацию об открытых окнах, их расположении и прочих пользовательских параметрах.

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

Файлы в подпапке Debug (или Release, в зависимости от выбранной конфигурации проекта):

.exe – исполняемый файл проекта;

.ilk – файл «incremental linker», используемый компоновщиком для ускорения процесса компоновки;

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

Файлы в подпапке с названием проекта:

.cpp – файл c программным текстом;

.vcxproj – файл проекта;

19

.vcxproj.user – файл пользовательских настроек, связанных с проектом;

.vcxproj.filters – файл с описанием фильтров, используемых Visual Studio для организации и отображения файлов в окне Solution Explorer. В окне Solution Explorer по-умолчанию файлы группируются следующим образом:

-Source Files - файл с исходным кодом (файлы с расширением .с, .cpp).

-Header Files - заголовочные файлы (с расширением .h).

-Resource Files - файлы ресурсов, например изображения и т. д.

-External Dependencies (внешние зависимости) - файлы, не добавленные явно в проект, но использующиеся в файлах исходного кода, например включенные при помощи директивы #include. Обычно в этой папке присутствуют ссылки на заголовочные файлы стандартной библиотеки, применяющиеся в проекте.

2.3Примеры решения задач

Задание:

Напишите программу, выводящую на экран фразу «Hello, World!» с использованием конструкции std::cout<<

Решение:

Составим алгоритм работы программы вывода на экран фразы «Hello, World!». Поскольку никаких вычислений производить не требуется, блоков «Процесс» в блок-схеме не будет. Поскольку данных с клавиатуры вводить не требуется, в блок-схеме будет достаточно одного блока «Данные» («Вводвывод») для вывода заданной фразы.

Начало

Вывод

«Hello, World!»

Конец

Рисунок 1 – Алгоритм работы программы выводящей фразу «Hello, World!»

20

Для вывода фразы «Hello, World!» в программе воспользуемся конструкцией std::cout<<, описание которой содержится в заголовочном файле «iostream».

//Программа, выводящая фразу "Hello, World", v1.1

//Автор: Шишкин В.А., 2018.12.01

#include <conio.h> #include <iostream>

void main()

{

std::cout<<"\n Hello, World!\n\n Press any key to continue"; _getch();

}

Скомпилируем и запустим программу. В консольном окне появилась фраза «Hello, World!», что и требовалось по заданию.

2.4Задания (общие для всех)

Задача 1.1 Напишите программу, которая выведет на экран (в консоль) в разных строках Ваши фамилию, имя и отчество, номер группы, названия специальности и специализации по которым Вы обучаетесь с помощью функции или функций printf().

Задача 1.2 Напишите программу, которая выведет на экран (в консоль) в разных строках названия университета и института (факультета), где Вы учитесь, номер вашей группы и ваши фамилию и инициалы с помощью конструкции или конструкций std::cout<<.

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

21