- •Т.В. Панова программирования на языке высокого уровня си Лабораторный практикум
- •Лабораторная работа №1. Обработка двумерных массивов данных………...…………….3
- •Лабораторная работа №1
- •Обработка двумерных массивов данных
- •I. Теоретические сведения.
- •II. Контрольные вопросы.
- •III. Практическая часть.
- •1. Выполнение общего задания.
- •2. Математическая модель и описательный алгоритм.
- •3. Блок-схема алгоритма:
- •4. Текст программы:
- •5. Тестирование:
- •2. Математическая модель и описательный алгоритм.
- •3. Блок-схема алгоритма:
- •4. Текст программы:
- •5. Тестирование:
- •2. Математическая модель и описательный алгоритм.
- •3. Блок-схема алгоритма:
- •4. Текст программы:
- •5. Тестирование:
- •5. Тестирование:
- •2. Математическая модель и описательный алгоритм.
- •3. Блок-схема алгоритма:
- •4. Текст программы:
- •5. Тестирование:
- •Лабораторная работа №2
- •Работа со строками
- •I. Теоретические сведения.
- •1. Некоторые стандартные функции обработки строк и их использование
- •II. Контрольные вопросы.
- •3. Блок-схема алгоритма:
- •4. Текст программы:
- •5. Тестирование:
- •2. Блок-схема алгоритма:
- •3. Текст программы:
- •4. Тестирование:
- •Лабораторная работа № 3
- •Функции
- •I. Теоретические сведения.
- •II. Контрольные вопросы.
- •III. Практическая часть.
- •2. Описание подхода к решению задачи.
- •2. Блок-схемы алгоритмов функций:
- •3. Текст программы:
- •4. Тестирование:
- •2. Блок-схемы алгоритмов функций обработки строки:
- •3. Текст программы:
- •4. Тестирование:
- •Лабораторная работа №4
- •Работа с файлами
- •I. Теоретические сведения.
- •Определение типов символов
- •II. Контрольные вопросы.
- •III. Практическая часть.
- •1. Выполнение общего задания.
- •2. Блок-схема алгоритма:
- •3. Текст программы:
- •2. Текст программы:
- •2. Текст программы:
- •2. Текст программы:
- •2. Выполнение индивидуального задания.
Лабораторная работа № 3
Тема
Функции
Цель: получение практических навыков выделения подзадач в поставленной задаче и использования функций для реализации выделенных подзадач обработки.
I. Теоретические сведения.
См. лекции по курсу «Программирование на языке высокого уровня».
II. Контрольные вопросы.
Что такое вспомогательный алгоритм?
Чем реализуется вспомогательный алгорим в программировании?
Что такое подпрограмма, чем она представляется в языке Си?
Что включает в себя определение функции?
Почему необходим оператор возврата из функции?
Что происходит при определении переменной или функции?
Что означает обращение к функции?
Когда используются формальные и фактические параметры?
Что представляет собой результат функции?
Назвать способы передачи параметров в функцию.
Что означает передача параметров в функцию по значению?
В чем различие между передачей параметров в функцию по адресу или ссылке от стандартного способа передачи параметров?
Что такое ссылка?
Какое местоположение может занимать функция в программе и вне ее?
Чем является объявление функции, и когда оно используется?
Чем отличается объявление прототипа функции от обычного объявления?
Какими способами может быть указано имя подключаемого файла?
III. Практическая часть.
1. Выполнение общего задания.
Разобрать задачи.
Задача 1
1. Постановка задачи: ввести двумерный массив размерностью n на m, создать одномерный массив из m элементов, значение которых равно сумме значений элементов каждого столбца данного двумерного массива, вывести полученный массив.
2. Описание подхода к решению задачи.
В поставленной задаче можно выделить три подзадачи: ввод и вывод элементов двумерного массива и формирование одномерного массива. Подзадачи оформляются в виде функций, которые вызываются из главной функции.
M[n][m] – двумерный массив, содержащий n строк и m столбцов; A[m] – одномерный массив из m элементов; p2, p1 – указатели на двумерный и одномерный массив соответственно.
3. Блок-схемы алгоритмов функций:
Блок-схема главной функции
Блок-схема функции ввода массива – Inp_mas(p,k)
Блок-схема функции вывода массива – Outp_mas(p,k,l)
Блок-схема функции формирования одномерного массива – Create_mas1(p,p0,k,l)
3. Текст программы:
#include <stdio.h>
#include <conio.h>
#define n 3
#define m 4
// Определение вызываемых функций
int Inp_mas(int *p,int k) // функция ввода двумерного массива
{
int i=0;
while(i<k)
{
scanf(“%d”,p);
p++;
i++;
}
return 0;
}
void Outp_mas(int *p,int k,int l) // функция вывода исходного массива
{
int i=0;
printf(“\nOutput matric:\n”);
while(i<k)
{
printf(“%d ”,*p);
if ((i+1)%l==0)
printf(“\n”);
p++;
i++;
}
return;
}
int Create_mas1(int *p,int *p0,int k,int l) /* функция формирования одномерного массива */
{
int i,j=0,s;
while(j<l)
{
i=s=0;
while(i<k)
{
s+=*(p+i*l);
i++;
}
*p0=s;
p0++;
p++;
j++;
}
return 0;
}
void main() // главная функция
{
int N,M[n][m],A[m],*p2,*p1;
p2=&M[0][0];
p1=&A[0];
N=n*m;
Inp_mas(p2,N);
Outp_mas(p2,N,m);
Create_mas1(p2,p1,n,m);
Outp_mas(p1,m,m);
getch();
return;
}
Задача 2
1. Постановка задачи: отсортировать нечетные строки введенного двумерного массива по возрастанию, а четные – по убыванию, вывести полученный массив.