Информатика и программирование
(3-ий семестр)
Методические указания к лабораторным работам
Содержание
Аннотация. 2
Лабораторная работа 1. 6
Цель работы. 6
Задание. 6
Теоретическая часть. 6
Запуск IDE Borland C++. 6
Выход из IDE Borland C++. 6
Компоненты IDE. 7
Строка меню и меню.. 7
Наборы команд. 8
Окна в IDE Borland C++. 10
Рекомендации по выполнению лабораторной работы. 11
Содержание отчета. 11
Лабораторная работа 2. 12
Цель работы. 12
Задание. 12
Теоретическая часть. 12
Преобразование типов операндов. 12
Оператор форматного вывода printf 13
Рекомендации по выполнению лабораторной работы. 14
Содержание отчета. 14
Лабораторная работа 3. 15
Цель работы. 15
Задание. 15
Теоретическая часть. 15
Выражения и операции в языке СИ. 15
Приоритеты операций в выражениях. 16
Содержание отчета. 17
Лабораторная работа 4. 18
Цель работы. 18
Задание. 18
Теоретическая часть. 18
Оператор цикла for 18
Оператор цикла while. 19
Оператор do while. 19
Оператор break. 19
Оператор continue. 20
Содержание отчета. 20
Лабораторная работа 5. 21
Цель работы. 21
Задание. 21
Теоретическая часть. 21
Массивы в языке Си. 21
Указатели и массивы. 22
Условный оператор. 23
Оператор переключатель switch. 25
Оператор перехода goto. 26
Рекомендации по выполнению лабораторной работы. 26
Определение цифр числа. 26
Поиск простых чисел. 26
Треугольник Паскаля. 27
Содержание отчета. 27
Лабораторная работа 6. 28
Цель работы. 28
Задание. 28
Теоретическая часть. 28
Функции в языке Си. 28
Объявление и определение функций. 28
Прототип функции. 29
Параметры функции. 30
Локальные и глобальные переменные. 30
Функции и массивы. 30
Передача одномерных массивов как параметров функции. 30
Передача строк в качестве параметров функций. 30
Рекомендации по выполнению лабораторной работы. 30
Комментарии к заданию 1. 30
Комментарии к заданию 2. 31
Содержание отчета. 31
Лабораторная работа 7. 32
Цель работы. 32
Задание. 32
Рекомендации по выполнению лабораторной работы. 32
Комментарии к заданию 1. 32
Комментарии к заданию 4. 32
Комментарии к заданию 5. 32
Содержание отчета. 32
Лабораторная работа 8. 33
Цель работы. 33
Задание. 33
Теоретическая часть. 33
Ввод-вывод в языке Си. 33
Потоковый ввод-вывод. 33
Открытие и закрытие потока. 33
Стандартные файлы и функции для работы с ними. 34
Символьный ввод-вывод. 35
Строковый ввод-вывод. 35
Форматированный ввод-вывод. 35
Рекомендации по выполнению лабораторной работы. 35
Содержание отчета. 36
Лабораторная работа 9. 37
Цель работы. 37
Задание. 37
Теоретическая часть. 37
Ввод-вывод для двоичных файлов. 37
Прямой доступ к файлам. 37
Рекомендации по выполнению лабораторной работы. 38
Содержание отчета. 39
Лабораторная работа 10. 40
Цель работы. 40
Задание. 40
Теоретическая часть. 40
Строки в языке Си. 40
Операции со строками. 41
Содержание отчета. 43
Лабораторная работа 11. 44
Цель работы. 44
Задание. 44
Теоретическая часть. 44
Проверка символов. 44
Содержание отчета. 45
Лабораторная работа 12. 46
Цель работы. 46
Задание. 46
Теоретическая часть. 46
Содержание отчета. 47
Лабораторная работа 13. 48
Цель работы. 48
Задание. 48
Теоретическая часть. 48
Рекомендации по выполнению лабораторной работы. 50
Определение корней функции. 50
Метод деления отрезка пополам. 50
Метод хорд. 51
Вычисление интеграла. 52
Содержание отчета. 54
Лабораторная работа 14. 55
Цель работы. 55
Задание. 55
Рекомендации по выполнению лабораторной работы. 55
Содержание отчета. 58
Лабораторная работа 1
Цель работы
Изучение основных приемов работы с интегрированной средой разработки (Integrated Development Environment, IDE) Borland C++
Задание
Используя IDE Borland C++, ввести текст программы, оттранслировать ее, исправить ошибки и получить правильный результат.
Текст программы (программа инициализирует массив целых чисел, записывая в каждый его элемент номер элемента массива, взятый со знаком '-')
void main(void)
{
int mas[10];
int i,k=1;
for(i=0,i<10,i+1)
{
mas[i] = i*k
k=-k;
}
i=0;
while(i<10)
{
printf("mas[%i] = %i ",mas[i],i);
i++;
}
printf("\n");
}
Теоретическая часть
Интегрированная среда разработки Borland C++ включает все необходимое для написания, редактирования, компиляции, компоновки и отладки программ пользователя. Она обеспечивает:
- возможность присутствия на экране монитора большого числа окон, которые можно перемещать по экрану и размеры которых можно изменять;
- поддержку "мыши";
- диалоговые окна;
- команды копирование и вставки текста;
- готовые к копированию примеры из системы подсказки;
- встроенный ассемблер;
- возможность быстрого перехода к другим программам (например, к программе Турбо-Ассемблер, TASM) и обратного возврата;
- наличие макроязыка редактора.
Запуск IDE Borland C++
Для запуска IDE выберите пункт меню Пуск à Программы à Borland C++ à Borland C++ или дважды щелкните ярлык Borland C++ на рабочем столе – не экране появится основное окно программы.
Выход из IDE Borland C++
Выход из IDE Borland C++ можно осуществить следующими способами:
- для того, чтобы полностью выйти из IDE Borland C++, выберите пункт меню File à Quit (или нажмите клавишу Alt-X). Если в тексты программ были внесены какие-либо изменения, и они не были сохранены, то на экран будет выведен вопрос о сохранении изменений.
- Для того чтобы временно перейти из IDE в командную среду DOS, выберите пункт меню File à DOS Shell. Перейдя в этот режим, вы можете ввести любую команду DOS и даже можете запустить из командной строки какие-либо другие программы. Для возврата в среду Borland C++ введите в командной строке команду EXIT и нажмите клавишу Enter.
Компоненты IDE
IDE Borland C++ имеет три визуальных компоненты: строку меню в верхней части экрана, область окна в средней части экрана и строку состояния в нижней части aaaaaa экрана (см. рис. 1).
Рис. 1. Основное окно IDE Borland C++
Строка меню и меню
Строка меню представляет собой основное средство доступа ко всем командам (пунктам) меню. Строка меню оказывается невидимой лишь в том случае, когда просматривается информация, отображаемая вашей программой, или осуществляется переход к другой программе.
Если за командой меню следует многоточие (...), то в результате выбора данной команды появляется диалоговое окно. Если за командой следует стрелка (), то выбор данной команды приводит к появлению другого, всплывающего меню. Если рядом с командой не присутствует ни многоточие, ни стрелка, то это означает, что выбор данной команды приводит к немедленному выполнению того действия, которое закреплено за данной командой.
Выбор пунктов меню можно осуществлять следующими способами:
1. Нажмите клавишу F10 – в результате строка меню становится активной. Это означает, что дальнейшие нажатия клавиш будут относиться именно к строке меню, а не к другой компоненте IDE.
2. Для выбора того пункта меню, которое вы хотите отобразить, необходимо воспользоваться клавишами управления курсором. После этого нужно нажать клавишу Enter. После этого Borland C++ либо выполняет выбранную команду, либо отображает диалоговое окно, либо отображает другое меню.
Для отмены некоторого действия следует нажать клавишу Esc.
3. Для выбора пункта меню после нажатия клавиши F10 вы также можете лишь нажать выделенную другим цветом букву (букву активации) нужного пункта меню. Например, находясь в строке меню, можно нажать клавишу E, чтобы быстро перейти к меню Edit (редактирование). Если вы находитесь в произвольном месте системы, то для отображения необходимого вам пункта меню необходимо нажать комбинацию клавиш Alt + буква активации данного пункта меню.
При помощи мыши команду можно выбрать двумя способами:
1. Для вызова меню необходимо щелкнуть мышкой требуемый заголовок меню. После этого для выбора желаемого пункта нужно щелкнуть кнопкой на выбираемом пункте.
2. Можно также перевести указатель мыши от заголовка меню вниз непосредственно до команды меню. Когда указатель мыши достигнет той команды, которую вы хотите выбрать, отпустите кнопку мыши. (Если вы измените свои намерения, то необходимо лишь перевести указатель мыши за пределы меню; при этом никакая команда не будет выбрана.)
Наборы команд
В Borland C++ имеется два набора команд: команды обычного пользовательского доступа (Common User Access, CUA), который является стандартным набором, используемым большинством программ для Windows, и альтернативный набор команд. Доступные пользователю средства оперативного доступа зависят от используемого набора команд. Выбрать набор команд можно при помощи пункта меню Options à Environment à Preferences, выбирая нужный набор команд.
В представленных ниже таблицах приводится перечень наиболее часто используемых клавиш активации IDE Borland C++ для обоих наборов команд.
Таблица 1. Часто используемые клавиши активации общего назначения
CUA | Альт. | Элемент меню | Функция |
F1 | F1 | Help | Отображает экранный кадр подсказки |
F2 | File à Save | Сохраняет на диске тот файл который находится в активном окне Edit | |
F3 | File à Open | Отображает на экране диалоговое окно, с помощью которого можно открыть файл | |
F4 | Run à Go to Cursor | Выполняет программу до той строки, на которой установлен курсор | |
F5 | Window à Zoom | Распахивает на весь экран активное окно | |
Ctrl+F6 | F6 | Window à Next | Осуществляет циклическое перемещение от одного открытого окна к следующему |
F7 | F7 | Run à Trace Into | Осуществляет выполнение программы в режиме отладки, осуществляя трассирующее вхождение в функцию |
F8 | F8 | Run à Step Over | Осуществляет выполнение программы в режиме отладки, не выполняя вызовы функций |
F9 | F9 | Compile à Make EXE | Создание файла .EXE |
F10 | F10 | Активация строки меню |
Таблица 2. Клавиши активации меню
CUA | Альт. | Элемент меню | Функция |
Alt+пробел | Alt+пробел | меню Ё | Переход в системное меню Ё |
Alt+C | Alt+C | меню Compile | Переход в меню Comрile |
Alt+D | Alt+D | меню Debug | Переход в меню Debug |
Alt+E | Alt+E | меню Edit | Переход в меню Edit |
Alt+F | Alt+F | меню File | Переход в меню File |
Alt+H | Alt+H | меню Help | Переход в меню Helр |
Alt+O | Alt+O | меню Options | Переход в меню Oрtions |
Alt+P | Alt+P | меню Project | Переход в меню Project |
Alt+R | Alt+R | меню Run | Переход в меню Run |
Alt+S | Alt+S | меню Search | Переход в меню Search |
Alt+W | Alt+W | меню Window | Переход в меню Window |
Alt+X | Alt+X | File à Quit | Выход из Borland C++ |
Таблица 3. Клавиши активации режима редактирования
CUA | Альт. | Элемент меню | Функция |
Ctrl+Del | Ctrl+Del | Edit à Clear | Удаляет выбранный текст из окна, но не помещает его в текстовый буфер |
Ctrl+Ins | Ctrl+Ins | Edit à Coрy | Копирует выбранный текст в текстовый буфер |
Shift+Del | Shift+Del | Edit à Cut | Заносит выбранный текст в текстовый буфер и удаляет выбранный текст |
Shift+Ins | Shift+Ins | Edit à Paste | Вставляет текст, находящийся в текстовом буфере, в активное окно |
Аlt+Bksрc | Аlt+Bksрc | Edit à Undo | Восстанавливает текст в активном окне в предыдущее состояние |
Аlt+Shift+Bksрc | Аlt+Shift+Bksрc | Edit à Redo | Восстанавливает текст в активном окне в предыдущее состояние |
Ctrl+L | Search à Search Again | Повторяет последнюю команду Find или Reрlace | |
F2 | File à Save | Сохраняет на диске файл, который находится в текущем окне Edit | |
F3 | File à Oрen | Открытие файла |
Таблица 4. Клавиши активации режима управления окнами
CUA | Альт. | Элемент меню | Функция |
Alt+# | Alt+# | Переход к окну номер # | |
Alt+0 | Alt+0 | Window à List | Отображает список открытых окон |
Ctrl+F4 | Alt+F3 | Window à Close | Закрывает активное окно |
Shift+F5 | Window à Tile | Располагает все окна мозаично | |
Alt+F5 | Alt+F4 | Debug à Insрect | Открывает окно проверки |
Shift+F5 | Alt+F5 | Window à User Screen | Отображает экран пользователя |
F5 | Window à Zoom | Распахивает на весь экран/Возвращает к прежнему состоянию активное окно | |
Ctrl+F6 | F6 | Window à Next | Переключает активное окно |
Таблица 5. Клавиши активации режима выполнения и отладки
CUA | Альт. | Элемент меню | Функция |
Alt+F5 | Alt+F4 | Debug à Insрect | Открывает окно проверки |
Alt+F7 | Alt+F7 | Search à Previous Error | Переносит к предыдущей ошибке |
Alt+F8 | Alt+F8 | Search à Next Error | Переносит к следующей ошибке |
Alt+F9 | Alt+F9 | Comрile à Comрile to | Компилирует в OBJ-файл |
Ctrl+F2 | Ctrl+F2 | Run à Program Reset | Осуществляет реинициализацию выполняющейся программы |
Ctrl+F3 | Debug à Call Stack | Выдает на экран окно со стеком вызовов функций | |
Ctrl+F4 | Debug à Evaluate/Modify | Вычисляет выражение | |
Ctrl+F5 | Ctrl+F7 | Debug à Add Watch | Добавляет просматриваемое выражение в окно просмотра |
F5 | Ctrl+F8 | Debug à Toggle | Устанавливает или отменяет Breakрoint (точку прерывания программы) |
Ctrl+F9 | Ctrl+F9 | Run à Run | Выполняет программу |
F4 | Run à Go To Cursor | Выполняет программу до той строки, на которой установлен курсор | |
F7 | F7 | Run à Trace Into | Осуществляет выполнение программы в режиме отладки, осуществляя трассирующие вхождения в функции |
F8 | F8 | Run à Steр Over | Осуществляет выполнение программы в режиме отладки, минуя вызовы функций |
F9 | F9 | Comрile à Make | Собирает (компилирует/компонует) программу |
Таблица 6. Клавиши активации режима интерактивной подсказки
CUA | Альт. | Элемент меню | Функция |
F1 | F1 | Helр à Contents | Открывает экранный кадр контекстной подсказки |
F1 F1 | F1 F1 | Выдает на экран информацию о том, как пользоваться подсказкой. | |
Shift+F1 | Shift+F1 | Helр à Index | Выдает на экран индекс по системе подсказки |
Alt+F1 | Alt+F1 | Helр à Previous Toрic | Отображает предыдущий экранный кадр подсказки |
Ctrl+F1 | Ctrl+F1 | Helр à Toрic Search | (Только в редакторе) вызывает относящуюся к языку подсказку |
Окна в IDE Borland C++
Большая часть того, что вы видите и делаете в IDE, происходит в окне. Окно представляет собой область экрана, которую можно открывать, закрывать, перемещать, у которой можно изменять размеры, которую можно распахивать на весь экран, ориентировать в стык с другими окнами (чтобы не происходило перекрытий) и перекрывать с другими окнами.
В IDE может быть открыто много окон, но в каждый момент времени активным может быть только одно окно. Активным окном является то окно, в котором вы в настоящий момент работаете. Любые выбираемые вами команды или вводимый вами текст, как правило, относится только к активному окну. (Если один и тот же файл открыт в нескольких окнах, то действие будет относиться ко всем открытым окнам, в которых содержится файл.)
IDE позволяет без затруднений определить, какое именно окно является активным. Это достигается при помощи двойных линий бордюра, в которые заключается активное окно. Активное окно всегда содержит маркер закрытия окна, маркер распахивания окна на весь экран и полосы прокрутки. Если ваши окна перекрываются, то активное окно всегда будет находиться поверх других окон (всегда располагается на переднем плане).
Существует несколько типов окон, но большая их часть имеет следующие общие элементы:
- строку заголовка;
- маркер закрытия окна и маркер распахивания окна;
- полосы прокрутки;
- номер окна (от 1 до 9).
Строка заголовка, являющаяся самой верхней строкой окна, содержит название данного окна и номер окна. Для того, чтобы распахнуть окно на весь экранный кадр, можно подвести указатель мыши к строке заголовка и дважды щелкнуть заголовок кнопкой мыши.
Маркер закрытия окна представляет собой прямоугольник, который расположен в левом верхнем углу окна. Для закрытия окна необходимо щелкнуть мышкой маркер закрытия окна (можно также выбрать команду Window à Close или нажать комбинацию клавиш Alt-F3) . Окна Insрector и Helр считаются временными и могут быть закрыты с помощью нажатия клавиши Esc.
Маркер распахивания окна на весь экран располагается в правом верхнем углу. Если пиктограмма в этом углу представляет собой стрелку вверх, то можно подвести к этой пиктограмме мышь и нажать кнопку мыши, чтобы увеличить размеры окна до максимально возможного размера. Если эта пиктограмма представляет собой стрелку с двумя концами, направленными вверх и вниз, то окно уже имеет максимальный размер.
В правом верхнем углу первых девяти окон, которые вы открываете в системе Borland C++, имеется номер окна. Какое-либо окно можно сделать активным (то есть, вывести его на передний план) нажатием клавиши Alt в комбинации с номером окна. Например, если окно Helр имеет номер #5, но оно было "спрятано" под другими окнами, то для оперативного вывода его на передний план можно нажать комбинацию клавиш Alt+5.
Рекомендации по выполнению лабораторной работы
Лабораторную работу рекомендуется выполнять в следующем порядке:
Для этого закройте окно с текстом программы, перейдите из IDE в режим командной строки DOS, выбрав пункт меню File à DOS shell. Вставьте в принтер бумагу, в командной строке DOS введите команду @LPR <имя_файла_программы_без_расширения>
После завершения печати удалите файлы программ, введя команду
DEL <имя_файла_программы_без_расширения>.*
После удаления файлов введите команду exit
Содержание отчета
Отчет по лабораторной работе должен содержать:
- задание лабораторной работы, соответствующее варианту
- текст программы
- результаты работы программы
Лабораторная работа 2
Цель работы
Изучение базовых типов данных языка Си.
Задание
1. Для типов данных char, short, int, longс квалификаторами signed, unsignedсоставить программу, которая выполняет указанные преобразования типов, и вывести полученные результаты.
signed char à signed short int à signed int à signed long
unsigned char à unsigned short int à unsigned int à unsigned long
unsigned long à unsigned int à unsigned short int à unsigned char
signed long à signed int à signed short int à signed char
Преобразования должны быть выполнены для произвольного, максимального (CHAR_MAX, UCHAR_MAX, ULONG_MAX, LONG_MAX) и минимального (CHAR_MIN, LONG_MIN) значений переменной.
2. Выполнить указанные вычисления и распечатать полученные результаты.
signed int MAX à signed int MAX+1
unsigned int MAX à unsigned int MAX+1
signed int MIN à signed int MIN-1
unsigned int MIN à unsigned int MIN-1
Константы CHAR_MAX, UCHAR_MAX, INT_MIN, INT_MAX, UINT_MAX, ULONG_MAX, LONG_MAX, CHAR_MIN и LONG_MIN заданы в файле limits.h.
Теоретическая часть
Преобразование типов операндов
При выполнении вычислений в программах на языках высокого уровня в выражениях желательно использовать константы и переменные одного типа, однако это не всегда является возможным. Многие языки программирования высокого уровня не позволяют смешивать в выражениях переменные разных типов, но язык Си позволяет это делать.
Если в выражении в программе на языке Си используются операнды различных типов, то это выражение не считается ошибочным, а в нем производится автоматическое преобразование типов операндов:
- если в выражении используются операнды разных типов, то операнд с меньшей длиной приводится к операнду с большей длиной. Под длиной операнда в данном случае понимается количество байт, используемых для представления данных соответствующего типа.
Последовательность типов, упорядоченных по длине от большей к меньшей, выглядит следующим образом:
long double à double à float à long int à int à short int à char
- при выполнении операции присваивания значение выражения приводится с типу того операнда, который стоит слева от знака равенства (=), при этом значение выражения может "усекаться". Это происходит в случае, если тип переменной, которой должно быть присвоено значение, имеет меньшую длину, чем полученное значение выражения.
Рассмотрим для примера следующую простую программу:
void main(void)
{
char a;
int x = 100, y = 383;
a = x+y;
printf("x = %d, y=%d, x+y = %d\n",x,y,a);
}
В результате выполнения этой программы на экран будет выведена следующая строка:
x = 100, y=383, x+y = -29
Полученный результат объясняется тем, что значение выражения имеет тип int, а присваивается это значение переменной а, которая имеет тип char, ‑ в результате происходит усечение результата (см. рис. 2)
x+y=483 | |||||||||||||||||
¯ | ¯ | ¯ | ¯ | ¯ | ¯ | ¯ | ¯ | ||||||||||
a=-29 |
Рис. 2. Пример "усечения" данных
Схема усечения результата, показанная на рисунке, построена исходя из предположения, что данные типа int имеют длину 2 байта (sizeof(int)=2). Таким образом, в переменную а записываются младшие 8 бит результата – 11100011, а учитывая, что старший разряд – знаковый, значение а получается равным -29.
Рекомендации по выполнению лабораторной работы
При выполнении первой части лабораторной работы необходимо разработать программу, которая демонстрирует особенности автоматического преобразования операндов и возможную потерю значений из-за усечения результата при присваивании.
Для решения первой части задания необходимо в программе определить переменные указанных типов, присвоить одной из них (первой в цепочке) необходимое значение (максимальное для соответствующего типа), а потом присвоить значение этой переменной переменной следующего типа, потом значение новой переменной – переменной другого типа и т.д. После выполнения всех присваиваний для одной величины нужно распечатать значения всех переменных, а потом повторить описанные выше действия для минимального и произвольного значений. Таким образом, в результате выполнения первой части лабораторной работы должно получиться 12 строк результатов – по 4 значения в каждой строке.
При выполнении второго задания лабораторной работы необходимо присвоить переменной заданного типа указанное значение (максимальное или минимальное), распечатать его, затем увеличить (уменьшить) переменную на единицу и распечатать полученное значение.
Содержание отчета
Отчет по лабораторной работе должен содержать:
- задание лабораторной работы
- текст программы
- результаты работы программы
Лабораторная работа 3
Цель работы
Изучение операций языка Си.
Задание
1. Дано число a. Не используя никаких операций, кроме умножения и присваивания, составить программу, вычисляющую
№ | Задание |
a7за 4 операции умножения; | |
a15за 5 операций умножения; | |
a8за 3 операции умножения; | |
a21за 6 операций умножения; | |
a13за 5 операций умножения; | |
a28за 6 операций умножения. |
2. Используя тернарную операцию выражение1 ? выражение2 : выражение3и необходимые арифметические операции, составить программу, выполняющую следующие действия:
№ | Задание |
Для заданных целых x,y,zвычислить min(x,y,z) и max(x+y+z,xyz). | |
Для заданных целых x,yзаменить меньшее из них на (x+y)/2, а большее ‑ на x*y. | |
Если сумма заданных вещественных x,y,zменьше 1, то меньшее из них заменить полусуммой остальных, в противном случае меньшее из xи yзаменить полусуммой остальных. | |
для заданных целых x,yвычислить z = x-y, если x>y и z= y-x+1, если x<=y | |
для заданных целых x,y,zудвоить их, если x>y>zи заменить их абсолютными значениями в противоположном случае. | |
для заданных целых x,y,zвычислить max(x,y,z) и min2(x+y+z/2,xyz)+1. |
Теоретическая часть
Содержание отчета
Отчет по лабораторной работе должен содержать:
- задание лабораторной работы, соответствующее варианту
- текст программы
- результаты работы программы
Лабораторная работа 4
Цель работы
Организация циклов в языке Си.
Задание
Составить программу, выполняющую вычисление конечной суммы N элементов и сравнения полученного значения с контрольным значением.
№ | Вид суммы | Контрольное значение |
13+23+33+43+…+N3 | N2*(N+1) 2/4 | |
13+33+53+73+…+(2*N-1)3 | N2*(2N2-1) | |
2+4+6+8+…+N | N*(N+1) | |
12+22+32+42+…+N2 | N*(N+1)(2*N+1)/6 | |
12+32+52+72+…+(2*N-1)2 | N*(4N2-1)/3 | |
1+2+3+4+…+N | N*(N+1)/2 |
Теоретическая часть
Оператор цикла for
Данный оператор цикла имеет вид:
for([выражение1]; [выражение2]; [выражение3])
оператор;
Структурная схема алгоритма выполнения оператора цикла for приведена на рис. 3.
Рис. 3 Алгоритм выполнения оператора for
"Выражение1" выполняется один раз перед началом цикла. Оно НИ В КОЕМ случае не задает начальные условия цикла, поскольку не является обязательным элементом оператора for, но чаще всего используется именно для этих целей J.
"Выражение2" задает условие окончания цикла – когда "выражение2" становится ложным, цикл заканчивается.
"Выражение3" вычисляется в конце выполнения каждого тела цикла, и, наверное, поэтому используется для изменения переменной, используемой в качестве параметра цикла.
Оператор-тело цикла может быть пустым оператором, простым или составным.
Пустой оператор состоит только из символа точка с запятой (;). В операторах цикла пустой оператор используется тогда, когда тела цикла не требуется, но по синтаксису нужен хотя бы один оператор.
Если в операторе цикла for опустить все три выражения, то такой цикл будет бесконечным, поскольку пустое "выражение2" всегда считается истинным.
Оператор цикла while
Оператор цикла while имеет вид:
while(выражение)
оператор;
Структурная схема алгоритма выполнения оператора цикла while приведена на рис. 4.
Рис. 4 Алгоритм выполнения оператора while
Сначала вычисляется значение выражения, если оно ложно, то управление передается на следующий за циклом оператор. Если условие истинно, то выполняется оператор, составляющий тело цикла. Тело цикла может быть пустым, простым или составным оператором.
Оператор do while
Оператор имеет следующую форму записи:
do
оператор;
while(выражение);
Структурная схема алгоритма выполнения оператора цикла while приведена на рис. 5.
Рис. 5 Алгоритм выполнения оператора do-while
Оператор цикла do while используется в тех случаях, когда тело цикла должно выполниться хотя бы один раз. Вначале выполняется оператор, затем вычисляется значение выражения. Если выражение истинно, то цикл повторяется. Если выражение ложно, то управление передается следующему за циклом оператору.
Оператор break
Оператор break используется в операторах цикла и в операторе switch. Его выполнение приводит к выходу из указанных конструкций и переход к следующему оператору программы. Если оператор break находится внутри некоторой совокупности вложенных структур, его действие распространяется только на самую внутреннюю структуру, в которой он непосредственно содержится.
Оператор continue
Его действие заключается в прерывании выполнения тела цикла. После этого вызывается следующая итерация (шаг) этого цикла.
Содержание отчета
Отчет по лабораторной работе должен содержать:
- задание лабораторной работы, соответствующее варианту
- структурную схему алгоритма программы
- текст программы
- результаты работы программы
Лабораторная работа 5
Цель работы
Изучение условных операторов языка Си. Изучение массивов и основных приемов работы с массивами.
Задание
Составить программу, выполняющую действия согласно варианту задания
№ | Задание |
для заданного натурального числа nопределить количество цифр в записи числа, поменяв первую и последнюю цифру в записи числа, определить величину нового числа. | |
для заданных натуральных чисел n,m вычислить сумму m первых и m последних цифр в записи числа n и найти знакочередующуюся сумму цифр числа n. Если m меньше количество цифр в числе n, недостающие цифры принять равными 0. | |
для заданного натурального числа nпоменять все цифры в записи числа n; приписав в начале и конце числа единицы, определить величину нового числа. | |
найти все четверки простых чисел из первых 100 натуральных, принадлежащих одному десятку. | |
для заданного числа n (n<15) построить n строк треугольника Паскаля. | |
найти первые 120 натуральных чисел, сумма цифр которых равна 10 и вывести их на экран в виде матрицы 10Х12. |
Теоретическая часть
Массивы в языке Си
Массив - это группа элементов одинакового типа. Форма объявления массива на языке Си следующая:
тип_данных имя_массива[размер1][[размер2][размер3]…];
"тип_данных" – определяет тип данных, хранящихся в массиве.
"размер1","размер2"… – определяет количество элементов в массиве, т.е. его размерность.
ВНИМАНИЕ!!!Элементы массива в языке Си нумеруются с нуля!
Пример описания одномерного массива из 10 целых чисел и двумерного массива вещественных чисел из 10 строк и 10 столбцов.
int page[9];
float bigmas[9][9];
Обращение к элементам этих массивов происходит следующим образом: page[1] - обращение ко второму элементу массива page, bigmas[0][0] – обращение к первому элементу первой строки массива bigmass.
При задании массива возможна и его инициализация. В этом случае присваиваемые значения указываются в квадратных скобках. Пример инициализации одномерного массива целых чисел:
int s[2]={1,2,3};
Если размер массива не указан, то он определяется по числу начальных значений. Но рекомендуется всегда указывать размер объявляемого массива.
int day[]={31,28,31,30,31,30,31,31,30,31,30,31};
При инициализации многомерных массивов начальные значения для каждой новой строки рекомендуется заключать в фигурные скобки. Если отдельных фигурных скобок нет, то инициализация производится по мере возрастания индексов.
Примеры инициализации двумерного массива:
int s[1][2]={{4,5,6},{7,8,9}};
int f[1][2]={10,11,12,13,14};
char p[2][2]={{'n'},{'y'}};
Массив s инициализируется полностью заданными значениями. В массиве f из его шести значений (размер массива f - 2 строки и 3 столбца) инициализируется только первые 5 элементов (это элементы с индексами 0,0 0,1 0,2 1,0 1,1). В массиве p инициализируются только 2 элемента: p[0][0]='n' и p[1][0]='y'. Если задан размер массива, то значения, не заданные явно, принимают значения, равные 0.
Если не проинициализировать элементы массива перед началом работы с ним, то внешние и статические массивы инициализируются нулем, а автоматические и регистровые будут содержать "мусор", оставшийся в этом участке памяти.
Указатели и массивы
В языке Cи существует сильная взаимосвязь между указателями и массивами, причем эта связь настолько сильна, что указатели и массивы фактически надо рассматривать одновременно.
Любое действие, которое достигается индексированием массива, может быть выполнено и с помощью указателей. Вариант с указателями, в общем-то, будет работать быстрее, но он, по крайней мере для начинающих, несколько тяжеловат для понимания.
Описание int a[10] определяет массив а размером в 10 элементов, т.е. это блок из 10 последовательных объектов, именуемых a[0], a[1],..., a[9]. Запись a[i] обозначает элемент в i-й позиции от начал
Дата: 2016-10-02, просмотров: 221.