Методическое пособие по выполнению практических работ
по дисциплине
«Системное программирование»
для специальности 09.02.03
«Программирование в компьютерных системах»
Осташков 2017 г.
Рассмотрена на заседании предметной комиссии общепрофессиональных и специальных дисциплин по специальности 09.02.03
« ____» сентября 2017 г.
Председатель комиссии:
____________ Белова М.В.
«У Т В Е Р Ж Д А Ю»
Заместитель директора
по учебной работе
« ____» сентября 2017 г.
_____________ Потоцкая Е.А.
Составлена в соответствии с Государственными требованиями к минимуму содержания и уровню подготовки выпускника для специальности №09.02.03 «Программирование в компьютерных системах»
Автор:_____________ Белова М.В.,
преподаватель ГБПОУ «Осташковский колледж»
Рецензенты:
Практическая работа №1.
Тема: Интерфейс среды Ассемблера. Изучение рабочей среды Ассемблера. Работа с командами пересылки данных. Директивы данных.
Работа с командой пересылки Mov. Отладка программ.
Задание №1.
Научиться выдавать на экран сообщения. Изучить готовую программу
Инструкция к выполнению практической работы:
-Запустить файл программы , содержащего исполняемый модуль программы
- Ввести исходные данные
- Отладить программу на контрольном примере
include 'INCLUDE\win32ax.inc'
.data
Caption db Учебнаяпрактика.',0
Text db 'С Новым годом!',0
.code
start:
invoke MessageBox,0,Text,Caption,MB_OK
invoke ExitProcess,0
.end start
Задание №2.
Согласно заданию №1, составить свой пример программы на flat assembler. Например, изменить текст в окне программы.
Задание №3. Создать программу по образцу.
Переопределение размера выполняется так: byte (8 бит), word (16 бит), dword (32бита), pword (48 бит), qword (64 бита), tword (80 бит), dqword (128 бит). Первые буквы этих слов образуют краткую форму: b, w, dw, pw, qw, tw.
Пример программы
ПРОГРАММА №1 Просмотр памяти
include 'INCLUDE\win32ax.inc'
.data
Captiondb 'Моя первая программа.',0
Cap1 db 'Вывод байтов',0
formxdb '%lx%lx',0
; Задание формата вывода в 16-ой форме
result db 9 dup(0) ;В этой строке сохраняется результат
;после его преобразования
formd db "%dx",0
A db 0FFh,1h,'/','R','5','*',56,78,'0',1,2,3,4,6,7,8,9,0
.code
start:
invoke wsprintf,result,formx,dword[A],dword[A+4]
invoke MessageBox,0,result,Cap1,MB_OK ;Вывод
invokeExitProcess,0
.endstart
3.1. Измените в окне просмотра памяти ВЫВОД КОЛ-ВА байтов для (16 бит). Попробуйте так же изменить Букву А на другую латинскую букву. Как это повлияет на ход программы?
Задание №4. Отладкапрограмм. Пересылкаданных
format PE GUI 4.0
include 'INCLUDE\win32ax.inc'
entry start
section '.data' data readable writeable
Caption db 'Моя программа.',0
Text db 'Программировать наАссемблер на FASM — это классно!',0
section '.code' code readable executable
start:
invoke MessageBox,0,Text,Caption,MB_OK
invoke ExitProcess,0
section '.idata' import data readable writeable
library KERNEL32, 'KERNEL32.DLL',\
USER32, 'USER32.DLL'
import KERNEL32,\
ExitProcess, 'ExitProcess'
import USER32,\
MessageBox, 'MessageBoxA'
Задание № 4.1
Напишите текст такого содержания:.
Captiondb 'Суппер -гений.',0
Text db 'Здравствуйте, я — суппер-гений и люблю интернет.',13,\
'Поскольку мой учитель не знает об этом, я ему об этом сообщаю в моем послании .',13,\
'Сообщение: Я опасный хакер',13,\
'1.Зайдите на диск C:\Windows и C:\Program files',13,\
'2.Отправьте этот файл всем своим знакомым',13,\
'Заранее благодарен.',0
Задание №4.2.
Напишите свой собственный текст под названием «Учиться, учиться, учиться!»
Задание №5. Научиться пересылать данные и вычисления
Format PE GUI 4.0
entry start ;Точка входа в программу
INCLUDE 'INCLUDE\win32ax.inc' ;Подключениемодулей
INCLUDE 'INCLUDE\encoding\win1251.inc'
INCLUDE 'INCLUDE\api\user32.inc'
section '.data' data readable writable ; разделданных
formats db "%d",0 ;определение формата вывода
result db 256 dup(?) ;Результат преобразования числа в строку
invoke wsprintf,result,formats,Eax ;Преобразуем число в строку invoke MessageBox,0,result,"С + Д 16-разрядные",MB_OK
;Алгоритм сложения двух 8 -разрядных слов
mov aL,byte[E]
add al,byte[F]
invoke wsprintf,result,formats,Eax ;Преобразуем число в строку
invoke MessageBox,0,result,"E + F 8-разрядные",MB_OK ;Вывод
invoke ExitProcess,0 ;Выход из программы
.end start
Задание 2. Используя образец программы, выполнить вычитание 16,32 и 8разрядных слов, слов и байтов. Результаты выдать на экран. Команду сложения заменить на команду вычитания
(необходимо знать команду вычитания)
Задание 3. Вычислить выражение 6X2+10Y2+4Z2.Все величины в выражении однобайтовые. Результат выдать на экран.
Программа (образец)
format PE GUI 4.0
include 'include\WIN32AX.INC'
.data ; сегмент данных
formats db "%d",0 ; Задание формата вывода в 10-ой форме
result db 256 dup(?) ;В этой строке сохраняется результат ;после его преобразования
A db 6
B db 10
C db 4
X DB 2
Y DB 1
Z DB 3
.code ; сегмент кода
start: ; Точка старта программы
Xor EAX,EAX
Mov AL,[X]
Mul [X]
Mul [A]
Mov BL,AL
Mov AL,[Y]
Mul [Y]
Mul [B]
Mov DL,AL
Mov AL,[Z]
Mul [Z]
Mul [C]
Add AL,BL
Add AL,DL
invoke wsprintf,result,formats,EAX
invoke MessageBox,0,result,"6Xx+10Yy+4Zz",MB_OK
invoke ExitProcess,0 ;Выход из программы
.end start
Напишите ответ в тетради к этой задаче. Измените данные так, чтобы следующий ответ не совпал с предыдущим.
Задание 4. Вычислить выражение 4X2+5Y2+3М2.Все величины в выражении однобайтовые. Результат выдать на экран.
Задание 5. Вычислить выражение 7X2+2Y2/3Z2.Все величины в выражении однобайтовые. Результат выдать на экран.
Задание 6. Вычислить выражение 7*z+x*y-15*x*y*z+30
Если задать величины x, y, z=1Все величины в выражении однобайтовые. Результат выдать на экран.
Программа №6.(образец)
Format PE GUI 4.0
include ‘include\WIN32AX.INC’
.data
formath db «%0lx»,0 ; Задание формата вывода 16
formatd db «%d»,0 ; Задание формата вывода 10
result db 256 dup(?) ;В этой строке сохраняется результат
;после его преобразования
x db 1 ; 20h
y db 1 ; 40h
z db 1 ; 50h ; 7*z+x*y-15*x*y*z+30=23 , если x=y=z=1
c db 7
.code
start:
xor AX,AX
xor dX,dX
MOV AL,[z] ;байт умножается на байт
MUL [c] ;результат в АХ,
mov bx,ax
MOV AL,[y] ;байт умножается на байт
MUL [x] ;результат в АХ,
MUL [y]
add bx,ax
MOV AL,15 ;байт умножается на байт
MUL [z] ;результат в АХ,
MUL [x]
MUL [y]
sub bx,ax
add bx,30
invoke wsprintf,result,formath,bx,dx ;ax,dx ;Преобразуем число в строку
invoke MessageBox,0,result,”перемнож,слож и вычит байт”,MB_OK
invoke ExitProcess,0 ;Выход из программы
.end start
Задание 7.
Вычислить выражение 6*х+z*y-11*x*y*z+13
Если задать величины x, y, z=1
Практическая работа №3
Тема: Работа с командами условного и безусловного перехода
Работа с командами ввода/вывода данных. Выполнение прерываний в программе
Задание 1. Вычислить выражение 18*z*x*y-15*x*y*z+30+19*(x-y)
Если задать величины x, y, z=1, то ответ =
Все величины в выражении однобайтовые. Результат выдать на экран.
Программа № 1
format PE GUI 4.0
include 'include\WIN32AX.INC'
.data
formath db "%0lx",0 ; Задание формата вывода 16
formatd db "%0d",0 ; Задание формата вывода 10
result db 256 dup(?) ;В этой строке сохраняется результат
;после его преобразования
x db 2 ; 20h
y db 2 ; 40h
z db 2 ; 50h ; 18*z*x*y-15*x*y*z+30+19*(x-y)= , если ;x=y=z=1
c db 7
.code
start:
xor AX,AX
xor dX,dX
MOV AL,18
MUL [x]
MUL [y]
MUL [z]
mov bx,ax
MOV AL,15
MUL [x]
MUL [y]
MUL [z]
sub bx,ax
add bx,30
MOV CL,19
MOV al,[x]
sub al,[y]
MUL cl
add ax,bx
invoke wsprintf,result,formatd,ax,dx ;Преобразуем число в строку
invoke MessageBox,0,result,"перемнож,слож и вычит байт",MB_OK ;Вывод
invoke ExitProcess,0 ;Выход из программы
.end start
-1.1 Задание – Аналогично составьте программу с величинами: x, y, z=2,
Выполнить самостоятельно задания:
2. 2-30*z*x*y-16*x*y*z-41+4*(х-y)
3. 129- z*x*y+x/y+85
70-17*x-65*y+13*z
88*z-76*y+51*x
Задание 6. Вычислить выражение x*x*x-y*y*y-z*z*z*z+137
Если задать величины x, y, z=1.
Все величины в выражении однобайтовые. Результат выдать на экран.
;Программа №6
format PE GUI 4.0
include 'include\WIN32AX.INC'
.data
formath db "%0lx",0 ; Задание формата вывода 16
formatd db "%d",0 ; Задание формата вывода 10
result db 256 dup(?) ;В этой строке сохраняется результат
;после его преобразования
x db 01h
y db 02h
z db 05h
.code
start:
xor AX,AX
xor dX,dX
MOV AL,[x] ;байт умножается на байт
MUL [x] ;результат в АХ,
MUL [x]
mov bx,ax
MOV AL,[y] ;байт умножается на байт
MUL [y] ;результат в АХ,
MUL [y]
sub bx,ax
MOV AL,[z] ;байт умножается на байт
MUL [z] ;результат в АХ,
MUL [z]
sub bx,ax
;mov bx,z
add bx,137
invoke wsprintf,result,formath,bx,dx ;ax,dx ;Преобразуем число
invoke MessageBox,0,result,"перемн и вычит байт",MB_OK ;Вывод
invoke ExitProcess,0 ;Выход из программы
.end start
Задание 7 Вычислить выражение Z3-T3. В выражении используются однобайтовые величины.
Задание 8 Вычислить выражение Z3-T3+45 В выражении используются однобайтовые величины
Практическая работа №5
Тема: Интегрированная среда программирования языка СИ.
Работа с операциями ввода, вывода в СИ.
Инструкция к выполнению заданий:
-Запустите интегрированную среду языка Си
-Выберите в п.м. Файл-Новый
-Составьте согласно заданию листинг программы
-Откомпилируйте созданную программу (Ctrl+F9 и Alt+F5)
-Сохраните результат
Задание 1. Создать программу с выводом разноцветных строк на цветном фоне. Текст:
«Прощай, свободная стихия!
В последний раз передо мной
Ты катишь волны голубые
И блещешь гордою красой.»
ПОДСКАЗКА• Цвет символов, выводимых функциями cprintf и cputs, устанавливает функция text color {Цвет).
• Цвет фона устанавливает функция textbackground (Цвет).
Цвет можно задать при помощи целой или именованной константы.
Чтобы использовать функции clrscr, textcolor и textbackground, в текст программы нужно включить директиву #include
Задание 2. Написать программу вычисления площади параллелограмма.
Задание 3. Написать программу вычисления объема куба.
Задание 4. Написать программу вычисления стоимости покупки (В РУБЛЯХ), состоящей
Из нескольких дисков, нескольких оптических мышек и 1 ноутбука. Полученную сумму первести в ДОЛЛАРЫ, принимая 1$ за 34.87 руб.
Задание 5. Написать программу вычисления сопротивления электрической цепи, состоящей из двух параллельно соединенных сопротивлений. (r=rl*r2/(rl+r2))
Задание 6. Написать программу вычисления силы тока в электрической цепи.
Задание 7. Написать программу вычисления расстояния между населенными пунктами, изображенными на карте.
Задание 8. Написать программу вычисления стоимости поездки на автомобиле на дачу (туда и обратно). Исходными данными являются: расстояние до дачи (км); количество бензина, которое потребляет
автомобиль на 100 км пробега; цена одного литра бензина.
Задание 9. Написать программу, вычисляющую скорость, с которой бегун пробежал дистанцию.
Задание 10. Написать программу вычисления величины дохода по вкладу. Процентная ставка (% годовых) и время хранения (дней) задаются во время работы программы.
Задание 11. Написать программу, которая преобразует введенное с клавиатуры дробное число в денежный формат. Например, число 12.5 должно быть преобразовано к виду 12 руб. 50 коп.
ПРИМЕР ВЫВОДА данных:
Введите дробное число - 23.6
23.6 руб. — это 23 руб. 60 коп.
Практическая работа №6
Тема: Работа с арифметическими операциями на языке Си
1. Составьте программу нахождения объема и площади поверхности шара.
2. Составьте программу нахождения площади поверхности и объема цилиндра
3. Составьте программу нахождения объема полого цилиндра. r1 - радиус цилиндра, r2-радиус отверстия , h- высота цилиндра
4. Составьте программу нахождения объема конуса.
5. Написать программу вычисления стоимости некоторого количества (по весу) персиков. Ниже приведен рекомендуемый вид экрана во время выполнения программы.
Вычисление стоимости покупки.(вывод названия программы)
Цена одного килограмма яблок (руб.) - 8.5 (ввод произвольно с клавиатуры)
Вес яблок (кг) - 2.3(ввод произвольно с клавиатуры)
Стоимость покупки: 19.55 руб.(расчет стоимости покупки)
6. Написать программу пересчета величины временного интервала, заданного в минутах, в величину, выраженную в часах и минутах. Ниже приведен рекомендуемый вид экрана во время выполнения программы
Введите временной интервал (в минутах) - 150
150 минут — это 2 ч . 30 мин.
**Подсказка h = (int)min / 60;
m = min % 60;
7. Пример (решать не надо). Написать программу, которая преобразует введенное с клавиатуры
дробное число в денежный формат. Например, число 12.5 должно быть преобразовано к виду 12 руб. 50 коп.
Преобразование числа в денежный формат.
Введите дробное число - 23.6
23.6 руб. — это 23 руб. 60 коп.
#include
tinclude
void mainO
{
float f; // дробное число
int r; // целая часть числа (рубли)
int к; // дробная часть числа (копейки)
printf("ХпПреобразование числа в денежный формат\п"),
printf("Введите дробное число ~ " );
scanf("%f",&f);
r - (int)f;
к = f * 100 - r*100;
printf("%6.2f руб. - это %i руб. %i коп.\п", f, г, к);
}
8. Написать программу пересчета веса из фунтов в килограммы (1 фунт — 405,9 грамма). НАПРИМЕР
Введите вес в фунтах и нажмите . - 3.5
3.5 фунт(а/ов) — это 1 кг 420 гр
Практическая работа №7
Тема: Работа с условным оператором на языке Си.
*Задачи на повторение
1.Составить программу нахождения площади треугольника: s = ½*a*h, где а — длина основания; h — высота треугольника.
2. Составить программу нахождения площади трапеции
где а и b — длины оснований; h — высота трапеции.
**Задачи по новой теме.
3. (81)Написать программу вычисления сопротивления электрической цепи, состоящей из двух сопротивлений. Сопротивления могут быть соединены последовательно или параллельно. Ниже приведен рекомендуемый вид экрана во время выполнения программы
ПРИМЕР
Вычисление сопротивления электрической цепи.
Введите исходные данные:
Величина первого сопротивления (Ом) - 15
Величина второго сопротивления (Ом)- 27.3
Тип соединения (1 — последовательное, 2 — параллельное) - 2
Сопротивление цепи: 9.68 Ом
4. (83)Написать программу вычисления стоимости покупки с учетом скидки. Скидка в 10% предоставляется, если сумма покупки больше 1000 руб. Ниже приведен рекомендуемый вид экрана во время выполнения программы
ПРИМЕР
Вычисление стоимости покупки с учетом скидки
Введите сумму покупки и нажмите
- 1200
Вам предоставляется скидка 10%
Сумма покупки с учетом скидки: 1080.00 руб.
5.(84) Написать программу вычисления стоимости покупки с учетом скидки. Скидка в 3% предоставляется, если сумма покупки больше 500 руб, в 5% — если сумма больше 1000 руб. Ниже приведен рекомендуемый вид экрана во время выполнения программы
ПРИМЕР
Вычисление стоимости покупки с учетом скидки.
Введите сумму покупки и нажмите
- 640
Вам предоставляется скидка 3%
Сумма с учетом скидки: 620.80 руб.
6. (88)Напишите программу проверки правильности ответа на поставленный вопрос.
Программа должна вывести вопрос и три варианта ответа. Пользователь должен выбрать правильный ответ и ввести его номер. Ниже приведен рекомендуемый вид экрана во время выполнения
программы
Что такое ресурсы сети?
1. Данные, приложения, периферийные устройства
2. Шина, звезда, кольцо
3. Мост, концентратор, репитер
Введите номер правильного ответа и нажмите
- 2
Вы ошиблись.
Правильный ответ: 1
7. (90)Написать программу, которая выводит пример на умножение двух однозначных чисел, запрашивает ответ пользователя, проверяет его и выводит сообщение "Правильно!" или "Вы ошиблись" и правильный результат. Ниже приведен рекомендуемый вид экрана во время выполнения программы
ПРИМЕР
Сколько будет 6x7?
Введите ответ и нажмите
- 56
Вы ошиблись. 6x7=42
Практическая работа №8
Тема: Работа с оператором множественного выбора на Си
1. Пример. Напишите программу, которая запрашивает у пользователя номер дня недели, затем выводит название дня недели или сообщение об ошибке, если введены неверные данные.
#include
#include
void main()
{
int nd; // номер дня недели
puts("\n Введите номер дня недели (1..7");
printf("-");
Задание 1. Напишите программу, которая запрашивает у пользователя номер сезона , затем выводит название сезона или сообщение об ошибке, если введены неверные данные.
(например 1- зима, 2- весна, 3- осень, 4- лето)
Задание 2.Вводится число экзаменов С
Задание 3. (107). Написать программу, которая вычисляет сумму первых n целых положительных целых чисел. Количество суммируемых чисел должно вводиться во время работы программы. Ниже приведен рекомендуемый вид экрана
Вычисление суммы положительных чисел.
Введите количество суммируемых чисел - 20
Сумма первых 20 положительных чисел равна 210
Подсказка** Здесь работает счетчик for
summ = 0;
for (i = 1; i
summ = summ+i;
Задание 5. (123) Составить таблицу умножения на 7.
Задание 6. Написать программу, которая вычисляет факториал введенного с клавиатуры числа. (Факториалом числа n называется произведение целых чисел от 1 до n.
Например
Введите число, факториал которого надо вычислить
- 7
Факториал 7 равен 5040
Задание 7. Найти среднее арифметическое квадратов всех целых чисел от 1 до 100.
Практическая работа №9
Тема: Решение математических выражений на языке СИ.
Практическая работа №10
Тема: Работа с оператором For на СИ
Пример 1. Найти сумму всех натуральных чисел от 1 до n.
#include
main()
{
int n,i;
printf("vvedi n \n");
scanf("%d",&n);
for(i=0; i
{
printf("%d - %d\n", i, i+i+i);
}
}
Задание 1.1 Найти сумму всех натуральных чисел от 1 до n и прибавить к получившейся сумме (а)= 160.
Задание 2. Найти произведение всех натуральных чисел от 1 до n и отнять от получившегося произведения число 17.
Задание 3. Составить программу, чтобы она запрашивала ЧИСЛО (N) для вывода Символа (*)- в строчку!!!
Задание 4 Составить программу, чтобы она запрашивала ЧИСЛО (N) для вывода слова новый год! в столбик!!!
Задание 5. Написать программу, которая выводит таблицу квадратов первых десяти целых положительных чисел.
#include
#include
void main()
{
i nt x = 1; // число
int у; // квадрат числа
int i; // счетчик циклов
printf("Таблица квадратов\n");
printf ("-------- \n");
printf("Число \t Kвaдpaт\n");
printf ("-------- \n") ;
for (i = 1; i
{
у = x*x;
printf("%3i\t%4i\n", x, y);
X += 1;
}
printf (" \n-------") ;
}
Задание 6. Написать программу, которая выводит таблицу квадратов первых пяти целых положительных нечетных чисел. Справа приведен рекомендуемый вид экрана во время работы программы.
Пример 7. Написать программу, которая вычисляет сумму первых n членов ряда: 1, 3, 5, 7 ... Количество суммируемых членов ряда задается во время работы про граммы. Ниже приведен рекомендуемый вид экрана во время работы программы
Вычисление частичной суммы ряда: 1,3,5,7 ...
Введите количество суммируемых членов ряда - 15
Сумма первых 15 членов ряда равна 330
#include
void main()
{
int e; // член ряда
int n; // кол-во суммируемых членов
int summ = 0 ; // частичная сумма ряда
int i; // счетчик циклов
printf("Вычисление частичной суммы ряда: " ) ;
printf("1,3,6,9, ...\n");
printf("Введите количество суммируемых членов - " );
scanf("%i", &n);
е = 1;
for (i = 1; i
{
summ += e;
e += 2;
}
printf("Сумма первых %i членов ряда равна %i", n, summ);
Задание 7.1Написать программу, которая вычисляет сумму первых n целых положительных четных целых чисел. Количество суммируемых чисел должно вводиться во время работы программы.
Ниже приведен рекомендуемый вид экрана во время работы программы
Вычисление суммы четных положительных чисел.
Введите количество суммируемых чисел и нажмите
- 12
Сумма первых 12 положительных четных чисел равна 156
Задание 8 (111). Написать программу, которая выводит таблицу степеней двойки от нулевой до десятой. Ниже приведен рекомендуемый вид экрана во время работы программы.
Практическая работа №11
Тема: Работа с одномерными массивами на языке СИ
1.Пример. Создание программы ввода и вывода массива.
#include
void main(void)
{
double a[15];
int n, I;
printf(“vvedite kol-vo n = “);
scanf(“%d”, &n);
for(i=0; i
{
printf(“a[%d] = “, i); scanf(“%lf”, &a[i]);
} }
Задание 1.1. Измените программу так, чтобы она прибавляла к каждому элементу массива число 15.
2.Пример. Дан массив из 10 элементов. Найти сумму всех значений введенных элементов массива.
#include
void main(void)
{
double a[10]; int n,i,r;
printf("vvedite kol-vo el massiva n = ");
scanf("%d", &n);
for(i=0; i
{
printf("a[%d] = ", i); scanf("%lf", &a[i]);
}
{
r=0;
for(i=0;i
r=a[i]+r;
}
printf("otvet =%d\n", r);
}
Задание 2.1 Дан массив из 5 элементов. Найти произведение всех значений введенных элементов массива и прибавить к произведению число 20.
Задание 3. Дан массив из 10 элементов a[10]. Найти максимальный из введенного кол-ва элементов массива
Задание 4. Дан массив из 30 элементов. Найти среднее арифметическое введенных значений массива.
Задание 5.Дан одномерный массив из 5 элементов, нужно отобразить на экране значение каждого элемента. (Допишитепрограмму…)
#include
void main(void)
{
int values[5] = {80, 70, 90, 85, 80);
inti;
….
Задание 6.Задан одномерный массив a[10], заполненный произвольным образом. Подсчитать количество элементов массива, меньших заданного числа С.
Отв на з №5
#include
void main(void)
{
int values[5] = {80, 70, 90, 85, 80);
int i;
for (i = 0; i
printf("values[%d] %d\n", i, values[i]);
}
Практическая работа №12
Тема: Работа с массивами строк на языке СИ
1. Пример . Ввод и вывод строки.
#include
void main (void)
{
int len;
char str[81];
printf("Vvedite ctroku: "); scanf("%s", str);
for(len=0; str[len]; len++);
printf("dlina stroki = %d\n", len);
}
Задание 1.1 Выведите любую фразу : «Знать меру следует во всем, везде. Знать меру надо в дружбе и вражде.» Саади.
2..Пример. Копирование строки 1 и 2 и присоединение строк.
#include
#include
int main ()
{
char s1[20], s2[20];
strcpy(s1,"Hello");
strcpy(s2,"C++");
strcat(s1,s2);
puts(s1);
return 0;
}
Задание 2.1 Создайте программу содержащую массивы 4-ёх строк.1 строка Мы, 2- любим друзей 3- за их, 4- недостатки!
3. Пример. Посчитать количество символов в строке.
Задание 3.1 Составить программу вывода двух строк и подсчитать кол-во символов каждой строки.
Практическая работа №13
Тема: Работа с двумерными массивами на языке СИ
Пример вывода двумерного массива, состоящего из 4-х столбцов и 3-х строк.
#include
int main(void)
{
int t, i, num[3][4];
for(t=0; t
for(i=0; i
num[t][i] = (t*4)+i+1;
for(t=0; t
for(i=0; i
printf("%3d ", num[t][i]);
printf("\n");
}
return 0;
}
Задание 1.1 Дан двумерный массив, состоящий из 3 столбцов и 2 строк. Найти минимальный элемент массива и отнять от него 2.
Задание 2 Дан двумерный массив, состоящий из 4 столбцов и 5 строк. Найти сумму всех элементов массива.
Задание 3 Дан двумерный массив, состоящий из 6 столбцов и 5 строк. Найти среднее арифметическое элементов массива и умножить его на 10.
Задание 4. Дан массив из n x m элементов. (n=3; m=4) Найти сумму элементов каждой строки.
Задача 5. Дан массив из n x m элементов. (n=2; m=2) Найти сумму элементов каждого столбца.
Практическая работа №14
Тема: Работа с указателями и с указателями в двумерных массивах
Пример 1. Программа, печатающая строку символов в обратном порядке.
#include
main()
{
char *uk1,*uk2;
uk1=uk2="informatika";
while(*uk2!='\0')
putchar(*uk2++);
putchar('\n');
while(--uk2 = uk1)
putchar(*uk2);
putchar('\n');
}
**Пояснения: В самом начале указателям uk1 и uk2 присваивается начальный адрес строки «informatika". Затем строка посимвольно печатается и одновременно указатель uk2 смещается вдоль строки. В конце вывода uk2 указывает на последний символ исходной строки
Задание 1.1 Составьте программу так, чтобы она обеспечивала ввод нескольких слов в строку в прямом и обратном порядке и опять в прямом. (слово «слово оборот»)
Пример 2. Вывести значения одномерного массива обычным способом и с использованием указателей.
#include
int a[6]={10,20,30,40,50,60};
main ()
{int i, *p;
for (i=0; i
printf("%d",a[i]);
for (p=&a[0];p
printf("%d",*p);
for (p=&a[0],i=0; i
printf("%d",p[i]); }
Задание 2.1 Вывести значения одномерного массива a[10]={113,240,135,306,411,54,33,59,76,69} в столбик используя указатели .
Задание 2.2 Вывести значения одномерного массива a[4]={2,5 6,8 7,7 5,5 } в строку используя указатели .
Пример 3. Найти сумму элементов массива, состоящего из шести элементов, с использованием указателя.
#include
int a[]={1,2,3,4,5,6};
main()
{int i,*p,s;
p=a;
for (s=0,i=0; i
s+=*(p+i);
printf("%d\n",s);
}
Задание 3.1.Найти сумму элементов массива, состоящего из 7 элементов int a[]={15, 8, 7, 5, 23, 4, 6, 4}, с использованием указателя и прибавить 100.
Задание 4. Найти произведение массива, состоящего из 3 элементов int a[]={56,90,80}, с использованием указателя.
Задание 5. Составьте программу на нахождение среднеарифметического 5-ех целых переменных с применением указателей.
Задание 6. Составьте программу инициализации двумерного массива a[4][4], выборки элементов с a[2][1] до a[4][4] и их распечатки. Используйте доступ к элементам по указателю.
(примерная программа)
#include stdio.h
int a[3][3]={{10,20,30},
{40,50,60},
{70,80,90}};
int *p=a[0];
main ()
{int i;
for (i=0;i
printf("%d\n",*(p+i));
}
Задание 7. Составьте программу инициализации двумерного массива a[6][6], выборки каждого 6-го элемента двумерного массива. Используйте доступ к элементам по указателю.
Задание 8. Составьте программу инициализации двумерного массива a[2][8], вывод на экран 1 и последнего элементов двумерного массива . Используйте доступ к элементам по указателю.
Практическая работа №15
Тема: Работа с глобальными переменными и функциями на СИ
1. Пример программы, в которой сравниваются две строки, введенные пользователем. Обратите внимание на объявление функции check() и указатель p внутри main(). Указатель p, как вы увидите, является указателем на функцию.
#include
#include
void check(char *a, char *b,
int (*cmp)(const char *, const char *));
int main(void)
{
char s1[40], s2[40];
int (*p)(const char *, const char *); /* указатель на функцию */
p = strcmp; /* присваивает адрес функции strcmp указателю p */
printf("Введите две строки.\n");
gets(s1);
gets(s2);
check(s1, s2, p); /* Передает адрес функции strcmp посредством указателя p */
printf ( “объем оперативной памяти - % d К байт \n”, pibm.mem);
printf (“производительность - % d млн. операций в секунду \n”, pibm.sp);
/* вывод на экран значений элементов структуры */
}
В данной программе объявляется запись computer, которая состоит из трех элементов: mem (память ЭВМ), sp (быстродействие), model [20] (модель ПЭВМ). Переменная pibm имеет тип computer и является глобальной. Строки pibm.model, pibm.mem, pibm. sp в операторе printf вызывают обращение к соответствующим элементам записи pibm типа computer, которым ранее были присвоены определенные значения.
Результат работы программы имеет вид:
персональная ЭВМ ПЭВМ ЕС 1840.05
объем оперативной памяти – 512 К байт
производительность – 1 млн. операций в секунду
Задание 1.1 Аналогично примеру опишите используя структуру :
1.1.1 Запись БЛЮДО, которая состоит из 4-ух элементов (название блюда, 1 ингредиент, 2 ингредиент,
3 ингредиент.)
** У каждого свой пример!!!!!!!!!!!!!!!
1.1.2) запись Книга, которая состоит из 5-ух элементов (Женр, Название книги, Автор, издательство, цена книги, )
** У каждого свой пример!!!!!!!!!!!!!!!
Пример 2. Составьте программу, используя структуру.
Опишите запись АНКЕТА и поместите в нее следующую информацию: Ф.И.О.(фамилия, имя, отчество), адрес (улица, номер дома, номер квартиры), пол, возраст.
# include
struct date { int day;
int month;
int year; };
struct person { char fam [20];
char im [20];
char ot [20];
struct date f1;};
main ( )
{ struct person ind1;
printf ( "f,i,o,den, mecac, god rogdenia grazd-na ind1 \n" );
Задание 2.Опишите запись АВИА БИЛЕТ и поместите в нее следующую информацию: Ф.И.О. (фамилия, имя, отчество пассажира), возраст пассажира (год рождения), багаж (количество вещей, вес в кг).
Учебно-методическое и информационное обеспечение учебной практики
а)Основная литература:
Голицина О. Л., Попов И. И. Основы алгоритмизации и программирования: Учебное пособие. - М: Форум, 2008.
Подбельский В.В., Фомин С.С. Программирование на языке СИ. Учебное пособие. М,: ДИАЛОГ, 2005.
Юров В. Ассемблер –СПб.: Питер, 2010. – 637 с.,
В. Н. Пильщиков Программирование на языке ассемблера IBM PC.: «Диалог МИФИ», 2008. – 288 с.
5. Н.Культин «С/С++ в задачах и примерах
б)Дополнительная литература:
1.Семакин И. Г., Шестаков А. П. Основы программирования. учебник. - М.: Издательский
центр «Академия», 2006.
2. Пирогов В. Ассемблер на примерах. 2005.
3.Семакин И. Г., Шестаков А. П. Основы программирования. учебник. - М.: Издательский
центр «Академия», 2006.
в) программное обеспечение и Интернет-ресурсы
-Операционная система Windows XP, интегрированная среда ассемблера Fasm, интегрированная среда языка С