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

1) Форматный вывода

2) Задача. Определите результат значения, если а=14 и b=4, с:= a mod b

Ответ:

1. Форматный вывод: функция printf()

Синтаксис функции:

 void printf (Строка_формата, Аргументы);

Здесь Строка_формата - это строковая константа С++, которая может включать:

· любые символы - выводятся "как есть";

· esc-последовательности - управляют выводом (например, если вы помните, "\n" переведет курсор в начало следующей строки);

· спецификаторы формата - вместо них в строку при выводе подставляются значения аргументов.

Спецификатор формата имеет вот такой синтаксис:

%[Флаг][Поле].[Десятичных_знаков]Символ_типа

 В квадратные скобки взяты необязательные элементы. Как видно, обязательными частями являются символ процента "%" и Символ_типа - этот отвечает за тип выводимого значения. Например, "%c" - вывод одиночного символа "%i" - вывод целочисленного значения

Символы типов в спецификаторах формата:

· 'd', 'i' - знаковое целое десятичное число

· 'u' - беззнаковое целое десятичное число

· 'o' - беззнаковое целое восьмеричное число

· 'x', 'X' - беззнаковое целое в шестнадцатиричной форме, причем для 'x' запись включает буквы 'a'..'f', а для 'X' - от 'A' до 'F'

· 'f' - знаковое число с плавающей точкой в формате [-]dddd.dddd (каждое d - цифра)

· 'e', 'E' - знаковое число с плавающей точкой в формате соответственно [-]d.dddde[+/-]ddd и [-]d.ddddE[+/-]ddd (каждое d - цифра)

· 'g', 'G' - знаковое число с плавающей точкой; в зависимости от величины аргумента формат выбирается, как для спецификатора 'f' или как для 'e'-'E'

· 'c' - одиночный символ

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

· '%' - сам символ процента

· 'p' - адрес ячейки памяти (аргумент должен быть указателем; пока не забивайте себе голову, мы скоро дойдем до этой темы) в виде XXXX:YYYY (сегмент:смещение) или YYYY (только смещение)

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

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

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

Прежде, чем идти дальше, давайте разберем несколько простых вызовов функции printf (в комментариях указано, что именно будет выведено при выполнении):

printf("Приветики!\n"); // Приветики!

printf("5+5=%i\n", 10); // 5+5=10

printf("5+5=%i\n", 5+5); // 5+5=10

int a=25;

printf("a=%i; a^2=%i\n", a, a*a); // a=2; a^2=4

printf("sin(180o)=%f\n", sin(1)); // sin(180o)=0.84

printf("a=%d; a=%o; a=%X\n", a, a, a); // a=25, a=31, a=19

float d = 1.0;

printf("S=%G\n", M_PI*d*d/4); // S=0.785

printf("%с - последняя буква в алфавите!\n", 'я');

printf("%i%% от %i будет %f\n",

Пока все просто. Теперь несколько более каверзных примеров:

 /спецификатор задан, но аргумент мы забыли

// в качестве значения выведется мусор

printf("Площадь равна %i см^2\n");

// переменная типа int, но выводим мы ее как float

// ошибки нет - произойдет преобразование типов

int b=120;

printf("b = %f\n", b);

// переменная типа float, но выводим мы ее как string

// на экране получим надпись "(null)"

float g=0.98;

printf("Ускорение свободного падения - %s м/с\n", g);

// перепутали местами аргументы - тоже довольно частая ошибка!

printf("2*2=%i; 3*3=%i\n", 9, 4);

Хорошо. Теперь разберем остальные составляющие спецификатора. Для удобства я еще раз напомню его синтаксис:

%[Флаг][Поле].[Десятичных_знаков]Символ_типа

 Поле - общая ширина поля вывода данного значения. При этом возможны такие варианты:

· n - выводится, по крайней мере, n символов значения. Если символов в значении окажется меньше, чем n, то значение дополняется пробелами до ширины n. Если же длина целого числа окажется больше n, то n игнорируется.

· 0n - отличие от n в том, что если число окажется короче указанной нами ширины, оно дополнится незначащими нулями слева.

 int a=120;

printf("a=%2i\n", a); // a=120

printf("a=%5i\n", a); // a=120__

printf("a=%05i\n", a); // a=00120

Флаг - символ, отвечающий за выравнивание значений при выводе (это удобно для вывода данных в столбцы и таблицы). '-' означает, что значения будут выравниваться по левому краю; отсутствие знака, т.е. плюс - по правому краю.

Понятно, что для аккуратных столбцов ширина поля вывода значений должна быть постоянной:

int a=0, b=10, c=150, d=1024;

printf("%-4i\n%-4%i\n%-4i\n%-4%i\n", a, b, c, d);

printf("---");

printf("%4i\n%4%i\n%4i\n%4%i\n", a, b, c, d);

В результате выполнения этого фрагмента, мы получим на экране:

0

10

150

1024

----

0

10

150

1024

 Десятичные знаки - количество знаков после десятичной точки при выводе вещественных чисел:

float x=208.567839;

// задаем общую ширину поля и кол-во десятичных знаков

printf("x=%6.2f\n"); // x=208.57

// задаем только общую ширину поля

printf("x=%6f\n"); // x=208.567839 (не учитываем ширину)

// задаем только количество десятичных знаков

printf("x=%.2f\n"); // x=208.57

2.

17. Билет

1) Символы преобразования

2) Задача. Написать выражение на языке y=x+2x при x=2.312;

Ответ:

1. Функции для преобразования символов

nl2br Заменяет символы перевода строки. Синтаксис : string nl2br(string string) Заменяет в строке все символы новой строки \n на  \n и возвращает результат. Исходная строка не изменяется. Обратите внимание на то, что символы \r, которые присутствуют в конце строки текстовых файлов Windows, этой функцией никак не учитываются, а потому остаются на старом месте.

strip_tags Удаляет из строки теги. Синтаксис : string strip_tags(string str [, string allowable_tags]) Эта функция удаляет из строки все HTML- и PHP-теги и возвращает результат. Незавершенные или фиктивные теги вызывают ошибку. В параметре allowable_tags можно передать теги, которые не следует удалять из строки. Они должны перечисляться вплотную друг к другу.

$st="

<b>Жирный текст</b>

<tt>Моноширный текст</tt>

<a href=http://spravkaweb.ru>Ссылка</a>";

echo "Исходный текст: $st";

echo "<hr>После удаления тегов: ".striptags($st,"<a><b>").

"<hr>";

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

get_meta_tags Функция ищет и обрабатывает все теги . Синтаксис : array get_meta_tags(string filename, int use_include_path) Функция открывает файл и ищет в нем все теги до тех пор, пока не встретится закрывающий тег . Если очередной тег имеет вид: то пара название=>содержимое добавляется в результирующий массив, который под конец и возвращается. Спецсимволы в значении атрибута filename заменяются на знак подчеркивания "_", а алфавитные символы преобразуются в нижний регистр. Функция удобно использовать для быстрого получения всех метатегов из указанного файла. Если необязательный параметр use_include_path установлен, то поиск файла осуществляется не только в текщем каталоге, но и во всех тех, которые назначены для поиска инструкциями include и require.

get_html_translation_table Функция возвращает таблицу трансляции, которая используется функциями htmlspecialchars() и htmlentities(). Синтаксис : string get_html_translation_table(int table [, int quote_style]) В этой функции аргумент table указывает, какую таблицу трансляции необходимо получить: HTML_SPECIALCHARS для функции htmlspecialchars() или HTML_ENTITIES для функции htmlentities(). Описание необязательного параметра quote_style приведено в функции htmlspecialchars().

$trans = get_html_translation_table(HTML_ENTITIES);

$str = "<A & B>";

$encoded = strtr($str, $strans);

// $encoded = "< A & B >"

Иногда удобно использовать функцию array_flip() для изменения направления транслитерации.

$trans = array_flip($trans);

$original = strtr($encoded, $trans);

htmlspecialchars Производит преобразование спецсимволов в HTML-представление. Синтаксис : string HtmlSpecialChars(string str [, int quote_style]); Основное назначение этой функции - гарантировать, что в выводимой строке ни один участок не будет воспринят как тэг. Заменяет в строке некоторые символы (такие как амперсанд, кавычки и знаки "больше" и "меньше") на их HTML-эквиваленты,так, чтобы они выглядели на странице "самими собой". Самое типичное применение этой функции - формирование параметра value в различных элементах формы, чтобы не было никаких проблем с кавычками, или же вывод сообщения в гостевой книге, если вставлять теги пользователю запрещено. При помощи необязательного атрибута quote_style можно указать, что делать с кавычками:

· ENT_COMPAT (по умолчанию) - разрешить трансляцию только двойных кавычек

· ENT_QUOTES - разрешить трансляцию любых кавычек

· ENT_NOQUOTES - запретить трансляцию любых кавычек

$str = htmlspecialchars("<a href=index.php>Главная</a>", ENT_QUOTES);

htmlentities Производит конвертацию символов, имеющих HTML-представление. Синтаксис : string htmlentities(string str [, int quote_style]); Эта функция похожа на htmlspecialchars(), но только в ней производиться не выборочная трансляция, а полная - для всех символов, которые могут иметь эквивалентные HTML-представления. При помощи необязательного атрибута quote_style можно указать, что делать с кавычками:

· ENT_COMPAT (по умолчанию) - разрешить трансляцию только двойных кавычек

· ENT_QUOTES - разрешить трансляцию любых кавычек

· ENT_NOQUOTES - запретить трансляцию любых кавычек

hebrev Конвертация логического текста Hebrew в отображаемый. Синтаксис : string hebrev(string hebrew_text [, int max_chars_per_line]); Необязательный аргумент max_chars_per_line указывает число символов на строку вывода. Функция пытается избежать разрыва слова.

hebrevc Аналог функции hebrev с расстоновкой переносов. Синтаксис : string hebrevc(string hebrew_text [, int max_chars_per_line]); Функция hebrevc() сходна с hebrev() с тем отличием, что она преобразует символы перевода строк "\n" в " \n". необязательный аргумент max_chars_per_line указывает число символов на строку вывода. Функция пытается избежать разрыва слов.

quoted_printable_decode Преобразование цитированной строки в 8-битную. Синтаксис : string quoted_printable_decode(string str);

18. Билет

1) Управляющие символьные константы

2) Задача.    Дана программа:

Var st: string;Begin St:='abcdef; delete(st, 3,2);

Writeln(st); End. На экран будет выведено:

Ответ:

1. Константы.  Различают целые, вещественные, символьные и строковые константы.

Ecs-последовательности (управляющие символы)  Последовательности символов, начинающиеся с обратной косой черты, называют управляющими, или escape – последовательностями. 

19. Билет

1) Составление линейных программ.

2) Задача. Что будет выведено на экран после выполнения фрагмента программы, если nommes=10:

Case nommes of

12,1,2 : writeln('зимa');

3,4,5 : writeln('Becнa');

6,7,8 : writeln('лeтo');

9,10,11: writeln(' осень'); end;

Ответ:

1.

Составить линейную программу, печатающую значение true, если указанное высказывание является истинным, и false — в противном случае.

  #4

Код C++

1

2

3

4

5

6

 int N=248; // вводите число как хотите =)

 int c1=N/100,c2=N/10-c1*10,c3=N-c1*100-c2*10;

 if (((c3/c2)==(c2/c1))&&(c3!=c2)) cout << "true";

 else cout << "false";

 system("pause");

 return 0;

2.

20. Билет

1) Форматный вывод

2) Задача. Определите результат значения, если а=14 и b=4, с:= a div b

Ответ:

1. Форматный вывод 16- билет

2.

21. Билет

1) Полное ветвление.

2) Задача.  Укажите значение переменной z, после выполнения программы,

если х = 1, у = - 1: z:=0; if х>0 then if у>0 then z:=l else z:=2;

Ответ:

1. if (выражение) оператор 1 else оператор2;-полное вестление

2.

22. Билет

1) Неполное ветвление

2) Задача. Дана программа:

Var st: string; Begin St:='abcdef; delete(st, 3,2); Writeln(st); End.

На экран будет выведено:

Ответ:

1. - f (выражение) оператор 1.

2.

23. Билет

1) Составление программ с конструкцией условия. Примеры

2) Задача.Написать выражение на языке при X=4.741;

Ответ:

1. Условный оператор

Оператор if позволяет разветвить вычислительный процесс на два варианта в зависимости от значения некоторого условия.

Имеются две формы условного оператора (схемы представлены на рис. 4.1):

• if (выражение) оператор 1 else оператор2;

• if (выражение) оператор 1.

Выполнение оператора if начинается с вычисления выражения. Далее выполнение осуществляется по следующей схеме:

1) если выражение истинно (отлично от 0), то выполняется оператор_1;

2) если выражение ложно (равно 0), то выполняется оператор_2;

3) если выражение ложно и отсутствует конструкция со словом else, то выполнение оператора if завершается.

Примеры

if(а >b)

с = а - b; // Выполняется, если а > b

else с – b - а; // Выполняется, если а < b

В операторах if могут использоваться составные операторы (блоки операторов) там, где логика программы требует последовательности операторов. Допускается вложение оператора if как в конструкцию if, так и в конструкцию else другого оператора if. Если во вложенных конструкциях фигурные скобки отсутствуют, то компилятор связывает каждое ключевое слово else с наиболее близким if, для которого нет else.

В результате выполнения этой программы r = 2, так как оператор else связан с первым оператором if.

Если же в программе убрать фигурные скобки, стоящие после оператора if, то логика программы изменится.

В этом случае r = 3, так как ключевое слово else относится ко второму оператору if, который не выполняется, поскольку не выполняется условие, проверяемое в первом операторе if.

Количество вложенных операторов if не ограничено, следующий фрагмент программы и схема (рис. 4.2) иллюстрирует это:

Пример показывает, что конструкции со вложенными операторами if, фактически обеспечивают выбор одного варианта из многих возможных, на блок-схеме каждая альтернатива выбора – это блок операторов. Однако такое решение представляется довольно громоздким и не всегда достаточно надежным. Другим способом организации выбора из множества различных вариантов является использование специального оператора выбора switch.

24. Билет