- •1) Обзор языка . Структура профессиональной среды разработки программ
- •2) Написать выражение на языке :
- •1. Обзор языков программирования, структура профессиональной среды разработки программ :
- •1) Понятие и подключение библиотеки
- •2) Задача. Найти сумму двух целых чисел a и b.
- •1) Интегрированная среда тр
- •2) Задача. Укажите значение переменной z, после выполнения программы,
- •1) Основные команды главного меню
- •1) Набор символов.Главная функция
- •2) Задача. Написать программу, которая вычисляет при заданном х.
- •1. Символьные данные
- •1) Лексемы: специальные символы, зарезервированные слова.
- •1) Идентификаторы
- •1) Правило записи идентификаторов
- •1) Арифметические операции
- •2) Задача. Написать выражение на языке , .
- •1) Типы данных
- •2) 1. Задача. Дана программа: Var st: string; Begin
- •1) Операторы присвоения
- •2) Задача. Результатом решения задачи будет:
- •1) Форматный ввода
- •2) Задача. Написать выражение на языке
- •1) Форматный вывода
- •1) Цикл с предусловием
- •1) Цикл с постусловием.
- •2) Задача. Даны два числа. Найти их среднее арифметическое и среднее геометрическое.
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 |
||||||
|
|||||||
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. Билет
