Основы программирования на языке Си



 


Основы программирования
на языке Си

Методические указания
к лабораторным работам


Министерство образования и науки Российской Федерации
Балтийский государственный технический университет «Военмех»
Институт систем управления и управляющих систем
Кафедра информационных систем и компьютерных технологий

Основы программирования
на языке Си

Методические указания
к лабораторным работам

Санкт-Петербург
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. Как проинициализировать переменную?