- •Лабораторный практикум
- •Основы программирования на алгоритмическом языке с
- •Лабораторная работа №1 Линейные и разветвляющиеся вычислительные процессы
- •Краткие теоретические сведения
- •Алфавит языка с
- •Классификация данных
- •Декларирование объектов
- •Структура программы
- •Функции вывода информации
- •Функции ввода информации
- •Стандартные математические функции
- •Операция присваивания
- •Операторы перехода
- •If (условие ) оператор1;
- •Оператор выбора switch
- •Пример линейного алгоритма
- •Пример использования оператора if
- •Варианты индивидуальных заданий
- •Оператор цикла for
- •For (выражение_1; выражение_2; выражение_3 ) оператор;
- •Циклы типа while и do–while
- •Вложенные циклы
- •Контрольные вопросы
- •Лабораторная работа № 3 Программирование циклических вычислительных процессов с использованием одномерных массивов и строк
- •Краткие теретические сведения
- •Строки, как одномерные массивы символов
- •Примеры использования стандартных функций работы со строками
- •Варианты индивидуальных заданий
- •Указатели и операции над адресами
- •Операции над указателями (адресная арифметика)
- •Указатели на указатели
- •Таким образом, указатели на указатели – это имена многомерных массивов.
- •Массивы указателей
- •Динамическое размещенея данных
- •Контрольные вопросы
- •Лабораторная работа №5 Функции пользователя
- •Краткие теоретические сведения
- •Область действия переменных
- •Пример работы с функциями Ввести массив NxN (не больше 50) целых чисел и в функции посчитать сумму его положительных значений.
- •Пример на использование структур
- •Контрольные вопросы
- •Лабораторная работа №7 Файлы в языке с.
- •Контрольные вопросы
- •Лабораторная работа №8 Графический режим работы в языке с.
- •Функции для подготовки графической системы
- •Основные функции для получения изображения
- •Контрольные вопросы
- •Команды работы с блоками:
- •Задание опций интегрированной среды.
- •Набор текста программы.
- •Компиляция, редактирование связей, запуск программы на выполнение.
- •Многофайловая компиляция
- •Отладка программы.
- •Использование глобальных переменных, объявленных вне файла.
- •Литература
Циклы типа while и do–while
Основная форма циклического оператора while:
while (условие)
оператор;
где оператор – это простой, составной или пустой оператор.
Цикл выполняется до тех пор, пока условие принимает значение «истина», т.е. выражение в скобках возвращает ненулевой результат. Это цикл с предусловием – сначала проверяется условие, затем выполняется оператор. Поэтому цикл while не выполнится ни разу, если изначально результат вычисления условия будет равен 0.
Основная форма оператора do – while:
do
оператор;
while (условие);
где оператор – это простой, составной или пустой оператор.
Оператор do–while – оператор цикла с постусловием, т.е. сначала выполняется оператор, а затем проверяется условие на истинность. Так как в цикле do–while условие проверяется в конце цикла, то цикл будет выполнен хотя бы один раз.
В циклах типа while и do–while допустимы те же способы досрочного выхода из цикла и досрочное завершение текущего шага цикла, как и в операторе for, но в последнем случае в отличие от цикла for управление передается на проверку условия. Для предотвращения бесконечного цикла, внутри циклов while и do–while нужно предусмотреть изменение переменных, входящих в условие.
Например: int i;
for (i=1;i<=300;i++) /* печать целых чисел, кратных 5 */
{
if (i%5!=0) continue;
printf(“%5d”,i);
}
Вложенные циклы
В случае вложенных циклов один цикл находится внутри другого, например:
for(i=nn;i<nk;i++)
for(j=mn;j<mk;j++)
оператор;
где оператор – это простой, составной или пустой оператор. Внутренний цикл будет выполняться для каждого значения параметра i, удовлетворяющего условию внешнего цикла.
Пример: 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”);
}
Пример 1:
Вычислить . На печать программа должна выводить промежуточные и окончательный результаты.
Текст программы может иметь вид:
#include <stdio.h>
#include <conio.h>
void main(void)
{
float s;
int k,N;
clrscr( );
puts(“Введите N”);
scanf(“%d”,&N);
for (s=0, k=1; k<=N; k++)
{
s+=1.0/k;
printf(" \n k=%d s=%f ", k, s);
}
printf("\n ОТВЕТ: s=%f, Press any key...",s);
getch( );
}
Пример 2:
Вывести таблицу значений функции при x изменяющемся от a до b с шагом h. Значения a, b, h вводятся с клавиатуры. Таблица должна содержать следующие столбцы: порядковый номер, значение x, значение у, сообщение о возрастании или убывании функции, разность двух соседних значений функции. Определить максимальное и минимальное значения функции.
#include <conio.h>
#include <stdio.h>
#include <math.h>
#define PI 3.14159265358
void main()
{
double x,y,a,b,h,dy,ypred,ymax,ymin;
int i,inc;
char *vs;
clrscr();
puts("Введите значения a,b и h");
scanf("%lf %lf %lf",&a,&b,&h); /* ВЫВОД ШАПКИ ТАБЛИЦЫ */
printf("Номер| x | Y(x) |Возрастает/убывает|Разность \n");
printf("------------------------------------------------------\n");
x=a;
/* ВЫЧИСЛЕНИЕ НАЧАЛЬНОГО ЗНАЧЕНИЯ ФУНКЦИИ */
ymax=ymin=ypred=y=exp(x*cos(PI/4))*cos(x*sin(PI/4));
printf("%5d|%9.4lf|%9.4lf| |\n",1,x,y);
for(x=a+h,i=2; x<=b+h/2; x+=h,i++)
{
y=exp(x*cos(PI/4))*cos(x*sin(PI/4));
if (y>ymax) ymax=y; /* ПОИСК МАКСИМАЛЬНОГО ЗНАЧЕНИЯ */
if (y<ymin) ymin=y; /* ПОИСК МИНИМАЛЬНОГО ЗНАЧЕНИЯ */
dy=y-ypred; /* ВЫЧИСЛЕНИЕ РАЗНОСТИ МЕЖДУ
СОСЕДНИМИ ЗНАЧЕНИЯМИ ФУКНЦИИ */
ypred=y;
if (dy>0) vs="Возрастает";
else vs="Убывает";
printf("%5d|%9.4lf|%9.4lf|%18s|%9.4lf\n",i,x,y,vs,dy);
}
printf("\nymax=%lf ymin=%lf \nPress any key...",ymax,ymin);
getch();
}
Варианты индивидуальных заданий
Составить программу для определения таблицы значений функции у в произвольном диапазоне [a,b] изменения аргумента х с произвольным шагом h. Значения a, b, h вводятся с клавиатуры. Таблица должна содержать следующие столбцы: порядковый номер, значение аргумента x, значение функции, сообщение о возрастании или убывании функции, разность двух соседних значений функции. Определить максимальное и минимальное значения функции.
-
a=-1,5; b=1,5; h=0,2.
-
a=0,7; b=1,8; h=0,1.
-
a=-0,5; b=2,5; h=0,2.
-
a=-0,9; b=2,7; h=0,3.
-
a=-2; b=0,8; h=0,2.
-
a=-1,9; b=2,7; h=0,3.
-
a=-0,4π; b=0,4π; h=0,5.
-
a=-0,3π; b=1,3π; h= π/10.
-
a=-π/2; b= π/2; h=π/10.
-
a=-3; b=3; h=0,5.
-
a=-π; b=π; h= π/6
-
a=-π/2; b=π/2; h=π/10.
-
a=-0,9; b=2,7; h=0,3.
-
a=-0,1; b=2; h=0,1.
-
a=π; b=2π; h= π/15.
-
a=-π; b=π; h=0,4.
-
a=-0,9; b=1, h=0,3.
-
Дано действительное число а. Найти среди чисел 1, 1+1/2, 1+1/2+1/3+… первое, большее а.
-
Дана последовательность . Среди первых ста членов последовательности найти минимальный номер и значение того члена последовательности, который является целым числом.
-
Определить количество слагаемых в сумме вида S=2+4+6+… при условии, что S≤2m, где m – целое число, вводимое с клавиатуры.
Даны действительные числа х и eps. Вычислить приближенно значение бесконечной суммы S. Приближение считается полученным, если найдена сумма нескольких сланаемых, и очередное слагаемое оказалось по модулю меньше eps.
-
S=
-
S=
-
S=
-
S=
-
S=
-
Ввести натуральное число m. Получить наибольшую цифру числа m, которая является нечетной, и номер ее позиции в числе m.
-
Ввести натуральное число m. Найти и вывести наименьшее значение суммы двух цифр этого числа.
-
Ввести натуральное число m. Определить сколько раз среди соседних разрядов числа встречается 2 одинаковые цифры. Например, в числе 1122234 встречается 3 соседние цифры.
-
Ввести натуральное число m. Выбросить из записи числа цифры 5 и 3, оставив прежний порядок цифр.
-
Определить количество трехзначных натуральных чисел, делящихся на каждую из своих цифр.
-
Ввести натуральные числа а и b. Определить, можно ли получить запись числа а путем вычеркивания одной или более цифр числа b.