Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Билеты 1-5.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
144.19 Кб
Скачать

Билет 1:

Вопрос 1:Основные понятия языка c:структура программы, допустимые символы, синтаксис.

1)Основные понятия языка

Программа, написанная на языке Си, состоит из операторов. Каждый оператор вызывает выполнение некоторых действий на соответствующем шаге выполнения программы.

При написании операторов применяются латинские прописные и строчные буквы, цифры и специальные знаки. К таким знакам, например, относятся: точка (.), запятая (,), двоеточие (:), точка с запятой (;) и др. Совокупность символов, используемых в языке, называется алфавитом языка.

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

Различают видимые и управляющие символы. Первые могут быть отображены на экране дисплея либо отпечатаны на принтере. Вторые вызывают определенные действия в машине, например: звуковой сигнал - код 710, возврат курсора на один шаг - код 810, горизонтальная табуляция - код 910, перевод курсора на новую строку - код 1010, перемещение курсора в начало строки - код 1310 и т.д. Такие управляющие символы имеют десятичные номера 0 - 31, 127.

Для представления каждого символа в персональном компьютере используется один байт, поэтому общее число символов равно 28 = 256. Кодовая таблица, которая устанавливает соответствие между символом и его кодом, имеет 256 строк вида:

код_символа_в_заданной_системе_счисления - символ.

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

Важным понятием языка является идентификатор, который используется в качестве имени объекта (функции, переменной, константы и др.). Идентификаторы должны выбираться с учетом следующих правил:

  1. Они должны начинаться с буквы латинского алфавита (а,...,z, А,...,Z) или с символа подчеркивания (_).

  2. В них могут использоваться буквы латинского алфавита, символ подчеркивания и цифры (0,...,9). Использование других символов в идентификаторах запрещено.

  3. В языке Си буквы нижнего регистра (а,...,z), применяемые в идентификаторах, отличаются от букв верхнего регистра (А,...,Z). Это означает, что следующие идентификаторы считаются разными: name, NaMe, NAME и т.д.

  4. Идентификаторы могут иметь любую длину, но воспринимается и используется для различения объектов (функций, переменных, констант и т.д.) только часть символов. Их число меняется для разных систем программирования, но в соответствии со стандартом ANSI C не превышает 32 (в Си++ это ограничение снято). Если длина идентификатора установлена равной 5, то имена count и counter будут идентичны, поскольку у них совпадают первые пять символов.

  5. Идентификаторы для новых объектов не должны совпадать с ключевыми словами языка и именами стандартных функций из 

2)Структура программы:

Программа на языке Си состоит из одной или более подпрограмм, называемых функциями.

Язык Си является блочно-структурированным. Каждый блок заключается в фигурные скобки {}.

Основным блоком в программе консольного приложения на языке Си является главная функция, имеющая имя main().

Каждое действие в языке Си заканчивается символом "точка с запятой" - ;. В качестве действия может выступать вызов функции или осуществление некоторых операций.

Имя функции — это коллективное имя группы описаний и операторов,

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

Комментарии в языке Си

В языке Си для комментариев используются символы

/* - начало комментария;

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

Вся последовательность, заключенная между этими символами, является комментарием.

Это удобно для написания многострочных комментариев:

int a; /* целая

переменная */

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

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

float b; // вещественная переменная

Главная функция

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

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

Главную функцию можно записать по-разному:

int main()

void main().

Перед именем функции указывается тип возвращаемого значения. При обращении к главной функции значение возвращается операционной системе. Последняя запись не будет возвращать значения. Однако void main() - не совсем корректная запись, так как сообщает компилятору, что функция main() не возвращает никакого значения.

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

Для возврата целочисленного значения перед завершением функции добавляется строка

return 0; // вещественная переменная

В фигурные скобки заключены описания и операторы.

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

Пример: Вывод на экран сообщения "Hello, world!".

#include <stdio.h> // Подключение библиотеки ввода-вывода

int main() // Главная функция

{

printf("Hello, world!"); // Вывод сообщения

getchar(); // Задержка окна консоли

return 0;

}

Результат работы программы:

Результат работы Hello world

Теперь попробуем написать текст на русском языке.

#include <stdio.h>

int main()

{

printf("Здравствуй, мир!");

getchar();

return 0;

}

Результат работы программы:

Результат работы Здравствуй, мир!

Проблема русского языка в консольных приложениях заключается в том, что консоль и редактор кода Microsoft Visual Studio поддерживают разные кодовые страницы. Для того, чтобы увидеть русские символы в консоли необходимо поменять кодовую страницу в консоли, чтобы она соответствовала кодовой странице редактора (1251). С этой целью вызывается функция system("chcp 1251") с соответствующей командной строкой. Прототип функции system() содержится в библиотеке <stdlib.h>.

При этом текст программы будет выглядеть следующим образом:

#include <stdio.h>

#include <stdlib.h>

int main()

{

system("chcp 1251"); // Текущая кодовая страница 1251

system("cls"); // Очистка консоли

printf("Здравствуй, мир!"); // Вывод сообщения

getchar();

return 0;

}

Результат работы программы:

Результат работы Здравствуй, мир!

3)допустимые символы

По таблице ASCII символы с номерами (кодами) от 0 до 127 жестко определены. В этом диапазоне номера присвоены символам цифр, латинским (английским) маленьким и большим буквам, а также используемым в языке иным символам ('!', '%', '~' и т.п.). Здесь же заданы коды для различных управляющих символов, которые никак не экране не отображаются, а что-то делают (например, создают новою строку или отступ, подают звуковой сигнал и др.). Расширенная таблица ASCII кодирует символы национальных алфавитов (например, русского языка) числами лежащими в диапазоне от 128 до 255. Символы цифр от '0' до '9' имеют последовательные коды от 48 до 57. Этот факт обычно используют, при "переводе" символов цифр в числа. Если мы знаем, что у '0' код 48, а был задан символ '5', имеющий код 53, то если вычесть из 53 число 48, получим число 5. Знание кодов символов цифр позволяет программировать извлечение чисел из текста. Английские большие буквы (прописные) имеют последовательные коды от 65 (A) до 90 (Z), маленькие (строчные) — от 97 до 122.

Специальные символы в программном коде обозначаются двумя символами, т.к. одним их обычно обозначить невозможно. Но по сути представляют собой один символ. Например, букву 'a' можно обозначить одним символом, а как обозначить символ создания новой строки, если ему не соответствует ни один знак? Приходится выкручиваться и представлять такой неординарный символ комбинацией пары других символов: '\n'. Помните при этом, что на самом деле это всего лишь один символ. Ниже перечислен ряд управляющих символов (не все) и то, что они делают: '\n' — создание новой строки и переход на нее; '\t' — табуляция (отступ в несколько пробелов); '\r' — возврат каретки (перевод курсора в первую позицию текущей строки); '\b' — возврат курсора на один символ назад с удалением этого символа. В программном коде, помимо управляющих, специальными символами могут записываться некоторые вполне обычные символы, такие как кавычки, одиночные кавычки, обратная косая черта и др. Некоторые из этих символов можно задать одним символом в одиночных кавычках. Но многие из них невозможно вставить просто так внутрь строки, т.к. они что-то значат с точки зрения синтаксиса языка. Например, обратная косая черта в строке сообщает, что начинается обозначение специального символа, двойная кавычка обозначает начало или конец строки. Поэтому такие символы также обозначаются парной комбинацией других символов: '\\' — обратный косая черта; '\'' — одиночная кавычка; '\"' — двойная кавычка (не в строке можно просто '"'); '\0' — пустота, символ с кодом 0 по таблице ASCII.

4)Синтаксис:

Основные элементы программирования

Ключевые слова и синтаксис языка

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

- ввести информацию в программу;

- запомнить введенную информацию;

- задать команды для обработки информации;

- передать информацию из программы пользователю,

Команды в программе должны быть организованы таким образом, чтобы:

- некоторые из них выполнялись только при истинном значении заданного условия (или набора условий);

- другие команды выполнялись многократно;

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

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

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

Есть шесть классов лексем: идентификаторы, ключевые слова, константы, строки, операторы и разделители.

Идентификаторы: последовательность букв и цифр произвольной длины. Первый символ-буква, например, NAME1, name 1, Name 1, name_1…

Ключевые слова: Они зарезервированы для языка и не могут использоваться другим образом. Список ключевых слов языка представлен в табл.1.1

Таблица 1.1

Ключевые слова языка

Типы данных

Операторы

Eng

Рус

Eng

Рус

Сhar

Символ

Asm

 

Class

Класс

Break

Прерывание

Double

Двойной

Case

Выбор

Enum

Перечень

Continue

Продолжение

Float

Плавающий

Default

По молчанию  

Продолжение табл. 1.1

Int

Целый

Delete

Удалять

Long

Длинное целое

Do

Делать

Short

Короткое целое

Else

Иначе

Struct

Структура

For

Для

Union

Объединение

Go to

Идти (переход)

Unsigned

Беззнаковый

If

Если

Void

Пустой

New

Новый

Return

Возврат

Switch

Прерывать

Extern

Внешняя

Inline

В линию

Register

Регистр

Const

Постоянный

Overload

Переопределение  

Typedef

Тип переменной

Auto

Автоматически

While

Пока

Static

Статический

Public

Открытый

 

 

 

 

 

 

 

 

Константы: целые, символьные, с плавающей точкой, строки.

Целая – последовательность цифр. Константа - восьмеричная, если начинается с 0, в противном случае – десятичная. Цифры 8 и 9 не являются восьмеричными цифрами. Последовательность цифр 0X или 0x воспринимается как шестнадцатеричное целое число. В шестнадцатеричные цифры входят буквы от A до F(f), имеющие значения 10 – 15.

Примеры: 0x53=83; 0xF=15; 0xA = 10.

Константа, значение которой превышает наибольшее машинное целое со знаком, считается длинной (long), в остальных случаях константы считаются целыми (int).

Длинные константы: десятичная, восьмеричная или шестнадцатеричная константа, за которой непосредственно стоит буква L (l), считается длинной константой.

Примеры: 12l - десятичная,

0123L - восьмеричная,

0xaaaal - шестнадцатеричная.

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

Для представления шестнадцатеричного числа в двоичном коде надо заменить двоичной записью каждую цифру этого числа. Например, числа 0xAB01 и 0x53, представленные в двоичном виде, переводятся в десятичные по известной формуле перевода [1].

 

 

Таблица 1.2

Таблица перевода чисел

Десятичное число

Шестнадцате-ричное число

Двоичная запись числа

Восьмерич-ная запись числа

Шестнадцате-рич-ная запись числа

0x0

0x1

0x2

0x3

0x4

0x5

0x6

0x7

0x8

0x9

A

0xA

B

0xB

C

0xC

D

0xD

E

0xE

F

0xF

 

A B 0 1

1010 1011 0000 0001 –> 1010101100000001=

1 * 215 + 0 * 214 + 1 * 213 + 0 * 212 + 1 * 211 + 0 * 210 + 1 * 29+ 1 * 28 + … 1 * 20 = 43777;

0x53 = 01010011 = 0 * 27 + 1 * 26 + 0 * 25 + 1 * 24 + 0 * 23 + 0 * 22 + 1* 21 + 1 * 20 = 83;

Символьная константа состоит из символа, заключенного в апострофы (например, ‘x’). Значением символьной константы считается численное значение константы в машинном наборе (алфавите). Символьные константы считаются данными типа char. Использование неграфических символов, однозначная кавычка ‘ и обратная косая \ производится в соответствии с табл.1.3

Таблица 1.3

Использование специальных символов

Название

Обозначение

Символ новой строки

\n

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

\t

Вертикальная табуляция

\v

Возврат на шаг

\b

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

\v

Продолжение табл. 1.3

Название

Обозначение

Перевод формата

\f

Обратная кавычка

\\

Апостроф

\’

Набор битов 0ddd

\ddd

Набор битов 0xddd

\xddd

Пустой символ

\0

Последовательность \ddd состоит из обратной косой, за которой следуют 1, 2, 3 - восьмеричные цифры, задающие значение требуемого символа. \xddd та же последовательность, где 1, 2, 3 – шестнадцатеричные цифры.

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

Примеры: 345. = 345

3.14159

2.1Е5 = 210000

.123Е3 = 123

4037е-5 = .04037

Строки. Строка – это последовательность символов, заключенная в двойные кавычки “…”. Строка имеет тип char, а класс памяти static. Она инициализируется заданными символами. Все строки, даже если они занесены одинаково, различны. Компилятор располагает в конце каждой строки нулевой (пустой) байт \O с тем, чтобы сканирующая строку программа могла найти ее конец. В строке перед символом двойной кавычки должна стоять обязательно \. Кроме того, могут использоваться те же обозначения, что были описаны для символьных констант.

Примеры:

“Это строковая константа”

“A”

“Это одна \*\

строка”

Имена и типы. Имя обозначает объект, функцию, тип, значение или метку. Имя может использоваться только внутри части текста программы, называемой его областью видимости. Имя имеет тип, определяющий его использование.

Объект – это область памяти. Объект имеет класс памяти, определяющий время его жизни.

Область видимости. Существует четыре ее вида: локальная, файл, программа и класс.

Локальная область- имя, описанное в блоке, локально в этом блоке и может использоваться только в нем. Исключения составляют метки, которые могут использоваться в любом месте функции, в которой они описаны.

Файл – имя, описанное вне любого блока. Программа – имя, описанное в файле, может использоваться в любом другом файле.

Класс - имя члена класса, локально для его класса и может использоваться только в функции-члене этого класса.

 

Вопрос 2:Объекты в C++.Массивы объектов. Привести пример

1)Объекты в C++:

Объект – это структурированная переменная, содержащая всю информацию о некотором физическом предмете или реализуемом в программе понятии.