Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Лабораторная работа № 1.
Тема: Простейшие программы на языке Си.
Цель работы: Получение навыков составления и отладки простейших
программ на языке Си.
1.Краткие теоретические сведения. Рассмотрим простейшую программу на языке Си.
# include <stdio.h>
/* пример 1 */
main ()
{
int year, month;
year=2002;
printf (“Сейчас % d год \n”,year);
} Первая строка :
#include<stdio.h> сообщает компилятору о необходимости подключить файл stdio.h. Этот файл содержит информацию, необходимую для правильного выполнения функций библиотеки стандартного ввода/вывода языка Си. Язык Си предусматривает использование некоторого числа файлов такого типа, которые называются заголовочными файлами. В файле stdio.h находится информация о стандартной функции вывода printf (), которую мы использовали.
Вторая строка:
/* пример 1 */ является комментарием.
Строка
Main() определяет имя функции. Любая программа на языке Си состоит из одной или нескольких функций. Выполнение программы начинается с вызова функции main(). Поэтому каждая программа на языке Си должна содержать функцию main().
Следующая строка:
{ содержит открывающуюся фигурную скобку, обозначающую начало тела функции main (). Фигурные скобки в языке Си всегда используются парами (открывающаяся и закрывающаяся). Закрывающаяся скобка завершает программу.
Строка
int year, month; объявляет переменные year, month, и сообщает компилятору, что эти переменные целые. В языке Си все переменные должны быть объявлены прежде, чем они будут использованы.
Строка
year=2002; является оператором присваивания. В этой строке переменной с именем year присваивается значение 2002. В языке Си используется просто знак равенства в операторе присваивания. Все операторы в языке Си заканчиваются символом “точка с запятой”.
Строка
printf(“Сейчас%dгод\n”,year); является вызовом стандартной функции printf (), которая выводит на экран некоторую информацию. Эта строка состоит из двух частей: имени функции printf () и двух ее аргументов “Сейчас % d год \n” и year, разделенных запятой. В языке Си нет операторов ввода/вывода. Но библиотеки языка Си содержат много полезных и удобных функций ввода/вывода. Функция printf () является универсальной функцией форматного вывода.
Первый аргумент функции printf ()- это строка в кавычках “Сейчас % d год \n”, которую называют управляющей строкой. Она может содержать любые символы или спецификации формата, начинающиеся с символа “%”.
Обычные символы просто отображаются на экран в том порядке, в котором они следуют. Спецификации формата, начинающиеся с символа “%”, указывают формат, в котором будет выводиться значение переменной year, являющейся вторым аргументом функции printf (). Спецификация %d показывает, что будет выводиться целое число в десятичной записи. Комбинация символов “\n” сообщает функции printf () о необходимости перехода на новую строку. Этот символ называется символом новой строки.
Последняя строка программы:
} содержит закрывающуюся фигурную скобку. Она обозначает конец функции main ().
Если при наборе программы вы не допустили опечаток, то вы получите результат.
Попробуем намеренно ввести ошибку в нашу программу. Например, на поставим одну из точек с запятой. Попробуем еще раз выполнить программу: нажмем комбинацию Ctrl-F9. При компиляции программы будет обнаружена ошибка, которая будет подсвечена в окне сообщений (message window). Причем в окне сообщений ошибка будет подсвечена более яркой строкой, а в окне редактирования курсор устанавливается в том месте программы, где компилятор обнаружил ошибку. На самом деле курсор будет находиться в следующей строке, что бывает всегда, когда компилятор не находит точки с запятой.
Нажатием клавиши Enter можно активизировать окно редактирования и исправить выделенную курсором ошибку.
Наличие ошибок (errors) не позволяет выполнить программу. Необходимо исправить найденные ошибки и снова компилировать программу. Однако, даже если в программе нет синтаксических ошибок, некоторые ситуации могут вызвать подозрение у компилятора. В этих ситуациях печатается предупреждение (warning). Пользователь должен проанализировать указанную ситуацию и принять соответствующее решение.
Например, была объявлена переменная month, но она не была использована в программе. Предупреждение об этом и сделает компилятор. Наличие предупреждений не является препятствием для выполнения программы.
Рассмотрим второй пример, в котором будет реализовываться ввод данных с клавиатуры. Для этого будет использоваться библиотечная функция scanf (), которая позволяет пользователю вводить информацию с клавиатуры во время выполнения программы.
/*Пример 2*/
# include <stdio.h>
/* Вычисление длины окружности */
main ()
{
int radius;
float length;
printf (“ Введите значение радиуса: “);
scanf (“%d ”, & radius);
lenth= 3.1415*2*radius;
printf (“Радиус- %d \n Длина- %f \n”, radius, lenth);
} Здесь объявлены две переменные двух разных типов: radius- типа целое (int); length- типа плавающей запятой (float), содержащую дробную часть. Используется функция scanf () для ввода с клавиатуры значения радиуса окружности. Первый аргумент функции scanf () “%d ” указывает, что будет вводиться целое десятичное число. Второй аргумент- имя переменной, которой будет присвоено введенное значение. Символ & перед именем переменной radius необходим для правильной работы функции scanf (). Более подробно об использовании символа & перед именем переменной будет обсуждаться в дальнейшем.
Продолжим общий обзор языка Си. Рассмотрим условный оператор if. Простейшая форма оператора if имеет вид:
If (условие) оператор; Условие это логическое выражение, которое принимает значение либо “истинно”, либо ”ложно”. В языке Си “истинно” это ненулевая величина, ”ложно”- нуль.
Оператор
If (0<1) printf (“0 меньше 1”); выводит на экран сообщение: “0 меньше 1”.
Оператор
If (0>1) printf (“0 больше 1”); не выводит на экран никакого сообщения, т.к. значение выражения 0>1 ложно и оператор, следующий за условием, не выполняется. Таким образом, оператор, следующий за условием, выполняется лишь тогда, когда выражение, стоящее в условии, принимает значение “истина”.
Заметим, что отношение “равно” в языке Си записывается двумя знаками равенства ”= =”.
Оператор
if ( 0= =1 ) printf (“0 равно 1”); не выводит на экран никакого сообщения, т.к. значение выражения 0= =1 ложно.
Полная форма оператора if:
if (условие) оператор1; else оператор2; Если значение условия “истинно”, то выполняется оператор1. Если же условие принимает значение ”ложно”, то выполняется оператор2.
/*Пример 3*/
main ()
/* Нахождение максимального значения из трех целых переменных a,b,c */
{
int a,b,c,m;
printf (“ Введите исходные данные: “);
scanf (“%d %d %d ”, &a, &b, &c);
if (a>b) m=a; else m=b;
if (c>m) m=c;
printf (“max= %d”, m);
} В этом примере продемонстрировано использование обеих форм оператора if.
2.Порядок выполнения лабораторной работы.
А) Получить задания лабораторной работы.
Б) Составить программы на языке Си для выполнения заданий.
В) Произвести отладку программ.
Г) Протестировать отлаженные программы.
Д) Продемонстрировать преподавателю разработанные программы.
Е) Подготовить отчет по лабораторной работе.
3.Требования к оформлению отчета.
Отчет должен содержать:
А) Титульный лист.
Б) Номер, тему и цели лабораторной работы.
В) Условие задания.
Г) Алгоритм решения задания на псевдокоде и в виде блок- схемы.
Д) Текст программы на языке Си.
Е) Результаты тестирования программы.
4.Варианты заданий
Тема: Линейные и разветвляющиеся алгоритмы. 1. а) Вычислить расстояние между двумя точками с координатами (x1, y1) и (x2, y2)
б) Решить квадратное уравнение ax+bx+c=0 с действительными
коэффициентами для произвольных a,b,c. 2. а) Найти высоты треугольника, заданного своими сторонами.
б) Заданы величины a,b,c. Найти максимальное значение. 3. а) Дана длина ребра куба. Найти объем куба и площадь его поверхности.
б) Задана точка с координатами (x, y). Определить, на какой оси или в каком
квадранте она находится. 4. а) Даны три действительных числа. Найти среднее арифметическое и среднее
геометрическое их модулей.
б) Решить линейное уравнение ax+b=0 для произвольных a и b. 5. а) Смешано 1 литров воды температуры t1 c 2 литрами воды температуры t2.
Найти объем и температуру образовавшейся смеси.
б) Заданы величины a, b, c. Найти минимальное значение. 6. а) Три сопротивления R1, R2, R3 соединены параллельно. Найти сопротивление
соединения.
б) Заданы величины a, b, c. Определить, являются ли они упорядоченными, т.е.
выполняется ли одно из условий:
abc или abc . 7. а) Определить время падения камня на поверхность земли с высоты h.
б) Определить количество действительных корней квадратного уравнения
ax+bx+c=0 с произвольными коэффициентами a, b, c. 8. а) Определить силу притяжения F между телами массы m1 и m2, находящимися
на расстоянии r друг от друга.
б) Задана точка (x0, y0) и прямая y=ax+b. Определить, где находится точка
относительно прямой: на прямой, выше или ниже. 9. а) Найти площадь кольца, внутренний радиус которого r, а внешний R.
б) Заданы величины a, b, c, d. Определить, сколько среди них положительных,
равных нулю и отрицательных. 10. а) Найти сумму членов арифметической прогрессии a, a+d, a+2d,…,a+(n-2)d,
a+(n-1)d по заданным значениям a, d, n.
б) Заданы величины a, b, c. Упорядочить их по возрастанию (abc). 11. а) Задана точка на плоскости в полярной системе координат. Найти значения
координат этой точки в декартовой системе координат.
б) Заданы две точки на плоскости. Определить, лежит ли хотя бы одна точка в
начале системы координат. 12. а) Заданы четыре материальные точки: (m1, x1, y1), (m2, x2, y2), (m3, x3, y3),
(m4, x4, y4). Найти координаты центра тяжести.
б) Заданы две точки на плоскости. Определить, лежит ли хотя бы одна точка
на оси координат. 13. а) Треугольник задан координатами своих вершин на плоскости. Найти
площадь треугольника.
б) Заданы величины a, b, c. Определить, сколько среди них равных. 14. а) Треугольник задан длинами своих сторон: a, b, c. Найти углы треугольника.
б) Заданы три точки координатами: (x1, y1), (x2, y2), (x3, y3). Определить, лежат
ли они на одной прямой. 15. а) Определить время, через которое встретятся два тела, равноускоренно
движущиеся навстречу друг другу, если известны их начальные скорости,
ускорения и начальное расстояние между ними.
б) Заданы две точки (x1, y1) и (x2, y2) и прямая ax+by+c=0. Определить, лежат
ли обе точки относительно прямой в одной полуплоскости. 16. а) Треугольник задан своими сторонами: a, b, c. Требуется найти медианы
треугольника ma, mb, mc.
б) Заданы две прямые ax+by+c=0 и px+qy+r=0. Определить, как
расположены прямые друг относительно друга: пересекаются, совпадают
или параллельны. 17. а) Треугольник задан своими сторонами: a, b, c. Требуется найти медианы
треугольника la, lb, lc.
б) Заданы прямая ax+by+c=0 и отрезок своими концами (x1, y1) и (x2, y2).
Определить, как расположены они друг относительно друга: отрезок
пересекает прямую, отрезок лежит на прямой, отрезок лежит полностью по
одну сторону от прямой. 18. а) Треугольник задан своими сторонами: a, b, c. Требуется найти площадь
описанного круга.
б) Заданы треугольник своими вершинами (x1, y1), (x2, y2), (x3, y3) и круг
своими радиусом r и центром (x0, y0). Определить, как расположены они
друг относительно друга: треугольник внутри круга, круг внутри
треугольника, треугольник и круг вне друг друга, треугольник и круг
пересекаются. 19. а) Задан круг своим радиусом r. Найти площадь равностороннего
треугольника, в который вписан этот круг.
б) Заданы два круга своими радиусами r1, r2 и центрами (x1, y1), (x2, y2).
Определить, как расположены они друг относительно друга: один круг
внутри другого, круги вне друг друга, круги пересекаются. 20. а) Треугольник задан своими сторонами: a, b, c. Требуется найти площадь
вписанного круга.
б) Треугольник задан своими вершинами (x1, y1), (x2, y2), (x3, y3). Определить,
какой он: прямоугольный, остроугольный или тупоугольный. 21. а) Треугольник задан на плоскости координатами своих вершин. Найти его
периметр.
б) Задана точка в пространстве в декартовой системе координат. Найти
значения координат этой точки в цилиндрической системе координат. 22. а) Треугольник задан на плоскости координатами своих вершин. Найти
координаты центра этой фигуры.
б) Задана точка в пространстве в декартовой системе координат. Найти
значения координат этой точки в стереометрической системе координат. 23. а) Задан четырехугольник на плоскости координатами своих вершин. Найти
координаты центра этой фигуры.
б) Задана точка в пространстве в декартовой системе координат. Найти
значения координат этой точки в полярной системе координат. 24. а) Задан четырехугольник на плоскости координатами своих вершин в
порядке обхода. Найти его периметр.
б) Заданы две точки на плоскости. Определить, лежат ли они одновременно
на осях координат. 25. а) Задан четырехугольник на плоскости координатами своих вершин в
порядке обхода. Найти его площадь.
б) Заданы две точки на плоскости. Определить, лежат ли они одновременно
в одном и том же квадранте.
Контрольные вопросы:
PAGE 7