Данные методические указания включают в себя 12 лабораторных работ для изучения языка программирования высокого уровня Си. Эти работы помогут студентам освоить как базовые понятия программирования на алгоритмическом языке Си (интегрированная среда, программы разветвляющейся и циклической структуры, массивы), так и более сложные вопросы (рекурсии, функции, работа с файлами, работа с динамической памятью).
В каждой лабораторной работе указывается ее цель, изложены краткие теоретические сведения, приведены примеры программ, которые помогут в разработке самостоятельных программ согласно вариантам заданий. Ответы на приведенные в методических указаниях контрольные вопросы способствуют закреплению материала.
СОДЕРЖАНИЕ
Лабораторная работа №1. Работа в интегрированной среде BORLAND C
на примере программ линейной структуры……………..……………………….. 3
Лабораторная работа № 2 Программы разветвленной структуры……..…….…5
Лабораторная работа № 3Программы циклической структуры……….….… 9
Просмотр циклического списка
Лабораторная работа № 4Обработка статических массивов………..………..11
Лабораторная работа № 5Работа с символьными данными ………..………. 13
Лабораторная работа № 6Функции …………………………………………. 15
Лабораторная работа № 7Рекурсии..……..………………………….……..…. 20
Лабораторная работа № 8Структуры….…………………………….……..…. 21
Лабораторная работа № 9Программные средства для работы с файлами……24
Лабораторная работа № 10 Обработка бинарных файлов в прямом режиме ..27
Лабораторная работа № 11 Динамические массивы…………………………. 32
Лабораторная работа № 12 Динамические структуры данных………………. 36
Введение
Язык Си является универсальным языком программирования. Первоначально он появился в операционной системе UNIX, и развивался как основной язык систем, совместимых с ОС UNIX. Сам язык, однако, не связан с какой-либо одной операционной системой или машиной; и хотя его называют языком системного программирования, так как он удобен для написания операционных систем, он может использоваться для написания любых больших вычислительных программ, программ для обработки текстов и баз данных.
Лабораторная работа №1
Работа в интегрированной среде Borland С на примере программ линейной структуры
1. ЦЕЛЬ РАБОТЫ: приобретение практических навыков работы в интегрированной среде Borland C, изучение структуры программы на языке С.
ОСНОВНЫЕ СВЕДЕНИЯ
Чаще всего линейные алгоритмы используются для программирования вычислений по формулам. В этом случае удобно использовать набор стандартных функций Си, содержащихся в заголовочном файле math.h :
Sin (x) — sin x; cos (x) – cos x ; tan(x) — tg х ; log (x) — ln x; log10(x) – lg x; exp(x) — показательная функция e x ; sqrt (x)- корень квадратный от х; роw(x, y) – x в степени y; abs(x)- модуль x.; acos(x) – arccos x; asin(x) – arcsin x; atan(x)- arctg x; sinh(x)- sh x; cosh (x) – ch x; tanh(x)-th x.
Для тригонометрических функций аргумент х измеряется в радианах и имеет тип double, как и значения функций.
Программирование разветвляющихся алгоритмов
Пример программы линейной структуры:
Вычислить площадь и стороны прямоугольного треугольника, если известны гипотенуза c и угол x. Для вычислений воспользуемся формулами :
a=c×sin x; b=c×cos x; S=ab ;
Программа вычислений имеет вид:
//lab1_1 вычисление высот и площади треугольника
#include //заголовочный файл для организации ввода-вывода
#include //заголовочный файл математических функций
main() //главная функция
printf (“n Введите гипотенузу и угол треугольника ”);
scanf (“%f%f “,x); // ввод значений вещественного типа
printf (“n Результаты: a=%7.2f b=%7.2f S=%7.2f “,a, b, S);
Комментарий в программе не влияет на компиляцию программы, а служит для разъяснения действий основных блоков текста и программы в целом. Однострочный комментарий действует от двух символов // до конца строки. Многострочный комментарий заключается в пары символов /* и */.
Вторая строка программы #include является директивой компилятора для включения заголовочного файла stdio.h , в котором содержатся средства ввода-вывода (связи с внешними устройствами), отсутствующие в самом языке Си. Третья строка — #include является директивой компилятора для включения заголовочного файла math.h, обеспечивающего выполнение математических функций.
Программа на языке Си состоит из ряда функций, из которых функция main (главная) является обязательной и служит точкой входа в программу. В круглые скобки заключаются параметры функции, причем наличие круглых скобок обязательно, если даже список параметров пуст. В фигурные скобки заключаются составной оператор (несколько операторов). Для придания тексту программы наглядности открывающая и соответствующая ей закрывающая фигурные скобки печатаются на одном уровне, а заключенный между ними текст, сдвигается на 1-2 символа вправо, вложенный блок также сдвигается вправо и т.д. Образуется иерархия вложенных блоков, придающая программе на Си характерный вид.
В программе описаны переменные a, b, c, х, S вещественного типа (float). В отличие от других языков в Си учитывается регистр при определении имени переменной, т.е. s и S – разные переменные. Функции printf и scanf содержатся в заголовочном файле stdio.h и служат для вывода на экран и ввода с клавиатуры соответственно. Управляющие символы n в функции printf служат для перевода на новую строку.
Символ служит для выхода из функции main в Интегрированную Среду, 0 является признаком успешного окончания программы. Завершает текст программы закрывающая фигурная скобка, означающая конец функции main.
ВЫПОЛНЕНИЕ РАБОТЫ
3.1. Наберите и выполните приведенную выше программу вычисления высот треугольника по заданным сторонам.
3.2. Составьте и выполните программу линейной структуры согласно вариантам заданий.
Варианты заданий
Вычислить значение функции переменных при заданных значениях параметров:
1. x=4y 2 /(4z-2t 3 ) при t=1 ; z=3; y=sin t.
2 x=4y 3 -z/t при t=2; z=3; y=cos(t+z).
3. x=6t 2 -(z+1)/y 2 при y=2; z=4; t=sin(2+z).
4. x=(8z 2 +1)/(y+t 2 ) при z=1; t=2; y=t+z.
5 x=8z / (e t +2)-y 2 при t=3; z=ctg t +2; y=4.
6. x=8z/(e t +2)-y 2 при t=1; z=t+2; y=4.
7. x=2y+3 sh t- z при y=2; t=5 / (1+y 2 ); z=4
8. x=3 y 2 / (4 tg z-2t 2 ) при t=0.5; z=6; y=t+2 ctg z.
9. x=4y 2 /( 4y e z — 2t 3 ) при t=1 ; z=3; y=sin t.
10. x=4 ln y 3 -z / t при t=2; z=3; y=cos(t+z).
11. x=6 t 2 — (ctg z+1)/ y 2 при y=2; z=4; t=sin(2+z).
12. x=(8z 2 +1)/( y e t +t 2 ) при z=1; t=2; y=tg t+z.
КОНТРОЛЬНЫЕ ВОПРОСЫ
4.1. Что такое алгоритм линейной структуры, программа линейной структуры?
4.2. Для чего используются заголовочные файлы?
4.3. Структура программы на языке Си.
Лабораторная работа №2
Программы разветвлённой структуры
1. ЦЕЛЬ РАБОТЫ: приобретение практических навыков в составлении алгоритмов и программ разветвленной структуры.
ОСНОВНЫЕ СВЕДЕНИЯ
Алгоритм разветвленной структуры — это алгоритм, в котором вычислительный процесс осуществляется по одной из ветвей. Если количество ветвей две – то используется условный блок, если больше – то множественный выбор. В программах используют соответственно условный оператор IF или оператор SWITCH для реализации разветвленного алгоритма.
Условный оператор IF
Условный оператор в языке Си имеет формат:
(полная форма) или
if (условие) оператор1; (сокращенная форма).
Если оператор1 и оператор2 состоят из одного оператора, то в фигурные скобки они не заключаются. Если оператор1 и/или оператор2 являются составным оператором (несколько операторов), то он заключается в фигурные скобки. Условие всегда заключается в круглые скобки.
В качестве примера приведем программу вычисления наибольшего из значений функции y1=x²+1, y2=7-x² , y3=x+1 для любого х.
printf(«Введите xn»); scanf(“%f “,
y1=x*x+1; y2=7-x*x; y3=x+1;
printf (“x=%8.2f y1=%8.2f y2=%8.2f y3=%8.2f max=%8.2fn”,x,y1,y2,y3,max);
Дата добавления: 2019-01-14 ; просмотров: 302 ; Мы поможем в написании вашей работы!
Поделиться с друзьями:
Источник: studopedia.net
Программы разветвленной структуры.
Как мы уже говорили, любой алгоритм можно составить из нескольких базовых структур. Простейшей из них является линейная (следование). В ней команды выполняются однократно в той последовательности, как они записаны. Однако далеко не всегда для решения задачи последовательность действий одна и та же при любых исходных данных. Если на каком-то этапе исполнитель должен выбирать один вариант из нескольких, в алгоритме используют ветвление.
В алгоритме разветвленной структуры (ветвлении) в зависимости от истинности или ложности некоторого условия выбирается одна из двух серий команд.
Пример программы разветвленной структуры
Блок-схема | Программа на языке Pascal |
program choice; var a, b, c, d: real; begin readln(a, b, c); d:= b * b — 4 * a * c; if d < 0 then writeln(‘корней нет’) else writeln(‘корни есть’); end. |
Обратите внимание, что перед словами then и else точка с запятой не ставится — они считаются частями одного условного оператора if. then. else.
В том случае, если при ложности условия никаких действий не выполняется, на блок-схеме на стрелке «НЕТ» не чертят никаких блоков, а в записи условного оператора пропускают «else».
Если серия состоит более чем из одной команды, ее необходимо заключить в операторные скобки begin. end.
if x > 0
Then begin
End
else z:= z + x;
Если в программе есть ветвление, нужно.
1. Определить, какие существуют варианты действий и сколько их всего. Количество условных операторов будет на один меньше, чем число вариантов.
2. Выяснить, при каких условиях должен выполняться каждый из вариантов.
3. Если вариантов больше двух, выбрать последовательность проверки условий. При необходимости построить блок-схему.
4. Записать алгоритм на языке программирования.
5. Подобрать данные для тестирования программы (предусмотреть наборы данных, позволяющие проверить каждый вариант действий).
Операции сравнения
При записи условий в языке Pascal можно использовать следующие операции сравнения:
Операция | Обозначение | Пример записи |
Равно? | = | d = 0 |
Больше? | > | x + y > 100 |
Меньше? | z < 5 * x | |
Больше либо равно? | >= | sin(a) >= 0.5 |
Меньше либо равно? | v | |
Не равно? | <> | y <> 0 |
Результатом операции сравнения всегда будет логическое значение — либо false (ложь), либо true (истина).
Логические операции
Нередко условие, требующее проверки, нельзя выразить с помощью единственного сравнения. Тогда используют составные условия, образующиеся с помощью логических операций. В языке программирования Pascal их три (в некоторых реализациях — четыре):
Операция | Обозначение | Результат | Пример записи |
«И» (конъюнкция) | and | «истина», если истинны оба операнда (и первый, и второй) | (x > -2) and (x < 2) |
«Или» (дизъюнкция) | or | «истина», если истинен хотя бы один операнд (или первый, или второй) | (x < -2) or (x >2) |
«Не» (инверсия) | not | «истина», если операнд ложен | not (a > b) |
Источник: studopedia.ru
2.37 2. Программы разветвляющейся структуры
2. Программы разветвляющейся структуры Средства разработки программ разветвляющейся структуры
Программой разветвляющейся структуры называют такую программу, в которой, в зависимости от исходных данных, возможны различные последовательности выполнения операторов, причем на любой из них каждый оператор выполняется только один раз.
Для реализации программ или фрагментов программ с разветвляющейся структурой используются сложные операторы 1 : условные операторы if и операторы выбора case. В этом разделе ограничимся рассмотрением полной формы условного оператора — оператора if then else и его сокращенной формы – оператора if then.
При использовании условных операторов ветвление алгоритма обусловлено проверками логических выражений (в языке Object Pascal их называют булевскими выражениями), результатом вычисления которых могут быть лишь два значения: «истина» и «ложь». В условных операторах могут использоваться как простейшие булевские выражения, основанные на сравнении выражений других типов, так и сложные, использующие логические операции.
Условные операторы
Оператор if then else имеет следующую синтаксическую диаграмму
где БВ – булевское выражение (см. ниже в разделе Булевский тип), значением которого может быть либо «истина», либо «ложь». Оп1 и Оп2 – операторы, каждый из которых может быть пустым оператором. При выполнении оператора if then else вначале вычисляется выражение БВ и если результат – «истина», то выполняется оператор Оп1, иначе, то есть если результат имеет значение «ложь», – оператор Оп2. В схемах алгоритмов оператору if then else соответствует конструкция
Оператор if then имеет синтаксическую диаграмму
г де БВ – булевское выражение, Оп1 – оператор. При выполнении оператора if then вначале вычисляется выражение БВ и если результат – «истина», то выполняется оператор Оп1, иначе, то есть если результат – «ложь», управление передается следующему по порядку оператору программы. В схемах алгоритмов оператору if then соответствует конструкция
Простейшими булевскими выражениями являются отношения. Знаки отношений записываются следующим образом: >, , = – так же, как в математике, знаки записываются парами символов , >=, <> соответственно. Более сложные булевские выражения рассмотрены в следующем разделе.
Пример. Требуется записать условный оператор, вычисляющий новое значение Y по заданным значениям A, B, X, Y по формуле
то есть в соответствии с алгоритмом
Вот этот оператор:
if A > B then if B >= 3 then Y:=2 else else Y:=X;
Этому оператору if then else подчинен оператор присваивания Y:=X и еще один оператор if then else, который, в свою очередь, содержит пустой оператор (после первого else) и оператор присваивания Y:=2. Необходимость использования else во вложенном условном операторе вытекает из следующего правила: else относится к ближайшему предшествующему if, у которого нет части else. Можно было бы не использовать else во вложенном условном операторе, но тогда пришлось бы заключить его в операторные скобки, то есть заменить его оператором
begin if B >= 3 then Y:=2 end.
Пример. Для функции предыдущего примера можно составить другой алгоритм:
Тогда соответствующим ему оператором if then else будет
и вложенный в него условный оператор естественно использовать в сокращенной форме.
Источник: studfile.net