- •Вопрос 1. История языков программирования от машинного кода до современных языков структурного программирования.
- •Вопрос 3. Понятие о синтаксисе языка программирования. Основные типы данных языка с.
- •Вопрос 14. Цикл с выходом из середины. Привести блок схемы и примеры реализации.
- •Вопрос 15. Итерационные алгоритмы. Привести примеры реализации итерационных алгоритмов в задачах вычисления суммы бесконечного ряда с заданной точностью (нет ничего)
- •Вопрос 21. Область видимости и "время жизни" переменных. Использование статических переменных в функции. Привести примеры.
- •Void Swap ( int &a, int &b ) // ссылки в заголовке
- •2) Массив можно заполнить, вводя элементы массива с клавиатуры:
- •Вопрос 26. Что такое вложенные циклы? Проанализировать работу программы, содержащей вложенные циклы.
- •Int MyArray2 [ 20 ][ 10 ]; // 20 одномерных массивов
- •Int MyArray3 [ 30 ][ 20 ][ 10 ]; // 30 двумерных массивов
- •Int MyArray1 [ 10 ]; // Одномерный массив размерности 10
- •Вопрос 36. Функции сравнения строк. Проиллюстрировать работу функций на примерах
- •Вопрос 37. Функции преобразования числа в цифровую строку и обратно. Проиллюстрировать работу функций на примерах.
- •Int value; //Запись &value означает «адрес объекта value».
- •1) С использованием имени переменной.
- •2) С использованием адреса переменной.
- •Int *ap [15]; // Массив из 15 указателей на int
- •Вопрос 40. Передача массивов в качестве параметров в функцию. Привести пример передачи массива вещественных чисел в функцию, вычисляющую сумму его элементов.
- •Вопрос 41. Статическое и динамическое выделение памяти. Операторы new и delete.
- •Вопрос 44. Привести пример реализации алгоритма обработки и преобразования матриц, используя динамическое выделение памяти и технику работы с указателями.
- •Вопрос 45. Понятие структуры. Описание, инициализация структур. Доступ к полям структур. Примеры использования структур.
- •Вопрос 46. Массивы структур. Привести пример обработки массива структур.
- •Вопрос 47. Передача структур в качестве параметров в функцию. Привести пример функции, обрабатывающей структуру.
- •Передача целых структур функциям
- •Вопрос 48. Указатели на структуру. Использование структур с функциями. Передача структуры в функцию по значению, по ссылке и с использованием техники работы с указателями
- •Объявление указателя на структуру
- •Использование указателей на структуры
Вопрос 3. Понятие о синтаксисе языка программирования. Основные типы данных языка с.
Синтаксис — сторона языка программирования, которая описывает структуру программ как наборов символов (обычно говорят — безотносительно к содержанию). Синтаксису языка противопоставляется его семантика. Синтаксис языка описывает «чистый» язык, в то же время семантика приписывает значения (действия) различным синтаксическим конструкциям.
Каждый язык программирования имеет синтаксическое описание. Обычно синтаксис языка определяют посредством правил Бэкуса-Наура.
Чаще всего синтаксис проверяется на ранних стадиях компиляции. В интерпретируемых языках программирования проверка синтаксиса производится или в процессе интерпретации (выполнения), или в процессе предварительной компиляции в промежуточный код. Кроме того синтаксис может проверяться непосредственно при редактировании исходных текстов программ при использовании IDE.
Типы данных языка C
Символьные: char, wchar_t (char16_t и char32_t, в стандарте C++11).
Целочисленные знаковые: signed char, short int, int, long int (и long long int, в стандарте C++11).
Целочисленные беззнаковые: unsigned char, unsigned short int, unsigned int, unsigned long int(и unsigned long long int, в стандарте C++11).
С плавающей точкой: float, double, long double.
Логический: bool, имеющий значения true и false.
Вопрос 4. Описание переменных и констант в языке С/C++.
Переменная – это символическое обозначение величины в программе. Как ясно из названия, значение переменной (или величина, которую она обозначает) во время выполнения программы может изменяться.
С точки зрения архитектуры компьютера, переменная – это символическое обозначение ячейки оперативной памяти программы, в которой хранятся данные. Содержимое этой ячейки – это текущее значение переменной.
В языке Си++ прежде чем использовать переменную, ее необходимо объявить. Объявить переменную с именем x можно так:
int x;
int k; // это переменная целого типа int
double x; // это переменная вещественного типа удвоенной точности
Бывают: Символьные (unsigned char, char), Перечисления (enum), Целочисленные (unsigned int, short int, int, unsigned long, long), Вещественные (float, double, long double)
Константа – это величина, которая при работе с программой, остается неизменная. Все константы вне зависимости от типа данных можно подразделить на две категории: именованные константы и константы, которые не имеют собственного имени. Например:
25 — константа целого типа;
3.14 — вещественная константа;
'A' — символьная константа.
Вопрос 5. Управление вводом/выводом в языке С/C++. Операторы ввода/вывода. Форматный вывод. Привести примеры.
В языке Си++ нет встроенных средств ввода и вывода – он осуществляется с помощью функций, типов и объектов, которые находятся в стандартных библиотеках. Существует два основных способа: функции унаследованные из Си и объекты Си++.
Для ввода/вывода данных в стиле Си используются функции, которые описываются в библиотечном файле stdio.h.
printf ( форматная строка, список аргументов);
форматная строка - строка символов, заключенных в кавычки, которая показывает, как должны быть напечатаны аргументы. Например: printf ( “Значение числа Пи равно %f\n”, pi);
Форматная строка может содержать
1) символы печатаемые текстуально;
2) спецификации преобразования;
3) управляющие символы.
Например:
#include <iostream.h>;
. . . . . . . . .
cout << “\nВведите количество элементов: ”;
cin >> n;
Операторы ввода/вывода
cout — это оператор, обеспечивающий вывод результатов из программы во внешнюю среду, в нашем случае — на экран.
<< — одна из операций языка, которая в данном случае означает "вывод в поток".
endl обеспечивает перевод курсора экрана на следующую строку.
cin — это оператор, обеспечивающий ввод данных в программу с клавиатуры.
>> — операция потокового ввода.
Вопрос 6. Управляющие последовательности, манипуляторы, используемые при форматном выводе в языке С/C++. Представление не изображаемых символов. Привести примеры.
Представление не изображаемых символов
'\b' означает клавишу <Backspace>
'\г' — перевод курсора в начало строки
'\a' — звуковой сигнал
'\n' — перевод строки
'\t' — табуляция
'\15' = '\хD' — код клавиши <Enter>
Подача звукового сигнала:
cout << '\а' << endl;
Манипуляторы изменяют значение некоторых переменных в операторе cout.
Функция setprecision(n) обеспечивает вывод числа с плавающей запятой с точностью до n знаков после запятой (при необходимости производится округление дробной части). Если при этом не установлен формат вывода с плавающей запятой, то точность указывает общее количество значащих цифр. Заданная по умолчанию точность - шесть цифр.
cout << fixed << setw(colWidth + 1) << setprecision(precision) << y;
Вопрос 7. Арифметические операции языка С/C++. Синтаксис операторов. Операции увеличения ++ и уменьшения --. Привести примеры реализации.
Операции увеличения ++ и уменьшения --
Префиксная форма: ++b; --d;
Постфиксная форма: b++; d--;
………………………………
int b = 1, c = 1, bplus, plusc;
bplus = b++; // постфиксная форма
plusc = ++с; // префиксная форма
cout << “ b = “ << b << “ bplus= “ << bplus;
cout << “ c = “ << c << “plusc = “ << plusc;
Арифметические операции языка C/С++
Ниже перечислены пять базовых арифметических операций в языке С++:
• Операция + выполняет сложение операндов. Например, 4 + 20 равно 24.
• Операция - вычитает второй операнд из первого. Например, 12 — 3 равно 9.
• Операция * умножает операнды. Например, 28*4 равно 112.
• Операция / выполняет деление первого операнда на второй. Например, 1000 / 5 равно 200. Если оба операнда являются целыми числами, то результат будет равен целой доли частного. Например, 17/3 равно 5, с отброшенной дробной частью.
• Операция % находит остаток целочисленного деления первого операнда на второй. Например, 19 % 6 равно 1, поскольку 19 разбивается на 6 три раза, с остатком 1. Оба операнда при этом должны быть целочисленными; использование операции % над числами в формате с плавающей точкой приведет к ошибке времени компиляции. Если один из операндов будет отрицательным, то знак результата будет зависеть от реализации.
Пример: Найти среднее арифметическое двух целых чисел a и b.
Результатом вычисления выражения (a + b) / 2 может быть действительное число. Поэтому деление должно выполняться с сохранением точности. А для этого один из операндов необходимо преобразовать в действительный тип. Например, результат можно вычислить так: res = (a + b) / 2.0. Программа имеет вид:
#include
int a,b;
double res;
void main(void)
{
scanf("%d %d",&a,&b);
res = (a + b) / 2.0;
printf("%lf\n",res);
}
Вопрос 8. Операции сравнения и логические операции в языке С/C++. Синтаксис операторов. Привести примеры реализации. Приоритет операций для языка С.
Операции сравнения
>, >= - больше
<, <= - меньше
== Не путать с присваиванием ( = )! - равно
!= - не равно
Логические операции в языке С/C++
Язык С имеет ровно три логические операции: это
&& или (AND);
|| или (OR);
! или (NOT).
Операция "&&" или операция "AND" называется еще операцией "и" или логическим умножением.
Операция "||" или операция "OR" называется еще операцией "или" или логическим сложением.
Операция "!quot; или операция "NOT" называется еще операцией "не" или логическим отрицанием.
Пример: Проверить, лежит ли значение переменной x в интервале (1; 5):
if ((x > 1) && (x < 5)) ...
Пример 1.3.2. Проверить, лежит ли значение переменной x вне интервала (1; 5):
if ((x <= 1) || (x >= 5)) ...
Таблица приоритетов операций для языка С
Вопрос 9. Стандартные математические функции языка программирования С/C++. Привести примеры использования.
Примеры использования этой функции:
y=sin(x); y1=sin(2+3*x);
Вопрос 10. Структурный подход к программированию и его реализация в языке С/C++. Рассмотреть структуры языка С/C++, позволяющие сделать единичный, двойной и множественный выбор.
Структурный подход к программированию представляет собой совокупность рекомендуемых технологических приемов, охватывающих выполнение всех этапов разработки программного обеспечения. В основе структурного подхода лежит декомпозиция (разбиение на части) сложных систем с целью последующей реализации в виде отдельных небольших (до 40 - 50 операторов) подпрограмм. С появлением других принципов декомпозиции (объектного, логического и т. д.) данный способ получил название процедурной декомпозиции.
Линейная структура процесса вычислений предполагает, что для получения результата необходимо выполнить некоторые операции в определенной последовательности.
Разветвленная структура процесса вычислений предполагает, что конкретная последовательность операций зависит от значений одной или нескольких переменных.
Циклическая структура процесса вычислений предполагает, что для получения результата некоторые действия необходимо выполнить несколько раз.
Структура
выбора if
(единичный выбор)
if ( B )
{ операторы S; }
if ( sum_balls > 0 )
cout << “Экзамен сдан”;
Структура
выбора if
/ else
(двойной выбор)
if ( B )
{ операторы S1; }
else
{ операторы S2; }
Множественный выбор:
#include “stdafx.h”
#include <iostream>
using namespace std;
int main (void)
{
if ( sum_balls > 0 )
cout << “Экзамен сдан”;
else
cout << “Экзамен не сдан”;
return 0;
}
Вопрос 11. Базовые конструкции структурного программирования в С/C++. Оператор switch. Привести синтаксис и пример использования оператора в программе.
Базовые конструкции структурного программирования в С/C++
В теории программирования доказано, что программу для решения задачи любой сложности можно составить только из трех структур, называемых следованием, ветвлением и циклом. Этот результат установлен Боймом и Якопини еще в 1966 году путем доказательства того, что любую программу можно преобразовать в эквивалентную, состоящую только из этих структур и их комбинаций.
Следование, ветвление и цикл называют базовыми конструкциями структурного программирования.
Следованием называется конструкция, представляющая собой последовательное выполнение двух или более операторов (простых или составных).
Ветвление задает выполнение либо одного, либо другого оператора в зависимости от выполнения какого-либо условия.
Цикл задает многократное выполнение оператора.
Оператор switch предназначен для организации выбора из множества различных вариантов.
Пример:
int i=2; switch (i) { case 1: i += 2; case 2: i *= 3; case 0: i /= 2; case 4: i -= 5; default: ; }
Выполнение оператора switch начинается с оператора, помеченного case 2. Таким образом, переменная i получает значение, равное 6, далее выполняется оператор, помеченный ключевым словом case 0, а затем case 4, переменная i примет значение 3, а затем значение -2. Оператор, помеченный ключевым словом default, не изменяет значения переменной.
Вопрос 12. Операторы повторения в С/C++. Привести блок схемы и примеры реализации операторов цикла. Дать рекомендации по выбору наилучшего оператора цикла для конкретного случая.
Для повторения операторов определенное число раз ваши программы используют оператор C++ for.
С помощью оператора C++ while программы повторяют операторы до тех пор, пока указанное условие истинно.
Оператор C++ do while позволяет программам выполнять операторы по крайней мере один раз, а затем, возможно, повторять операторы, основываясь на определенном условии.
Пример: В данном случае цикл будет выполнен десять раз.
for (count = 1; count <= 10; count++)
Пример: Таблица умножения с циклом for
#include “stdafx.h”
#include <iostream>
using namespace std;
int main (void)
{ int k;
cout << "Введите множитель от 1 до 9: ";
cin >> k;
if (0 < k && k < 10)
for ( int i = 0; i < 10; ++i )
cout << k << “ * " << i << “ = " << k * i << endl;
else cout << "Неправ. знач. множит.!" << endl;
return 0;
}
Вопрос 13. Циклы с предусловием и с постусловием в С/C++. Объяснить различия
Цикл с предусловием — цикл, который выполняется пока истинно некоторое условие, указанное перед его началом. Это условие проверяется до выполнения тела цикла, поэтому тело может быть не выполнено ни разу (если условие с самого начала ложно). В большинстве процедурных языков программирования реализуется оператором while, отсюда его второе название — while-цикл.
Например:
while(<условие>)
{
<тело цикла>
}
Цикл с постусловием — цикл, в котором условие проверяется после выполнения тела цикла. Отсюда следует, что тело всегда выполняется хотя бы один раз. В языке Паскаль этот цикл реализует оператор repeat..until; в Си — do…while.
Например:
do
{
<тело цикла>
}
while(<условие продолжения цикла>)
