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

Введение в информатику. Учебно-методическое пособие

.pdf
Скачиваний:
0
Добавлен:
09.08.2026
Размер:
397 Кб
Скачать

cout<< “Hello world \n”; return 0;

} // комментарий (ставится после двух символов слеша) для пояснений

Программа начинает свое выполнение с функции main(). Выход из этой функции в операционную систему производится командой return. Оператор вывода на экран – cout используется для отображения значений переменных и строковых констант. Для ввода с клавиатуры используется оператор cin.

В дальнейшем для краткости записи мы будем опускать объявление функции main и другие выражения, оставляя только содержимое этой функции.

Вычисление арифметических выражений:

Рассмотрим программы, для которых мы уже писали блок-схемы. Например, вычисление дискриминанта.

float a,b,c,D; //объявим коэффициенты уравнения и дискриминант cin>>a>>b>>c; // введем с клавиатуры переменные D=b*b-4*a*c; // вычислим дискриминант по формуле

cout<<D; // Выведем на экран значение дискриминанта

Оператор ветвления Условный оператор выглядит следующим образом:

if (<некоторое условие>){<набор выражений>}

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

Описание

Неравно

Равенство

<

>

Знак в

!=

==

<=

>=

<

>

языке С++

 

 

 

 

 

 

Табл. 10. Логические операторы в С++

 

Следующие условия выполняются (говорят, что они истины): (4>1), (2==2),(1). Другие условия – ложны (не выполнятся). (4<1),(2!=2),(0).

Если условие истинно, то <набор выражений> будет выполняться, в противном случае выполнение программы перейдет к следующей за <набором выражений> части программы. Более полный оператор ветвления выглядит так:

if (<условие>){<набор выражений1>} else {<набор выражений2>}

Здесь если условие истинно, то выполнится набор1, иначе – набор2. Стоит отметить, что в наборе выражений также могут быть другие (вложенные) ветвления. Дополним наш пример нахождения корней квадратного уравнения: float x1,x2; // объявим переменные для корней уравнения.

if (D>=0){

x1=(-b + sqrt(D))/(2*a); x2=(-b - sqrt(D))/(2*a);

21

}

else{

cout<<“Нет корней”;

}

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

Компьютерная программа представляет собой последовательность команд предназначенных для выполнения на процессоре. Программист пишет исходный код программы на понятном для человека языке программирования. Затем программа транслируется (преобразовывается) с помощью компилятора в машинно-ориентированный набор команд пригодный для выполнения на процессоре.

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

Рассмотрим процесс создания программы в среде Dev-C++ 7.0 .Запустите среду программирования. Затем, создайте новый проект (Меню «Файл» → «Создать» → «Проект»). Выберите тип проекта «Консольное приложение», как показано, и нажмите «OK» на рис.5:

Рис. 5. Выбор типа проекта в Dev-C++7.0

Обязательно сохраните файлы проекта, желательно в отдельную папку. Также рекомендуется использовать латинские символы при выборе имен файлов. Появится набор окон, см. рис. 6, с которыми программист взаимодействует при написании программы. Лево окно отображает файловую структуру проекта. Нижнее окно предназначено для вывода сообщений компилятора, например ошибок компиляции. Центральное окно переназначено для редактирования исходного кода программы. Компиляция программы осуществляется по нажатию комбинации клавиш Ctrl+F9, запуск программы –

Ctrl+F10.

22

Рис. 6. Рабочая среда в Dev-C++7.0

Задания для лабораторной работы

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

a.

Вычислить выражение

 

(

)

+4 для заданных x и y.

b.

Вычислить выражение

(

(

((

))))

 

 

+2для заданных x и y.

 

 

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

d.Найти минимум из трех чисел a,b,c.

e.Определить день недели по известной дате.

f. Вычислить выражение3 +

 

(

)

 

( )

 

для заданных x и y.

g.Введенную дату календаря напишите в текстовом виде на экране.

h.Определить принадлежит ли точка внутренней области, ограниченной

функциями

 

 

.

i. Определить

принадлежит ли точка внутренней области, ограниченной

= 2

 

( ) =

 

функциями

= 4 ,

( ) = cos ( ) и ( ) = 0.5 .

23

Циклы в языке С++

Теоретические основы

Циклические конструкции применяемые в языке С++ можно условно разбить на две категории: Циклы с предусловием, в которых сначала проверяется условие, а затем идет выполнение <набора выражений> и циклы с постусловием, в которых условие проверяется после выполнения <набора выражений>.Заметим, что последний вид циклов хотя бы один раз должен выполниться, тогда как с предусловием могут ни разу не выполнится.

Рассмотрим цикл с предусловием: while(<условие>){

<набор выражений>

}

Указанный набор выражений будет выполняться до тех про пока истинно условие. Аналогичный цикл с постусловием:

do{

<набор выражений> }while(<условие>);

Рассмотрим пример вывода на экран ряда чисел от 1 до 10. int i=0; // переменная будет использована как счетчик в цикле while (i<=10){

cout<<i<< “ ”; i=i+1;

} // таким образом, получится: 0 1 2 3 4 5 6 7 8 9 10

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

Еще один вид циклов с предусловием позволяет в рамках оператора инициализировать переменные и менять значение счетчика.

for (int i=0;i<=10;i=i+1){ cout<<i<< “ ”;

}

В языке С++ имеется сокращенный оператор добавления единицы к числу, например вместо выражения i=i+1; мы можем написать i++; аналогично отнять единицу i--;

Распространенные ошибки

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

24

if (D>=0) // Внимание нет скобок x1=(-b+sqrt(D))/(2*a); x2=(-b-sqrt(D))/(2*a);

Втакой записи тело условия ограничено лишь первым выражением после условия, т.е. вычислением x1, следовательно, x2 будет вычислено независимо от условия. Более того если случайно поставить «;» после условия, то она воспринимается компилятором как пустое выражение.

if (D>=0); // Внимание точка с запятой x1=(-b+sqrt(D))/(2*a); x2=(-b-sqrt(D))/(2*a);

Здесь вычисление x1 и x2 будет вне зависимости от условия. Следовательно программа, вычисляя квадратный корень из отрицательного числа, сгенерирует ошибку. Аналогичная ситуация возникает при использовании циклов.

int i=0;

while (i<=10) // Внимание нет скобок cout<<i<< “ ”;

i=i+1;

Здесь в теле цикла одно выражение вывода на экран. В результате будет выведено 11 нулей. Рассмотрим еще одну ошибку.

while (i<=10);{// Внимание точка с запятой cout<<i<< “ ”;

i=i+1;

}

Втакой записи тело цикла – пустой оператор. Переменная i не меняет своего значения и программа зависает.

Задания для лабораторной работы

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

a. Найти сумму ряда

 

+

 

 

+ +−

 

.

 

 

 

 

b.Найти сумму цифр числа.

c.Вычислить факториал числа.

d.Найти количество четных чисел в диапазоне [3;1000] делящихся на 13.

e.

интервале [-15;15].

функции

= −0.2

+7

с точностью до 0.001на

 

Найти

максимум

 

 

f.

Найти

количество пересечений графиком функции

= 3 sin (2 ) с

осью абсцисс с точностью до 0.001.

 

 

25

Массивы данных

Теоретические основы

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

int Data[10];

Здесь указан пример объявления числового массива с именем Data и размером 10 элементов. Обращение к элементам массива производится с помощью квадратных скобок с указанием индекса.

Data[2]=3;

Data[8]=Data[1]+5;

Следует отметить, что элементы массива нумеруются, начиная с нуля. Таким образом, самым последним элементом массива Data является Data[9].

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

int ArrayA[10], ArrayB[10]; // Объявили массивы

ArrayA=ArrayB;// так делать нельзя

При заполнении массива следует отдельно обращаться к каждому его элементу. Инициализация массива производится так:

int A[10]={1,2,6,1,2,3,9,-5,6,8};

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

ArrayA[13]=0;

приведет к тому, что мы обратимся к области памяти, не принадлежащей массиву. Очевидно, что это может привести к трудноуловимым ошибкам.

Обычно при работе с массивом используется цикл, т.к. операции над элементами повторяются. Рассмотрим пример заполнения массива случайными числами.

for (int i=0;i<10;i++){

ArrayA[i]=rand()%100; // здесь генерируется число и берется его } // остаток от деления на 100.

Вывод на экран массива производится аналогично в цикле. for(int i=0;i<10;i++){

cout<<Array[i]<<“ ”;//не забывайте ставить пробел после вывода числа.

}

26

Работа со строками Строкой в языке С++ обычно называют массив символов. Объявляется он

также как и обычный массив. Строка обязательно имеет специальный символ с нулевым кодом (обозначается как ‘\0’), который служит признаком конца строки. Этот символ необходим при выводе строки на экран. Следовательно, размер строкового массива должен быть увеличен на один символ.

char Message[6]= “Hello”; //5 букв, а размер 6 символов.

char Message[6]= {‘H’, ‘e’, ‘l’, ‘l’, ‘o’, ‘\0’}; // можно и так объявить

Строковые константы представляют собой обычные числа (коды символов в кодировке ASCII). Поэтому допускается присваивание числа переменной символьного типа.

char ch=101;// Здесь присвоится ch= ‘e’, т.к. код символа e равняется 101. int x= ‘f’; // Здесь присвоитсяx=102, т.к. код символа f равняется 102.

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

int x=5;

char ch=x+ ‘0’; // Таким образом ch=‘5’;

Задания для лабораторной работы

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

a.Заполнить массив положительными и отрицательными числами.

b.В заполненном массиве найти сумму всех элементов.

c.Обнулить отрицательные элементы массива.

d.Переписать содержимое одного массива в другой задом наперед.

e.Найти минимальный элемент массива.

f.Преобразовать число в строку.

g.Преобразовать строку в число.

h.Привести строку к верхнему регистру.

i.Проверить баланс скобок в строке.

27

Расчетно-графические задания

В отчете по РГЗ необходимо написать решение ряда задач и предоставить исходные коды программ на языке С++. Варианты задания выбираются согласно списку в журнале. Если количество вариантов задачи меньше, чем номер в журнале, то берется остаток от деления номера на количество вариантов. Выполнение задания несоответствующего варианту недопустимо.

Задание 1 Закодировать двоичным кодом свою фамилию, имя и отчество.

Вычислить избыточность полученного кода. Варианты:

1.Код Хаффмана;

2.Код Шеннона-Фано;

3.Код «Стопка книг»;

4.Код Гилберта-Мура.

Задание 2 Перевести двоичную последовательность, полученную в предыдущем

задании в другую систему счисления. Варианты:

1.Четверичная система сч.;

2.Восьмеричная система сч.;

3.Десятеричная система сч.;

4.Шестнадцатеричная система сч.

Задание 3 Написать программу на языке С++, которая заполняет массив

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

Задание 4 Написать программу на языке С++, которая заполняет массив

случайными числами и выполняет следующее действие, создавая новый файл с изменениями.

Варианты:

1.Заменяет самый часто встречающийся символ на «+»;

2.Убирает из файла все цифры;

3.Заменяет самый часто встречающийся цифру на «-»;

4.Переписывает файл задом на перед.

28

Пояснительная записка по РГЗ должна содержать титульный лист, решение заданий и исходные коды программ. Все расчеты в задании должны быть приведены в пояснительной записке. Исходные коды должны содержать комментарии. Написание записки от руки не допускается.

Заключение

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

Список рекомендуемой литературы

1.Страустрап Б. Язык программирования C++. 1999.

2.Шлее М. Е. Qt4. 8. Профессиональное программирование на C++ (+ DVD). – БХВ-Петербург, 2012.

3.Павловская Т. А., Щупак Ю. А. C/C++. Программирование на языке высокого уровня. Структурное программирование. – М. и др. : Питер, 2002.

4.Ахо А. В., Хопкрофт Д. Э., Ульман Д. Д. Структуры данных и алгоритмы. – Издательский дом Вильямс, 2000.

5.Кубенский А. Структуры и алгоритмы обработки данных: объектноориентированный подход и реализация на C++. – БХВ-Петербург, 2004.

29

Содержание

 

Введение...............................................................................................................

3

Системы счислений..............................................................................................

4

Представление чисел в компьютере ...................................................................

7

Представление информации в компьютере........................................................

9

Кодирование информации.................................................................................

12

Алгоритмы..........................................................................................................

15

Основы языка С++ .............................................................................................

19

Циклы в языке С++............................................................................................

24

Массивы данных................................................................................................

26

Расчетно-графическое задание..........................................................................

28

Заключение.........................................................................................................

29

Список рекомендуемой литературы .................................................................

29

30

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]