- •Министерство образования Республики Беларусь
- •Часть 1.Методически указания по курсу “Вычислительная техника и программирование
- •Содержание
- •Лабораторная работа №1 Линейный вычислительный процесс Цель работы
- •Операторы вывода информации
- •1. Формат, указывающий компилятору вид выводимой информации, признаком формата является символ %.
- •2. Управляющие символы:
- •Стандартные математические функции
- •Варианты индивидуальных заданий
- •Варианты индивидуальных заданий
- •Циклы типа while и do – while
- •Вложенные циклы
- •Варианты индивидуальных заданий
- •Контрольные вопросы
- •Лабораторная работа №4 Массивы в языке с
- •Многомерные массивы
- •Контрольные вопросы
- •Лабораторная работа №5 Функции пользователя
- •Область действия переменных
- •Контрольные вопросы
- •Лабораторная работа №6 строки и структуры
- •Краткие теоретические сведения
- •Контрольные вопросы
- •Лабораторная работа №7 Файлы в языке с
- •Краткие теоретические сведения
- •Посимвольный ввод-вывод
- •Построчный ввод-вывод
- •Блоковый ввод-вывод
- •Контрольные вопросы
- •Лабораторная работа №8 Графический режим работы в языке с
- •Kраткие теоретические сведения
- •Функции для подготовки графической системы
- •Основные функции для получения изображения
- •Варианты индивидуальных заданий
- •Контрольные вопросы
- •Задание опций интегрированной среды
- •Набор текста программы
- •Компиляция, редактирование связей, запуск программы на выполнение
- •Многофайловая компиляция
- •Отладка программы
- •Использование глобальных переменных, объявленных вне файла
- •Литература
- •Учебное издание
Вложенные циклы
Один цикл может находиться внутри другого цикла. В качестве примера – печать таблицы умножения целых чисел (фрагмент):
int i,j;
for(i=1;i<10’i++)
{
for(j=1;j<4;j++)
printf(“\n %d*%d=%2d”, i, j, i*j);
printf(“\n”);
}
Пример цикла for
Вычислить
;
на печать программа должна выводить
промежуточные и окончательный результаты.
Текст программы может иметь вид:
#include <stdio.h>
#include <conio.h>
#include <math.h>
#define n 10 // задали число слагаемых
void main(void)
{
float s; int k;
clrscr( ); // ОЧИСТКА ЭКРАНА
puts("\n ЛАБОРАТОРНАЯ РАБОТА N3 - ОПЕРАТОРЫ ЦИКЛА ");
puts("\n ============================================ \n");
s=0;
for (k=1; k<=n; k++)
{
s=s+1.0/k;
printf(" \t\n k=%d s=%f 1.0/k=%f", k, s, 1.0/k);
}
puts("\n");
printf("\a\n ОТВЕТ: s=%f, Press any key...",s);
getch( ); /* ЗАДЕРЖКА ДО НАЖАТИЯ КЛАВИШИ ENTER */
}
Варианты индивидуальных заданий
Составить программу вычисления таблицы значений суммы S(x) и функции в произвольном диапазоне [a,b] изменения аргумента x с произвольным шагом h. Значения a,b,h и n вводятся с клавиатуры. Функция Y(x) разложена в ряд S(x). Значения S и Y для данного аргумента x должны совпадать в целой части и в первых двух-четырех позициях после десятичной точки.
1.
![]()
2.
![]()
3.
![]()
4.
![]()
5.
![]()

7.
![]()
8.

9.
![]()
10.
![]()
11.
![]()
12.

13.
![]()
14.
![]()
15.
![]()
16.
![]()
17.![]()
18.
![]()
19.
![]()
![]()
![]()
![]()
![]()
![]()
25![]()
26![]()
27
28![]()
29![]()
30![]()
Примечания. Sh(x)=(Exp(x)-Exp(-x))/2 – гиперболический синус.
Ch(x)=(Exp(x)+Exp(-x))/2 – гиперболический косинус.
Контрольные вопросы
Какой процесс называется ”циклическим” ?
Чем отличаются операторы while и do……while?
Поясните понятие “Вложенный цикл”.
Лабораторная работа №4 Массивы в языке с
Цель работы
Изучить работу с массивами.
Краткие теоретические сведения
Массив – упорядоченная совокупность конечного числа данных одного типа. Массив – сложный тип данных. Каждый элемент массива определяется именем массива и своим индексом – целое число, по которому к элементу массива производится доступ. Рассмотрим одномерные массивы. Индексы у таких массивов начинаются с 0. В программе одномерный массив объявляется следующим образом:
Тип - <имя массива>[размер].
Тип – базовый тип элементов (целый вещественный, символьный).
Размер – количество элементов одномерного массива.
Размер массива в языке С может задаваться константой или константным выражением. Нельзя задавать массив переменного размера. Для этого существует отдельный механизм – динамическое выделение памяти.
Примеробъявления массива целого типа:
int a[5]
В массиве а первый элемент а[0], второй – а[1] и т.д., шестой - а[5]. В языке С не проверяется выход индекса за пределы массива. Корректность использования индексов элементов массива должен контролировать программист.
Работа с массивами тесно связана с применением указателей.
Указатель – это переменная, которая содержит адрес некоторого объекта в памяти компьютера.
Указатель объявляется следующим образом:
тип *<имя переменной>;
Например: int *a, b, c, *d;
float *f;
char *w;
Здесь объявлены указатели a, d, f, w и переменные b,c типа int.
С указателями связаны две унарные операции & и *.
Операция &означает «взять адрес» операнда.Операция *имеет смысл: «значение, расположенное по указанному адресу».
В языке С принято, что имя массива – это адрес памяти, начиная с которого расположен массив, т.е. адрес первого элемента массива.
Пусть объявлены массив из 5 вещественных элементов и указатель на вещественные переменные: float c[5], *c1;
Идентификатор с является указателем на начало массива (т.е. на первый элемент массива). Тогда операции присваивания с1=с; и с1=&с[0]; приведут к одному и тому же результату: указатель с1 будет установлен на начало массива с в памяти.
Для получения 4-го элемента массива с можно написать с[3] или *(с1+3). Результат будет один и тот же. Преимущество второго варианта: арифметические операции над указателями выполняются быстрее, если программа работает с подряд идущими элементами массива.Если выбор случайный, то быстрее и нагляднее работать с индексами.Отметим, что указатели, как и переменные любого другого типа, могут объединяться в массивы.
Объявление массива указателей на целые числа имеет вид
int *a[10], y;
Теперь каждому из элементов массива можно присвоить адрес целочисленной переменной y, например: a[1]=&y;
Чтобы теперь найти значение переменной y через данный элемент массива а, необходимо записать *a[1];
Примерработы с одномерным массивом
В массиве а целого типа найти индекс и значение максимального элемента и переставить его с первым элементом. Программа также должна подсчитать количество положительных и отрицательных элементов данного мaссива.
Текст программы может быть следующим:
#include <stdio.h>
#include <ctype.h>
#include <conio.h>
void main(void)
{
int a[4]={-1,-20,4,100};
// обьявление массива a и присвоение значений
// индексы массива принимают значения от 0 до 3
int i,index,zam,max,kp,ko;
clrscr();
puts(" ... ИСХОДНЫЙ МАССИВ ......\n");
for (i=0; i<=3; i++)
printf("%d ",a[i]);
/* вывод элементов исходного массива */
puts("\n");
max=a[0]; kp=0; ko=0;
for (i=1; i<=3; i++)
{
if (a[i]>max)
{
max=a[i]; index=i;
}
}
zam=a[0]; a[0]=max; a[index]=zam;
for (i=0;i<=3;i++)
{
if (a[i]<0) ko=ko+1;
else kp=kp+1;
}
puts(" ... РЕЗУЛЬТАТЫ РАБОТЫ ПРОГРАММЫ ......\n");
for (i=0; i<=3; i++)
printf("%d ",a[i]);/* вывод элементов массива */
puts("\n");
printf("\n положительных элементов массива: %d \n",kp);
printf(" \n отрицательных элементов массива: %d,\
\n\n Press any key...",ko);
getch();
}
