Основы программирования на языке Си
Основы программирования
на языке Си
Методические указания
к лабораторным работам
Министерство образования и науки Российской Федерации
Балтийский государственный технический университет «Военмех»
Институт систем управления и управляющих систем
Кафедра информационных систем и компьютерных технологий
Основы программирования
на языке Си
Методические указания
к лабораторным работам
Санкт-Петербург
2006
Составители: О.В. Арипова; О.А. Бузюкина
УДК 004.438 (075.8)
Основы программирования на языке Си: Методические указания к лабораторным работам / Сост.: О.В. Арипова, О.А. Бузюкина; Балт. гос. техн. ун-т. – СПб., 2006. – 58 с.
Методические указания содержат восемь лабораторных работ, предназначенных для выполнения на компьютере. Лабораторные работы расположены в порядке возрастающей сложности. В каждой работе представлено 26 вариантов индивидуальных заданий.
Предназначены для использования в лабораторных работах по курсам «Основы программирования» и «Информатика» для студентов, изучающих язык программирования Си.
Рецензент – канд. техн. наук, проф. Н.Н. Смирнова
Утверждено
редакционно-издательским
советом университета
ã Составители, 2005
ã БГТУ, 2005
Предисловие
При изучении курса «Основы программирования» студенты выполняют лабораторные работы, варианты которых приведены в данных методических указаниях.
Каждая лабораторная работа соответствует темам лекций и содержит в себе 26 вариантов индивидуальных заданий, включающих две-три задачи, предназначенные для решения студентами. Варианты, помеченные звездочкой, содержат задачи повышенной сложности, которые могут быть рекомендованы студентам, увлекающимся программированием, а также студентам, чей уровень подготовки выше, чем у основной части группы.
Варианты заданий выдаются студентам заранее с тем, чтобы они имели возможность подготовиться к выполнению лабораторной работы: просмотреть теоретический материал по теме работы и продумать алгоритмы решения задач. Каждую программу в работающем виде (после отладки и тестирования) студент должен показать преподавателю, после чего лабораторная работа подлежит защите. К защите работы студент обязан подготовить отчет, включающий в себя, как правило, титульный лист, формулировку задания, алгоритм решения задачи, листинг программы и результаты тестирования. Пример оформления отчета приведен в приложении.
Защита лабораторной работы состоит из двух частей: практической и теоретической. В практической части студент должен объяснить принципы работы одной из представленных им программ, в теоретической – ответить на вопросы по теме лабораторной работы. При подготовке к защите студенту рекомендуется ответить на контрольные вопросы.
Лабораторная работа № 1.
Структура программы, ввод/вывод
Цель работы – изучить структуру программы, научиться использовать переменные различных типов, освоить функции форматного ввода и вывода, арифметические операции и операции присваивания.
Постановка задачи
Набрать текст программы, представленный листингом. Проанализировать значения переменных после каждой операции присваивания. Проверить порядок выполнения операций в одном из выражений, содержащих несколько операций присваивания, разделив этот оператор-выражение на несколько операторов, выполняемых последовательно. В функциях ввода и вывода изменить спецификаторы типов, проанализировать полученные результаты.
Написать программу для вычисления следующих выражений:
a=5, c=5
a=a+b-2
c=c+1, d=c-a+d
a=a*c, c=c-1
a=a/10, c=c/2, b=b-1, d=d*(c+b+a)
Выражения, записанные в одной строке, записывать одним оператором-выражением. Переменные c и d объявить как целые, переменные a и b – как вещественные. Значения переменных b и d вводить с клавиатуры. После вычисления каждого выражения выводить на экран значения всех переменных.
Листинг
#include <stdio.h>
int main (void)
{
int a, b = 5, c;
float x, y = -.5, z;
printf("a=");
scanf("%d", &a);
x = c = a;
printf("a=%d, c=%d, x=%f\n",a,c,x);
a += b;
printf("a=%d\n", a);
x += b+a;
printf("x=%f\n", x);
b += a--;
printf("b=%d\n", b);
x -= ++c;
printf("x=%f\n",x);
c = a/b;
printf("c=%4d\n",c);
c = a%b;
printf("c=%d\n",c);
x = 5.3;
y += ((--x-1)/x++);
printf(" x = %f\ty = %.2f\n\n x = %.0f\ty = %.0f\n ", x - 1, y, x, y - 1);
z = a/2;
printf(" z = %f\n", z);
z = (float) a/2;
printf(" z = %f\n", z);
y = x/2;
printf(" y = %f\n", y);
y = (int)x/2;
printf(" y = %f\n", y);
z = a%2 - (x+b)/c + (x-y)/(a-1) + 1/4*a - y++ + ++b/3.;
printf(" a = %d b = %d c = %d x = %f y = %f z = %f\n", a, b, c, x, y, z);
return 0;
}
Контрольные вопросы
1. Какова структура программы на языке Си?
2. Зачем нужна директива #include?
3. Что такое main()?
4. Перечислите скалярные типы данных языка Си.
5. Что определяет тип данного?
6. Что такое void?
7. Что такое явное и неявное приведение типов? Как и когда оно используется?
8. Что такое константа? Найдите константы в набранных вами программах.
9. Что такое переменная?
10. Как проинициализировать переменную?