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

Министерство образования и науки Российской Федерации

Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования Казанский национальный исследовательский технический университет им. А.Н. Туполева – КАИ

СПО ИКТЗИ «Колледж Информационных Технологий»

Материалы для подоговки к экзамену по дисциплине «основы программировния»

По материалам сайта http://learnc.info/

Очень рекомендуемая литература! см.1:

Брайан У., The C Programming Language / Брайан У. Керниган, Деннис М. Ритчи, - Изд-во: Вильямс. - 2016.- 288.

Тема №1 6

Основные понятия 6

Способы записи алгоритма 13

Тема №2 15

Переменные 15

Типы переменных 16

Целые 16

Типы с плавающей точкой 19

Переполнение переменных 19

Постфиксное обозначение типа 20

Шестнадцатеричный и восьмеричный формат 21

Экспоненциальная форма представления чисел 21

Объявление переменных 21

Начальное значение переменной 23

Область видимости переменной 24

Тема №3 28

Оператор присваивания 28

rvalue и lvalue 29

Ввод-вывод 30

Форматированный вывод 31

Форматированный ввод 35

Непечатные символы 38

Тема №4 39

Ветвления и логические операторы 39

Оператор Switch 43

Логические операторы 49

Порядок выполнения логических операторов 55

Тема №5 58

Циклы 58

Цикл с предусловием 58

Циклы с постусловием 61

break 63

Цикл for 66

Вложенные циклы 70

Тема №6 72

Одномерные массивы 72

Начальная инициализация массива. 73

Размер массива 75

Переполнение массива 76

Пример с одномерным массивом 77

Многомерные статические массивы 78

Пример с многомерным массивом 80

Тема №7 82

Строки в си. Введение 82

Чтение строк 85

Указатели 88

Определение 88

Арифметика указателей 91

Указатель на указатель 94

Указатели и приведение типов 95

NULL pointer - нулевой указатель 96

Пример работы с указателями 98

Тема №8 100

Указатели и массивы 100

Многомерные массивы и указатели на многомерные массивы 102

Определение макросов 105

Тема №9 113

Тернарный оператор и оператор запятая 113

Оператор запятая. 116

Сегментация приложения на си 120

Тема №10 123

Динамическое выделение памяти 123

malloc 123

Освобождение памяти с помощью free 126

Работа с двумерными и многомерными массивами 127

calloc 129

realloc 129

Тема №11 133

Параметры командной строки 133

Функции 137

Параметры и аргументы 139

Передача аргументов 141

Передача массива в качестве аргумента 146

Тема №12 151

Битовые операции 151

Операции побитового сдвига 154

Примеры 156

1. 156

2. 158

3. 159

4. 159

Вопросы к экзамену по дисциплине «Основы программирования» 162

Тема №1 Основные понятия

Програ́мма (от греч. προ — пред, греч. γράμμα — запись) — термин, в переводе означающий «предписание», то есть предварительное описание предстоящих событий или действий. Данное понятие непосредственно связано с понятием алгоритм.

Алгоритм — изкажённое аль-Хорезми2 — имя среднеазиатского математика средних веков. Его именем называется преемственная последовательность действий, выполнение которой позволяет достичь определённых целей. Также алгоритмом называется описание такой последовательности действий. Алгоритм представляет собой:

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

  • мер (мерил), управляющих передачей потоков преобразуемой в алгоритме информации от каждого блока к другим.

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

Среди понятий, свойственных субкультуре на основе гуманитарного образования терминам «алгоритм», «алгоритмика» наиболее близок термин «сценарий», причём сценарий — многовариантный.

Например.

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

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

Телевизио́нная програ́мма, телепрогр́амма, телепереда́ча — видеоряд, обладающий единым назначением и некоторой целостностью (сюжетом), показываемый по телевидению.

Также, телепрогра́мма (телевизионная программа) — список (перечень) телепередач и прочего (фильмы, музыка), запланированных на ближайшее время (обычно — неделя) и публикуемый в различных СМИ для информирования телезрителя.

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

Программное обеспечение — совокупность программ для ЭВМ — играет основную роль в успехе применения компьютеров. Простые и рутинные задачи компьютер может решать в автоматическом пакетном режиме, но в наиболее важных и сложных случаях используется интерактивный (диалоговый) режим работы программы с непосредственным участием человека. Для решения задач в диалоговом режиме создаются разнообразные автоматизированные (компьютерные) системы (АС), например АС управления предприятием (АСУП), АС управления технологическими процессами (АСУТП), АС научных исследований (АСНИ), автоматизированные обучающие системы (АОС), системы автоматизации проектирования (САПР), банковские системы и др.

Программное обеспечение ЭВМ делится на:

  • прикладное,

  • системное и

  • инструментальное.

Прикладное программное обеспечение предназначено для решения конкретных прикладных задач.

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

Инструментальное программное обеспечние — средства для разработки программ:

  • системы программирования,

  • инструментальные комплексы и

  • отдельные программы для автоматизации разных этапов создания программного обеспечения.

Система программирования включает:

  • языки программирования,

  • трансляторы,

  • библиотеки программ,

  • текстовые редакторы,

  • редакторы связей,

  • загрузчики,

  • средства отладки.

Язык программирования — система обозначений (договорённостей) для записи программ. Их много.

Языки программирования бывают:

  • машанно независимые и

  • машинно зависимые.

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

К машинно-зависимым языкам относятся в основном языки ассемблера, которые называют языками уровня 1:1 ("один к одному"), потому что команда такого языка обычно соответствует одной машинной команде.

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

Высокоуровневые языки программирования были разработаны для платформенной независимости сути алгоритмов. Зависимость от платформы перекладывается на инструментальные программы — трансляторы, компилирующие текст, написанный на языке высокого уровня, в элементарные машинные команды (инструкции). Для каждой платформы разрабатывается платформенно-уникальный транслятор для каждого высокоуровневого языка, например, переводящий текст, написанный на С++ в элементарные команды микропроцессоров семейства x86.

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

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

Примеры: C++, C#, Delphi, Fortran, Java, JavaScript, Лисп, Паскаль, Perl, Python, PHP, Ruby. Языкам высокого уровня свойственно умение работать с комплексными структурами данных. В большинстве из них интегрирована поддержка строковых типов, объектов, операций файлового ввода-вывода и т. п. Это тема лекций следующего семестра.

Низкоуровневый язык программирования (язык программирования низкого уровня) — язык программирования, близкий к программированию непосредственно в машинных кодах используемого реального или виртуального (например, Java, Microsoft .NET) процессора. Для обозначения машинных команд обычно применяется мнемоническое обозначение. Это позволяет запоминать команды не в виде последовательности двоичных нулей и единиц, а в виде осмысленных сокращений слов человеческого языка (обычно английских).

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

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

Также к языкам низкого уровня условно можно причислить CIL, применяемый в платформе Microsoft .NET, Форт, Байт-код Java.

Итак, для использования какого бы то ни было языка программирования на ЭВМ необходим транслятор.

Транслятор – программа для перевода программ с одного языка на другой.

Виды трансляторов:

  • компилятор,

  • интерпретатор,

  • ассемблер,

  • редактор связей,

  • загрузчик и др.

Компилятор — анализирует и переводит программу с некоторого языка высокого уровня на язык более близкий к машинному языку, без непосредственного выполнения программы.

Исходный модуль — текст программы на языке высокого уровня.

Объектный модуль — результат компиляции.

Интерпретатор — программа для анализа и непосредственного выполнения каждой команды исходной программы.

Программирование — это наука, изучающая теорию и методы разработки, производства и эксплуатации программного обеспечения ЭВМ.

Ну, или.

Программи́рование — процесс создания компьютерных программ.

С написанием программ тесно связана их отдадка.

Отладка программы — обнаружение ошибок в программе, их локализация и исправление.

Методы отладки:

  • тестирование;

  • верификация.

Тестирование — выполнение программы вручную или на ЭВМ на контрольных примерах (тестах) с целью обнаружения ошибок или изучения механизма ее работы.

Тест — исходные данные программы вместе с ожидаемым правильным результатом работы.

Верификация — доказательство правильности программы в общем виде, по законам математики.

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

Опера́ция — конструкция в языках программирования, аналогичная по записи математическим операциям, то есть специальный способ записи некоторых действий. Наиболее часто применяются арифметические, логические и строковые операции. В отличие от функций, операции часто являются базовыми элементами языка и обозначаются различными символами пунктуации, а не алфавитно-цифровыми; они имеют специальный инфиксный синтаксис и нестандартные правила передачи аргументов.

Опера́нд (англ. operand) в языках программирования ― аргумент операции; данные, которые обрабатываются командой; грамматическая конструкция, обозначающая выражение, задающее значение аргумента операции. Иногда операндом называют место, позицию в тексте, где должен стоять аргумент операции. Отсюда понятие местности операции, то есть числа аргументов операции.