4380

Введение в программирование на С++

Лабораторная работа

Информатика, кибернетика и программирование

Введение в программирование на С++ Цель: получить основы программирования на С++ ознакомится с созданием простейшей программы в консольном режиме понять что такое переменная и её назначение, научится выводить информацию на экран. Теоретический мат...

Русский

2012-11-18

427 KB

9 чел.

Введение в программирование на С++

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

Теоретический материал

Алфавит и лексемы языка С++. В алфавит входят:

1

Прописные и строчные буквы латинского алфавита A-Z, a-z

2

Цифры: 0 1 2 3 4 5 6 7 8 9 0

3

Специальные знаки:

“ { } , | [ ] ( ) + - / % \ ;

‘ : ? < = > _ ! & # ~ ^ . *

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

Синтаксис объявления переменной. Для объявления переменной необходимо соблюдать следующий синтаксис:

Тип_ переменной Имя_Переменной;

Пример:

int x;

double fon;

или

Тип_переменной Имя_Переменной_1, Имя_Переменной_2, Имя_Переменной_3;

Пример:

int z,p,r;

При объявлении переменной можно её инициализировать, то есть записать данные в нашу переменную:

Тип_ переменной Имя_Переменной=значение;

Пример:

double pi=3,14;

или

Тип_переменной Имя_Переменной_1=значение_1,

Имя_Переменной_2=значение_2,

Имя_Переменной_3=значение_3;

Пример:

int A=90,B=-89;C=0;

Правило задания написания имён переменных.

В задании имени переменной можно использовать:

  •  буквы латинского алфавита;
  •  десятичные цифры;
  •  символы подчёркивания.

Примеры правильного задания имен переменных:

Res res array Array

_res _Res _array _Array

_res01 _Res01 _array_119 __Array_029

В задании имени переменной нельзя использовать:

  •  буквы русского языка (кириллицу);
  •  начинать имя с цифры;
  •  использовать пробелы в именах переменных;
  •  следующие знаки (“ { } , | [ ] ( ) + - / % \ ; ‘ : ? < = > _ ! & # ~ ^ . *)

Примеры неправильного задания имен переменных:

23Res re$ int Massиv

_r es double _arr@y переменная

_re$01 include _array  119 _#_Array_029

Замечание 1.1: идентификаторы (имена переменных), включающие два подряд символа подчёркивания (_ _), резервируются для реализаций С++ и стандартных библиотек. А идентификаторы, начинающиеся с символа подчёркивания (_), используются в реализациях языка С. Поэтому начинать выбираемые пользователем идентификаторы (имена переменных) с символа подчёркивания и двойного подчёркивания не рекомендуется, но не запрещается.

Замечание 1.2: переменные, которые имеют одинаковый синтаксис написания, например Res и res, array и Array, array и ARRAY, но различаются лишь верхним и нижним регистром, будут разными переменными, так как С/С++ чувствителен к регистру.

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

В языке С++ есть два способа задания комментариев: первый способ определяет комментарий как последовательность символов, которые слева ограничены символами — /*, а справа — */. Этот тип комментария можно использовать при комментировании одновременно более одной строки.

/* означают, что это начало комментария);

*/ — конец комментария.

Пример использования многострочного комментария показан на рис.1.1

Рис.1.1: Пример использования многострочного комментария

Второй способ предназначен для комментирования только одной строки. Начало комментария считаются два «слэша» без пробелов — //. Концом комментария будет считаться конец строки.

Пример использования однострочного комментария показан на рис.1.2

Рис.1.2: Пример использования однострочного комментария

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

asm

double

new

switch

auto

else

operator

template

break

enum

private

this

case

extern

protected

throw

catch

float

public

try

char

for

register

typedef

class

friend

return

typeid

const

goto

short

union

continue

if

signed

unsigned

default

inline

sizeof

virtual

delete

int

static

void

do

long

struct

volatile

while

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

Главная функция программы. Функция main() — это главная функция программы, присутствие этой функции в программе обязательно. Практически весь основной код программы должен быть описан в этой функции. Функцию нужно писать только малыми латинскими буквами, после слова main обязательно должны присутствовать круглые скобки — (). Основной код программы должен размещаться внутри фигурных скобок {}, которые пишутся сразу после main(). Всё, что находится внутри фигурных скобок называется «телом функции».

Если перед именем главной функции программы будет написано слово int, то это означает, что функция, по завершению работы, должна вернуть целое число, то есть целочисленный результат. Для возврата результата обязательно должно присутствовать зарезервированное слово return, после которого нужно написать переменную типа int или целое число.

Если перед именем главной функции программы будет написано слово void, то это означает, что функция ничего возвращать не будет. На рисунке 1.3 приведены примеры написания главной функции программы.

Рис.1.3: Примеры написания главной функции программы

Однако допускаются следующие записи главной функции (рис.1.4):

Рис.1.4: Примеры написания главной функции программы 2-й вариант

Если при написании функции явно не указывают, что это функция будет возвращать целое число, и при этом написано слово return, то компилятор автоматически определяет эту функцию как int main(), которая возвращает целое число. При этом ни ошибок, ни предупреждений не будет.

Если же слово return не присутствует и тип возвращаемой функции явно не указан, то функция определяется как void main(). При этом ошибок не будет, а будет предупреждение следующего содержания: «warning C4508: 'main' : function should return a value; 'void' return type assumed».

Команды вывода данных на экран.

В теле главной функции написана команда cout<<”This is my first program\n”;, эта команда выполняет вывод строки This is my first program на экран. Чтобы можно было использовать команду cout необходимо с помощью директивы #include подключить заголовочный файл iostream.h, который отвечает за ввод данных и вывод данных на экран. В команде cout<<”This is my first program\n”; при выводе текста встречается символы \n, эти символы не выводятся на экран. Обратный слэш (\) называется знаком перехода или escape-символом, он свидетельствует о том, что должен выводиться «специальный» символ. Когда обратный слэш встречается в цепочке символов, следующий символ комбинируется с обратным слэшем и формирует управляющую последовательность (escape-последовательность). Управляющая последовательность \n означает новую строку. Она вызывает перемещение курсора к началу следующей строки на экране. Некоторые другие управляющие последовательности приведены в таблице 1.1.

Таблица 1.1: Некоторые управляющие последовательности и их описания.

Управляющая последовательность

Описание

\n

Новая строка. Позиционирование курсора к началу следующей строки.

\t

Символ горизонтальной табуляции. Перемещение курсора к следующей позиции табуляции.

\r

Возврат каретки. Позиционирование курсора к началу текущей строки; запрет перехода к следующей строке.

\a

Сигнал тревоги. Звук системного звонка.

\\

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

\”

Двойные кавычки. Используют для печати символа двойных кавычек.

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

Этот заголовочный файл можно подключить несколькими способами:

1

#include <iostream.h>

Эта запись использовалась в старых компиляторах.

2

#includeiostream.h

Эта запись использовалась в старых компиляторах.

3

#include <ciostream>

Эта запись используется в новых компиляторах.

4

#includeciostream

Эта запись используется в новых компиляторах.

Если вы подключаете заголовочные файлы одним из следующим способом: #include <ciostream> или #includeciostream, то для использования команд ввода и вывода нужно писать std::cout либо std::cin, либо написать строку using namespace std;

Замечание 1.5: При подключении заголовочного файла часто допускают следующую ошибку – ставят точку с запятой в конце строки:

  •  #include <iostream.h>;
  •  #include “iostream.h”;
  •  #include <ciostream>;
  •  #includeciostream;

Замечание 1.6: Точка с запятой при реализации главной функции программы, как показано в следующем примере, запрещена:

int main();

{

return 0;

}

Ход работы

  1.  Запустите программный продукт С++. Появится окно программы, как показано на рис.1.5

Рис.1.5: Главное окно программы С++

  1.  Для создания нового проекта выполните команду меню FileNew или воспользуйтесь горячими клавишами <Ctrl>+<N>. После чего появится диалоговое окно как на рис.1.6

Рис.1.6: Диалоговое окно создания нового проекта (New), файла и др. документов

  1.  В появившемся диалоговом окошке перейдите на вкладку Projects, если она не активна (рис.1.6, номер 1).
  2.  Затем из предложенного списка выберите Win32 Console Application (ри.1.6, номер 2).
  3.  Задайте имя вашему проекту в поле Project name (рис.1.6, номер 3). Имена лучше давать осмысленные. Задайте имя латинскими буквами, при этом могут использоваться буквенные символы a-z, A-Z, цифры 0-9 и знак подчёркивания.
  4.  Выберите директорию, где будут сохраняться ваши проекты (рис.1.6, номер 4). После чего нажмите кнопку OK.
  5.  Далее появится диалоговое окно мастера, которое предложит выбрать тип создаваемого приложения, выберите An empty project, как показано на рис.1.7, после чего нажмите кнопку Finish.

Рис.1.7: Диалоговое окно мастера создания консольного приложения

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

Рис.1.8: Информация по только что созданному проекту

  1.  Ваш проект только что был создан, но в нём нет ни одного файла. Чтобы просмотреть какие файлы включены в проект необходимо в вспомогательном окне Workspace перейти на вкладку FileView. Окно Workspace обычно отображается слева в главном окне приложения С++ (рис.1.9), но его также можно и перемещать. Если окно не отображается выполните одно из следующих действий: команда меню ViewWorkspace (<Alt>+<0>), либо на стандартной панели инструментов нажмите на иконку (при наведении на которую появится всплывающая подсказка “Workspace”). Попробуйте скрыть и отобразить окно Workspace.

Рис.1.9: Окно Workspace

  1.  Для добавления файла(ов) выполним второе действие хода лабораторной работы, то есть вызовем диалоговое окно создания проектов, файлов… Переходим на вкладку Files (рис.1.10, номер 1).

Рис.1.10: Диалоговое окно создания файлов на вкладке Files

  1.  Из предложенного списка выбираем C++ Source File (рис.1.10, номер 2).
  2.  Даём имя файлу (рис.1.10, номер 3).
  3.  Если флаг Add to project не выбран, то установите флаг, а из ниспадающего списка выберите тот проект, в который нужно добавить создаваемый файл. После чего нажмите кнопку OK.
  4.  Теперь можно писать код программы. Напишите следующий код без ошибок.

1

#include <iostream.h>

2

3

int main()

4

{

5

cout<<"This is my first program\n";

6

7

.

.

37

38

return 0;

39

}

Объяснение написанного кода:

В первой (1) строке подключаем заголовочный файл iostream.h, в котором находятся функции, отвечающие за ввод данных с клавиатуры и вывод на экран. Все заголовочные файлы подключаются с помощью директивы #include, она должна находиться перед именем заголовочного файла. Заголовочный файл можно писать в угловых скобках <> (например: <iostream.h>) и в двойных кавычках “” (например: iostream.h).

Важно: заголовочные файлы необходимо подключать в самом начале программы.

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

В третей (3) строке написана главная функция программы main(), слово int, указывает какой будет возвращаемый результат функции (здесь имеется ввиду какого типа будет возвращаемая информация: число, строка, символ, числа с плавающей запятой и т.д. (в нашем случае тип int — это небольшие целые числа [-32768; 32767])), а main это имя функции. Любая функция пишется с круглыми скобками в конце её имени, в скобках могут быть параметры, передаваемые в функцию, в нашем случае никакие параметры не передаются.

В четвёртой (4) и тридцать девятой (39) строках написаны фигурные скобки. Весь код программы должен быть написан между этими фигурными скобками (внутри них).

В пятой (5) строке написана команда cout, которая предназначена для вывода данных на экран. Эта команда имеет следующее правило написания:

cout<<"Текст, выводимый на экран";

cout<<Имя_переменной_содержащей_в_себе_данные;

В конце текста This is my first program после слова program и знаком закрывающей кавычки " стоят символы \n. \n используется для перехода на следующую строку, если бы не было написано \n, то на экране результат выглядел бы следующим образом:

This is my first programPress any key to continue,

а не так как на рис.1.10.

В тридцать восьмой (38) строке написано ключевое слово return, а после него через пробел ноль. Это указывает на то, что функция после успешного выполнения должна вернуть значение равное нулю.

  1.  Теперь одним из предложенных способов компилируем проект:
    1.  выполнением команды меню BuildCompile <имя_компилируемого_файла>;
    2.  горячими клавишами <Ctrl>+<F7>;
    3.  нажатием иконки , находящейся на панели инструментов Build MiniBar.
  2.  После успешной компиляции (если нет ошибок), приступаем к компоновке проекта, для этого выполним одно из действий:
    1.  меню BuildBuild <имя_компилируемого_файла>;
    2.  горячими клавишами <F7>;
    3.  нажатием на иконку , находящейся на панели инструментов Build MiniBar.
  3.  Если компоновка прошла успешно, можно запустить программу, для этого необходимо выполнить одно из предложенных действий:
    1.  меню BuildExecute <имя_компилируемого_файла>;
    2.  горячими клавишами <F5>;
    3.  нажатием на иконку , находящейся на панели инструментов Build MiniBar.
  4.  После запуска программы должно появиться окно консольного приложения, в котором будет выведен текст "This is my first program", а следующей строкой Press any key to continue, как показано на рис.1.11

Рис.1.11: Результат работы нами написанного консольного приложения

  1.  Напишите в коде программы в шестой (6) строке функции main(), команду, которая выведет на экран: «Это моя первая программа». Сделайте так, чтобы после предложения был перенос строки. Сравните вывод строки на экран написанной латинскими буквами и кириллицей. Сделайте выводы по наблюдениям и запишите их в тетради.
  2.  Запишите следующий код программы:

7

// Первый способ вывода предложения на экран

8

cout<<"Choose variable names that suggest the usage.\n";

  1.  Теперь выведем на экран то же самое предложение, но несколькими командами cout:

9

10

// Второй способ вывода предложения на экран

11

cout<<"Choose ";

12

cout<<"variable ";

13

cout<<"names ";

14

cout<<"that ";

15

cout<<"suggest ";

16

cout<<"the ";

17

cout<<"usage.";

18

cout<<"\n";

Сравните результат работы команды вывода одной командой cout (седьмая строка) и несколькими командами cout (восьмая – пятнадцатая строки). Сделайте выводы и запишите их в тетради.

  1.  Запишите снова то же предложение, используя одну команду cout, но несколько потоков направления вывода на экран:

19

20

// Третий способ вывода предложения на экран

21

cout<<"Choose "<<"variable "<<"names "<<"that "<<"suggest "<<"the "<<"usage."<<"\n";

Сделайте сравнение с предыдущими выводами этого же предложения (строки семь - пятнадцать). Сделайте выводы и запишите их в тетрадь.

  1.  Запишите следующий код:

22

23

// Использование табуляторов при выводе данных на экран

24

cout<<"number\t"<<"color\t"<<"code\t"<<"RGB\n";

25

cout<<"1\t"<<"red\t"<<"(1,0,0)\t"<<"RGB\n";

26

cout<<"2\t"<<"green\t"<<"(0,1,0)\t"<<"RGB\n";

27

cout<<"3\t"<<"blue\t"<<"(0,0,1)\t"<<"RGB\n";

  1.  Теперь сделайте вывод данных на экран как показано на рис.1.12

Рис.1.12: Пример вывода данных на экран

  1.  Зная как выводятся в С++ на экран символы \ и ", выведите следующие предложения отдельными строками:

Include files in C++ always have the file name extension ".hh" or ".h".

и

C:\Program Files\Outlook Express\*.*

Результат вывода строк показан на рисунке 1.13.

Рис.1.13: Результат вывода строк с использованием символов \ и "

  1.  Введите следующие строки в редакторе С++:
    cout<<3+90<<"\n";
    cout<<3-90<<"\n";
    cout<<3*90<<"\n";
    cout<<3/90<<"\n";
    cout<<0.3/90<<"\n";
    Скомпилируйте проект, соберите его и выполните. Опишите в своих тетрадях по практике действие каждой строки.
  2.  Почему при выполнении команды «cout<<3/90<<"\n";» на экран выводится ноль, а при выполнении команды «cout<<0.3/90<<"\n";» — 0.00333333 (Первый ответивший студент на этот вопрос повышает оценку на один бал).
  3.  Выполните команду «cout<<(double)3/(double)90<<"\n";», попробуйте объяснить, почему при выполнении команды «cout<<3/90<<"\n";» на экран выводится ноль, а при выполнении команды «cout<<(double)3/(double)90<<"\n";» выводится 0.0333333? (Первый ответивший студент на этот вопрос повышает оценку на один бал).

Контрольные вопросы

Что такое переменная? Правило задания имен переменных. Правило объявления переменных (объявления с инициализацией). Привести примеры.

Содержание отчёта

В рабочей тетради оформление темы и номера лабораторной работы.

Цель работы.

Задача.

Код программы написанный от руки или распечатанную на листах, вклеенных в тетрадь.

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

Предоставить исходный код программы со всем проектом в целом в электронном виде.

Ответить на контрольные вопросы.

Выводы по проделанной лабораторной работы.


 

А также другие работы, которые могут Вас заинтересовать

22105. Общие правила подчинения мест регулярного выражения 54.5 KB
  Определим вначале внутренние состояния в которые переходит автомат из состояния 0 при подаче на его вход сигнала x1. Следовательно автомат из состояния 0 под действием сигнала x1 переходит в состояние 2. Аналогично сигнал x2 переводит автомат из состояния 0 в состояние 1 т. Отсюда получаем следующую отмеченную таблицу переходов: yg e e e e e e y1 e y2 xj ai 0 1 2 3 4 5 6 7 8 x1 2 2 4 2 6 2 7 7 2 x2 1 1 3 1 5 1 8 8 1 yg E e e y1 e y2 xj ai A0 a1 a2 a3 a4 a5 x1 A1 a2 a3 a4 a4 a1 x2 A0 a0 a0 a5 a5 a0 Из построенной таблицы видно что из...
22107. Структурный синтез конечных автоматов 28 KB
  По таблице переходов автомата определяют к каким группам принадлежат внутренние состояния в которые автомат из данного состояния под воздействием каждой буквы входного алфавита. Эти состояния запишем в виде последовательности букв под каждым из состояний автомата. Например из состояния 0 автомат переходит в состояния 2 3 и 1 которые принадлежат соответственно к следующим группам a b и a. Проводят новое разделение внутренних состояний на группы объединяя в каждой группе состояния отмеченные одинаковой последовательностью букв.
22108. Элементарные автоматы 30.5 KB
  Таблица переходов Т триггера имеет вид: yg 0 1 xj ai 0 1 T=0 0 1 T=1 1 0 Из таблицы переходов видно что Ттриггер обладает полной системой переходов и выходов поскольку для каждой пары состояний 00 01 10 11 имеется входной сигнал обеспечивающий переход из одного состояния в другое. На практике более удобно вместо отмеченных таблиц переходов пользоваться так называемыми матрицами переходов элементарных автоматов. Матрица переходов определяет значения сигналов на входах элементарного автомата обеспечивающие каждый их четырех...
22109. D-триггер(триггер задержки) 28.5 KB
  Название Dтриггера происходит от слова €œdelay€ задержка. Из определения следует что состояние триггера в момент времени t1 повторяет значение входного сигнала Dt в момент времени t отсюда и название триггера задержки. Матрица переходов для Dтриггера: D Qt Qt1 0 0 0 1 0 1 0 1 0 1 1 1 Обозначения асинхронного и синхронного Dтриггеров. Матрица переходов RS триггера имеет вид.
22110. J-K триггер (универсальный триггер) 24 KB
  Триггером JK типа называют автомат Мура с двумя устойчивыми состояниями и двумя входами J и K который при условии J K = 1 осуществляет инверсию предыдущего состояния т. при J K = 1 Qt1 = Qt а в остальных случаях функционируют в соответствии с таблицей истинности RS триггера при этом вход J эквивалентен входу S а вход K входу R. Этот триггер уже не имеет запрещенной комбинации входных сигналов и его таблица истинности т.
22111. Структурная схема конечного автомата 26.5 KB
  Комбинационная схема строится из логических элементов образующих функционально полную систему а память на элементарных автоматах обладающих полной системой переходов и выходов. Каждое состояние абстрактного автомата ai i=0n кодируется в структурных автоматах набором состояний элементов памяти Q2 R=1R. Здесь Q состояние автомата а ai = {0 1} Как и прежде Q Общее число необходимых элементов памяти можно определить из следующего неравенства 2R n 1.
22112. Табличный метод структурного синтеза конечных автоматов 75.5 KB
  На этапе структурного синтеза выбираем также способ кодирования состояний и выходных сигналов заданного автомата через состояния и выходные сигналы элементарных автоматов в результате чего составляют кодированные таблицы переходов и выходов. Функции возбуждения элементарных автоматов и функции выходов получаются на основе кодированной таблицы переходов и выходов. Рассмотрим примеры синтеза которые позволяют сформулировать общий алгоритм структурного синтеза конечных автоматов.
22113. Технические особенности конечных автоматов 36 KB
  Здесь u сигналы возбуждения триггера. На практике триггера часто выполняются в синхронном варианте синхронные триггера когда упомянутые элементы u включают в схему триггера. Например схему синхронного триггера RSтипа можно рассматривать как состоящую из асинхронного RSтриггера ко входам R и S которого подключены двухвходовые элементы И. Очевидно синхронные триггера будут сохранять свои состояния при С=0 а переходы в них возможны при С=1 то переходы в синхронном триггере будут осуществляться также как в асинхронном.