- •Оглавление
- •6. Ввод-вывод 52
- •11. Операторы. Дополнение 93
- •12. Передача данных потоком 100
- •13. Файлы 103
- •14. Структура программы 109
- •15. Указатели, массивы, строки 118
- •16. Работа с экраhом 137
- •17. Управление программой с помощью клавиатуры 151
- •Введение
- •1. Основные понятия и определения
- •1.1. Компьютер
- •Процессор
- •Периферия
- •1.2. Алгоритмы
- •1.3. Программы и языки
- •Основные понятия языка программирования
- •Выполнение программы
- •Машинный и алгоритмический языки
- •Метаобозначения
- •Этапы обработки программы на компьютере
- •Терминология
- •Трансляция
- •Редактирование связей (компоновка)
- •Загрузка
- •1.4. Данные
- •Системы счисления
- •Типы и совокупности данных.
- •Вещественные
- •Логические
- •Совокупности данных
- •2. Элементы языка
- •2.1. История языков с и Basic
- •2.2. Алфавит
- •2.3. Идентификаторы
- •2.4. Знаки разрядки
- •2.5. Комментарии
- •2.6. Запись текста программы
- •3.1.1. Целые
- •3.1.2. Данные с плавающей точкой
- •3.1.3. Логический тип
- •3.1.4. Символьные данные
- •3.1.5. Дополнительные типы данных
- •3.2. Совокупности данных
- •3.2.1. Массивы
- •Объявления массивов
- •Обращение к элементу массива
- •3.2.2. Структуры
- •4.1. Арифметические операторы Основные
- •Дополнительные
- •Приоритет
- •4.2. Операторы конкатенации
- •4.3. Операторы сравнения
- •4.4. Логические операторы
- •4.5. Обращение к функции
- •4.6. Встроенные функции
- •4.7. Заключительные замечания
- •5.1. Объявления
- •5.2. Присваивание
- •5.3. Безусловный переход
- •5.4. Инструкция If. Пустая инструкция
- •5.5. Составная инструкция
- •5.6. Циклы
- •5.6.1. Циклы с предусловием
- •Циклы while
- •Циклы for
- •5.6.2. Циклы с постусловием
- •5.6.3. Вложенные циклы
- •5.7. Управляемые переходы
- •5.7.1. Инструкция break
- •5.7.2. Инструкция continue
- •5.7.3. Инструкции exit
- •5.8. Многоальтернативный выбор
- •5.8.1. Инструкция switch (язык с)
- •5.8.2. Инструкция select case (язык Basic)
- •Вопросы для самопроверки и контроля Вопросы для самопроверки
- •Контрольные вопросы
- •6. Ввод-вывод
- •6.1. Управляющая строка
- •6.1.1. Спецификация d (целые десятичные числа)
- •6.1.2. Спецификация f (десятичные числа с плавающей точкой)
- •6.1.3. Спецификация e (десятичные числа с плавающей точкой)
- •6.1.4. Спецификация g (универсальная спецификация)
- •6.1.5. Вывод символьной информации
- •6.2. Инструкции printf и scanf. Схема ввода-вывода
- •7.1.1. Распределение скаляров
- •7.1.2. Распределение массивов
- •7.1.3. Статическое и динамическое распределение памяти
- •7.2. Блоки
- •7.3. Процедуры
- •7.3.1. Определения процедур
- •7.3.2. Связь между вызывающей и вызываемой функциями
- •Механизмы передачи данных
- •Прототипы функций (c)
- •Передача скаляров Возвращаемое значение
- •Входные данные
- •Выходные данные
- •Передача массивов
- •Передача функций
- •Вопросы для самопроверки и контроля Вопросы для самопроверки
- •Контрольные вопросы
- •8. Препроцессор
- •8.1. Определение символических констант
- •8.2. Включение файлов в текст программы
- •9.1. Формирование листинга
- •Перенос:
- •9.2. Комментарии
- •9.3. Имена Имена объектов программы должны быть осмысленными.
- •3. Литералы.
- •10.5. Подмассивы (сечения) (c)
- •10.6. Динамические массивы (b)
- •10.7. Структуры и объединения (c)
- •10.7.1. Структуры
- •10.7.2. Рекурсивные структуры
- •10.7.3. Поля битов
- •10.7.4. Объединения (смеси)
- •10.7.5. Переменные структуры
- •10.9. Пользовательские типы данных
- •10.9.1. Инструкция type (b)
- •10.9.2. Инструкция typedef (c)
- •10.10. Преобразование типов
- •10.10.1. Автоматические преобразования
- •10.10.2. Явные преобразования
- •Вопросы для самопроверки и контроля Вопросы для самопроверки
- •Контрольные вопросы
- •11. Операторы. Дополнение
- •11.1. Уровень 1
- •11.2. Уровень 2 (унарные или одноместные операторы)
- •11.3. Уровень 3 (мультипликативные операторы)
- •11.4. Уровень 4 (аддитивные операторы)
- •11.5. Уровень 5 (сдвиги)
- •11.6. Уровень 6 (отношения)
- •11.7. Уровень 7 (равенство и неравенство)
- •11.8. Поразрядные операторы
- •11.9. Логические операторы
- •11.10. Уровень 13 (условное выражение)
- •11.11. Уровень 14 (операторы присваивания)
- •11.12. Уровень 15 (оператор ',' - запятая)
- •11.13. Некоторые замечания
- •11.14. Постоянные выражения
- •Вопросы для самопроверки и контроля Вопросы для самопроверки
- •Контрольные вопросы
- •12. Передача данных потоком
- •12.1. Спецификация "s" управляющей строки функций scanf и printf
- •12.2. Функции getchar и putchar
- •12.3. Функции gets и puts
- •12.4. Внутренняя передача данных (функции sscanf и sprintf)
- •13.2. Описание файла
- •13.3. Открытие и закрытие файлов
- •13.4. Средства языка с
- •13.4.1. Открытие и закрытие файла
- •13.4.2. Основные функции обмена
- •13.5. Средства языка Basic
- •13.5.1. Открытие и закрытие файла Инструкция open
- •Инструкция close
- •13.5.2. Работа с файлами Инструкция input
- •Функция input
- •Инструкция line input
- •Инструкция write
- •Инструкция print
- •Инструкция width
- •Длина файла
- •Функция MsgBox
- •Вопросы для самопроверки и контроля Вопросы для самопроверки
- •Контрольные вопросы
- •14. Структура программы
- •14.1. Элементы структуры программы.
- •14.1.1. Язык c
- •14.1.2. Язык Basic
- •14.2. Область видимости (действия) и время жизни переменных
- •14.2.1. Язык c
- •14.2.2. Язык Basic
- •14.3. Проект программы
- •14.3.1. Использование директивы препроцессора #include
- •14.3.2. Средства управления проектом
- •14.4. Инициализация данных
- •2. Массивы.
- •15.1. Указатели
- •Определение указателей
- •Задание значений
- •Вывод значений
- •15.2. Указатели и массивы
- •15.3. Работа со строками
- •15.3.1. Литералы
- •15.3.2. Переменные
- •15.3.3. Операторы и функции
- •15.4. Динамические объекты
- •15.5. Типичные ошибки, связанные с указателями Отсутствие инициализации указателя
- •Двойное указание
- •Hе выполнено освобождение выделенной памяти
- •Задание адреса локальной (auto) переменной
- •15.6. Примеры использования указателей. Структуры данных
- •15.6.1. Стек
- •15.6.2. Однонаправленный список
- •15.7. Ссылки и многомерные массивы
- •15.8. Рекурсивные процедуры
- •15.8.1. Рекурсивное решение
- •15.8.2. Нерекурсивное решение. Стек в виде массива
- •15.8.3. Нерекурсивное решение. Стек в виде списка
- •Вопросы для самопроверки и контроля Вопросы для самопроверки
- •Контрольные вопросы
- •16. Работа с экраhом
- •16.1. Текстовый режим(textmode)
- •16.1.2. Управление режимом и окном
- •16.1.3. Управление атрибутом(цветами символа и фона в окне)
- •16.1.4. Информация о текстовом режиме
- •16.1.5. Пример
- •16.1.6. Пример(продолжение)
- •16.2. Графический режим
- •16.2.1. Установка и закрытие
- •16.2.2. Форматирование Цвета
- •Битовые образы(pattern)
- •Текстовые фонты
- •Восстановление установок по умолчанию
- •16.2.3. Размещение на экране Окна
- •Координаты курсора и перемещения
- •16.2.4. Вывод на экран Текст
- •Прямоугольники
- •Эллипсы
- •Многоугольники
- •Пиксели
- •16.2.5. Дополнительные функции
- •Простые циклы
- •Вложенные циклы
- •Процедуры
- •Работа со строками
- •Приложения
- •П1.1. Меню File (Файл)
- •П1.2. Меню Options (Установки среды)
- •П1.3. Разное
- •П1.4. Редактирование текста
- •П1.5. Сообщения
- •Трансляция
- •Компоновка (редактирование связей)
- •Ошибки времени выполнения
- •П1.6. Отладка
- •Прогон до точки прерывания
- •Пошаговое выполнение программы
- •Установка точек прерывания
- •Получение значений объектов программы
- •П1.7. Окна
- •Управление окнами
- •Приложение 2. Среда разработки Visual Basic Express
- •П2.1. Запуск среды
- •П 2.2. Подготовка к работе с новым проектом
- •П2.3. Окна и режимы работы
- •П2.4. Главное меню
- •П2.5. Меню File (Файл)
- •П2.6. Редактирование текста
- •П2.7. Меню View (Обзор)
- •П2.8. Меню Project (Проект)
- •П2.9. Отладка
- •Точки прерывания
- •Определение значений объектов программы в момент прерывания
- •Продолжение работы
- •П2.10. Меню Tools (Средства)
- •П2.11. Меню Window (Окно)
- •Приложение 3. Ответы на вопросы для самопроверки
- •2. Элементы языка
- •3. Элементы данных
- •4. Выражения
- •5. Основные инструкции
- •6. Ввод-вывод
- •7. Процедуры
- •8. Препроцессор
- •9. Стиль программирования
- •10. Данные. Дополнение
- •11. Операторы. Дополнение
- •12. Передача данных потоком
- •13. Файлы
- •14. Структура программы
- •15. Указатели, массивы, строки
- •16. Работа с экраном
- •17. Управление программой с помощью клавиатуры
- •Приложение 4. Темы для курсовой работы
- •Библиографический список
Работа со строками
1. В последовательности символов заменить каждое вхождение слова "рот" на слово "нос".
2. Дана строка символов. Сформировать из нее строку, содержащую только символы, входящие в другую заданную строку.
3. Дана строка символов. Подсчитать количество входящих в нее символов: ",", ";", ":", пробел, а также количество оставшихся символов.
4. Дано предложение, представляющее собой последовательность слов, разделенных произвольным числом пробелов. Преобразовать его так, чтобы между словами было ровно по одному пробелу.
5. Дана строка знаков и 2 произвольных символа. Произвести замену каждого вхождения первого символа на второй.
6. Дана строка знаков. Определить число различных символов в ней.
7. Дана строка знаков. Определить, можно ли из входящих в нее символов (без повторений!) составить слово "Привет".
8. Даны 2 строки символов, причем длина первой из них больше длины второй. Определить, содержится ли вторая строка внутри первой как неразрывное целое.
9. Выполнить выравнивание строки, т.е. 1-й символ должен быть прижат к левому краю экрана, последний – к правому, пробелы между словами добавляются равномерно. Полагаем, что длина строки не больше ширины экрана. 8. Дана строка символов, представляющая собой арифметическое выражение. Определить правильность (число закрывающих должно быть равно числу открывающих) расстановки круглых скобок.
10. Определить количество символов в самой длинной последовательности идущих подряд одинаковых символов заданной строки знаков.
11. Имеется последовательность символов. Группы символов, разделенных пробелом(ами), будем считать словами. Выполнить следующие действия:
- подсчитать количество слов;
- подсчитать количество букв "а" в последнем слове;
- количество слов, начинающихся с буквы "б";
- найти количество слов, у которых первый и последний символы совпадают;
- заменить каждое вхождение слова "это" на слово "то";
- найти длину самого короткого слова.
12. Дано натуральное число n(n<1000). Сформировать строку символов, содержащую его значение на русском языке. Например, для n=769 будет "семьсот шестьдесят девять".
Разное
1. Дан массив: {xi}, i = 1...25, состоящий из натуральных чисел. Преобразовать массив так, чтобы у каждого исходного числа поменялись местами первая и последняя цифры.
2. Первоклассники на уроке физкультуры не смогли построиться по росту. Найти количество учеников, которые оказались больше следующих в строю соучеников.
3. Дан массив: {xi}, i = 1...25. Найти максимальную длину "пилообразной (зубьями вверх)" подпоследовательности идущих подряд чисел, т.е. ее элементы должны удовлетворять условию:
xk<xk+1>xk+2<xk+3>…
4. Чтобы открыть секретный сейф, агент №007 должен в возрастающем порядке набирать все трехзначные числа, у которых нет одинаковых цифр. Составить программу, которая бы печатала на экране его карманного компьютера такие числа, а также определить, сколько времени понадобится, чтобы открыть сейф, если на набор одного числа он тратит t секунд.
5. Результаты футбольного чемпионата задана в виде целой матрицы размером NxN, диагональные элементы которой равны 0, остальные равны: 3 – победа, 1 – ничья, 0 – поражение. Определить победителя. В случае равенства очков преимущество получает команда, имеющая большее число побед. Если и по этому показателю не выявлен победитель, выдать сообщение о переигровке.
6. Даны 2 четырехзначных натуральных числа. Определить число совпадений цифр по месту и по значению. Совпадение по месту означает, что в одинаковой позиции каждого числа находятся одинаковые цифры, совпадение по значению означает, что одинаковые цифры в числах находятся на различных позициях.
7. Дана дата в виде: № дня в месяце, № месяца, год. Проверить ее корректность.
8. Дан порядковый № дня в году и значение года. Определить дату в виде: № дня в месяце, № месяца, год.
9. Дана дата в виде, описанном в предыдущей задаче. Найти порядковый № дня в году.
10. Определить, какой день недели будет 1 сентября текущего года.
11. Определить по заданной дате № дня недели. В расчете исходить из гипотезы, что1/1/1 был понедельник.
12. Найти разницу в днях между 2 заданными датами.
13. Даны координаты 50 точек на плоскости. Определить № той из них, для которой круг радиуса R содержит максимальное количество точек множества.
14. Даны результаты n(n>4) бегунов на 100м, измеренные в сотых долях секунды. Отобрать 4-х лучших для участия в эстафете 4х100м.
1 5. На плоскости координатами своих вершин задан выпуклый n-угольник. Вершины упорядочены в порядке обхода по часовой стрелке. Найти площадь n-угольника. Площадь треугольника равна p(p-a)(p-b)(p-c); p = (a+b+c)/2, где a, b, c – стороны треугольника.
16. Дана матрица {aij}, i =1...n, j = 1...n. Сформировать матрицу {bij}, i = 1...n, j = 1...n, где bij есть минимальный элемент в треугольнике, образованном главной диагональю, строкой и столбцом, содержащими элемент aij.
17. Дан массив: {xi}, i = 1...n. Определить количество "внутренних" точек массива. Элемент массива называют "внутренней" точкой, если соседние элементы имеют совпадающие с ним знаки.
18. Определить сумму всех чисел Фибоначчи, не превышающих 1000. Числа Фибоначчи определяются по формуле: a0 = a1 = 1; an = an-1 + an-2. Вспомогательный массив не использовать.
19. Дана матрица {aij}, i =1...n, j = 1...n. Каждую строку матрицы циклически сдвинуть вправо на число позиций, равное № строки.
