Хелпикс

Главная

Контакты

Случайная статья





Задание № 4.1. Задание №4.2.. Практическая работа №2.



Задание № 4. 1

Напишите текст такого содержания:.

Caption db 'Суппер -гений. ', 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(? ); Результат преобразования числа в строку

section '. code' code readable executable; раздел кода

start:                              ; начало программы

; Алгоритм сложения чисел 1 и 2

mov eax, 1                    ; Перемещаем в eax число 1

; Складываем содержимое eax и 2. Сохраняем результат в eax.

add eax, 2

; Преобразуем число (результат) в строку для вывода его на экран.

invoke wsprintf result, f ormats, eax; Выводим результат на экран.

invoke MessageBox, 0, result, " Plus", MB_OK; Алгоритм вычитания 4 из 10

; Перемещаем в eax число 10

mov eax, 10

; Вычитаем из содержимого eax 4 (10-4). Сохраняем результат в eax.

 sub eax, 4

; Преобразуем число(результат) в строку для вывода его на экран.

invoke wsprintf, result, formats, eax

; Выводим результат на экран.

invoke MessageBox, 0, result, " Minus", MB_OK

; Алгоритм умножения 2 на 6

mov ax, 6; Помещаем в ax число 6; Умножаем содержимое ax на 2 (2*6). Результат будет находиться в eax.

shl ax, 1; Преобразуем число(результат) в строку для вывода его на экран.

invoke wsprintf, result, formats, eax; Выводим результат на экран.

invoke MessageBox, 0, result, " Umnojenie", MB_OK

invoke ExitProcess, 0; Выход из программы

section '. idata' import data readable

library kernel32, 'KERNEL32. DLL', user32, 'USER32. DLL'

INCLUDE 'INCLUDE\api\kernel32. inc'

 

Задание №4.

Согласно заданию №3, составить свой пример программы на flat assembler, например, изменить числа в «теле» программы.

 


Практическая работа №2.

Работа с операциями сложения и вычитания над целыми числами.

Работа с операциями умножение и деления целых чисел.

 

Порядок выполнения работы

  1. Загрузка системы

2. Создание файла с текстом программы задания

3. Исправление ошибок компиляции

4. Создание файла, содержащего исполняемый модуль программы

5. Ввод исходных данных

6. Отладка программы на контрольном примере

Задание 1. Создайте программу на FASM по образцу. Определите какая команда отвечает за сложение.

format PE GUI 4. 0

 include 'include\WIN32AX. INC'

. data

formats db " %d", 0; Задание формата вывода в 10-ой форме

result db 256 dup(? ); В этой строке сохраняется результат                                         

; после его преобразования 

A dd 01h

B dd 02h

C dw 03h           ; определение исходных данных

D dw 04h

E db 0FEh

F db 01h

. code

start:

 ; Алгоритм сложения двух 32 -разрядных слов

mov Eax, [A]              ; Перемещаем в eax число A

add EaX, [B]              ; Складываем содержимое eax и B.

invoke wsprintf, result, formats, eax; Преобразуем число в строку

invoke MessageBox, 0, result, " А+Б 32- разрядные", MB_OK; Вывод

mov Eax, 0

invoke wsprintf, result, formats, Eax; Преобразуем число в строку 

invoke MessageBox, 0, result, " Промежут Eax ", MB_OK; Вывод

; Алгоритм сложения двух 16 -разрядных слов

mov ax, word[C]

add aX, word[D]

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

4. 70-17*x-65*y+13*z

5. 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 < conio. h>

 

Задание 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 < stdio. h>

tinclude < conio. h>

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 грамма). НАПРИМЕР

Введите вес в фунтах и нажмите < Enter>. -> 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 руб. Ниже приведен рекомендуемый вид экрана во время выполнения программы

ПРИМЕР

Вычисление стоимости покупки с учетом скидки

Введите сумму покупки и нажмите < Enter>

-> 1200

Вам предоставляется скидка 10%

Сумма покупки с учетом скидки: 1080. 00 руб.

5. (84) Написать программу вычисления стоимости покупки с учетом скидки. Скидка в 3% предоставляется, если сумма покупки больше 500 руб, в 5% — если сумма больше 1000 руб. Ниже приведен рекомендуемый вид экрана во время выполнения программы

ПРИМЕР

Вычисление стоимости покупки с учетом скидки.

Введите сумму покупки и нажмите < Enter>

-> 640

Вам предоставляется скидка 3%

Сумма с учетом скидки: 620. 80 руб.

6. (88)Напишите программу проверки правильности ответа на поставленный вопрос.

Программа должна вывести вопрос и три варианта ответа. Пользователь должен выбрать правильный ответ и ввести его номер. Ниже приведен рекомендуемый вид экрана во время выполнения

программы

Что такое ресурсы сети?

1. Данные, приложения, периферийные устройства

2. Шина, звезда, кольцо

3. Мост, концентратор, репитер

Введите номер правильного ответа и нажмите < Enter>

-> 2

Вы ошиблись.

Правильный ответ: 1

 

7. (90)Написать программу, которая выводит пример на умножение двух однозначных чисел, запрашивает ответ пользователя, проверяет его и выводит сообщение " Правильно! " или " Вы ошиблись" и правильный результат. Ниже приведен рекомендуемый вид экрана во время выполнения программы

ПРИМЕР

Сколько будет 6x7?

Введите ответ и нажмите < Enter>

-> 56

Вы ошиблись. 6x7=42

 

Практическая работа №8

Тема: Работа с оператором множественного выбора на Си

1. Пример. Напишите программу, которая запрашивает у пользователя номер дня недели, затем выводит название дня недели или сообщение об ошибке, если введены неверные данные.

#include < stdio. h>

#include < conio. h>

void main()

{

int nd; // номер дня недели

puts(" \n Введите номер дня недели (1.. 7" );

printf(" -> " );

Задание 1. Напишите программу, которая запрашивает у пользователя номер сезона, затем выводит название сезона или сообщение об ошибке, если введены неверные данные.

(например 1- зима, 2- весна, 3- осень, 4- лето)

 

Задание 2. Вводится число экзаменов С< =5. Напечатать фразу «Мы учимся в колледже уже С лет», согласовав слово лет с числом С. Предусмотреть ситуацию ввода С< 0

 

Задание 3. (107). Написать программу, которая вычисляет сумму первых n целых положительных целых чисел. Количество суммируемых чисел должно вводиться во время работы программы. Ниже приведен рекомендуемый вид экрана

Вычисление суммы положительных чисел.

Введите количество суммируемых чисел -> 20

Сумма первых 20 положительных чисел равна 210

Подсказка** Здесь работает счетчик for

summ = 0;

for (i = 1; i < = n; i++)

summ = summ+i;

Задание 5. (123) Составить таблицу умножения на 7.

 

Задание 6. Написать программу, которая вычисляет факториал введенного с клавиатуры числа. (Факториалом числа n называется произведение целых чисел от 1 до n.

Например

Введите число, факториал которого надо вычислить

-> 7

Факториал 7 равен 5040

Задание 7. Найти среднее арифметическое квадратов всех целых чисел от 1 до 100.

Практическая работа №9

Тема: Решение математических выражений на языке СИ.

 

Практическая работа №10

Тема: Работа с оператором For на СИ

Пример 1. Найти сумму всех натуральных чисел от 1 до n.

#include < stdio. h>

main()

{

int n, i;

printf(" vvedi n \n" );

 scanf(" %d", & n);

for(i=0; i< n; i++)

{

printf(" %d - %d\n", i, i+i+i);

}

}

 

Задание 1. 1 Найти сумму всех натуральных чисел от 1 до n и прибавить к получившейся сумме (а)= 160.

Задание 2. Найти произведение всех натуральных чисел от 1 до n и отнять от получившегося произведения число 17.

 

Задание 3. Составить программу, чтобы она запрашивала ЧИСЛО (N) для вывода Символа (*)- в строчку!!!

 

Задание 4 Составить программу, чтобы она запрашивала ЧИСЛО (N) для вывода слова новый год! в столбик!!!

 

Задание 5. Написать программу, которая выводит таблицу квадратов первых десяти целых положительных чисел.

#include < stdio. h>

#include < conio. h>

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 < = 10; 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 < conio. h>

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 < = n; i++)

{

summ += e;

e += 2;

}

printf(" Сумма первых %i членов ряда равна %i", n, summ);

Задание 7. 1Написать программу, которая вычисляет сумму первых n целых положительных четных целых чисел. Количество суммируемых чисел должно вводиться во время работы программы.

Ниже приведен рекомендуемый вид экрана во время работы программы

 

Вычисление суммы четных положительных чисел.

Введите количество суммируемых чисел и нажмите < Enter>

-> 12

Сумма первых 12 положительных четных чисел равна 156

Задание 8 (111). Написать программу, которая выводит таблицу степеней двойки от нулевой до десятой. Ниже приведен рекомендуемый вид экрана во время работы программы.

Практическая работа №11

Тема: Работа с одномерными массивами на языке СИ

1. Пример. Создание программы ввода и вывода массива.

 

#include < stdio. h>  

void main(void) 

double a[15];

int n, I;  

printf(“vvedite kol-vo n = “);  

scanf(“%d”, & n);  

for(i=0; i< n; i++)

printf(“a[%d] = “, i); scanf(“%lf”, & a[i]);  

}    } 

Задание 1. 1. Измените программу так, чтобы она прибавляла к каждому элементу массива число 15.

 

2. Пример. Дан массив из 10 элементов. Найти сумму всех значений введенных элементов массива.

#include < stdio. h>  

void main(void) 

double a[10]; int n, i, r;

  printf(" vvedite kol-vo el massiva n = " );

scanf(" %d", & n);

for(i=0; i< n; i++)

       {

printf(" a[%d] = ", i); scanf(" %lf", & a[i]);

          }      

{

r=0;

for(i=0; i< n; i++)

r=a[i]+r;

}

printf(" otvet =%d\n", r);

}

Задание 2. 1 Дан массив из 5 элементов. Найти произведение всех значений введенных элементов массива и прибавить к произведению число 20.

 

Задание 3. Дан массив из 10 элементов a[10]. Найти максимальный из введенного кол-ва элементов массива

Задание 4. Дан массив из 30 элементов. Найти среднее арифметическое введенных значений массива.

Задание 5. Дан одномерный массив из 5 элементов, нужно отобразить на экране значение каждого элемента. (Допишите программу…)

#include < stdio. h>

void main(void)

{

int values[5] = {80, 70, 90, 85, 80);

int i;

….

Задание 6. Задан одномерный массив a[10], заполненный произвольным образом. Подсчитать количество элементов массива, меньших заданного числа С.

Отв на з №5

#include < stdio. h>

void main(void)

{

int values[5] = {80, 70, 90, 85, 80);

int i;

for (i = 0; i < 5; i++)

printf(" values[%d] %d\n", i, values[i]);

}

 

 

Практическая работа №12

Тема: Работа с массивами строк на языке СИ

 

1. Пример. Ввод и вывод строки.

#include < stdio. h>  

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 < stdio. h>  

#include < string. h>

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. Пример. Посчитать количество символов в строке.

#include < stdio. h>

#include < string. h>

main()

{

 char str[80];  

printf(" Vvedite ctroku: " );

 gets(str);

printf(" %s\n", str);

puts(str);

printf(" ctroka \n%s \n imeet dliny %d cimv-v \n", str, strlen(str));

return 0;

 }

 

Задание 3. 1 Составить программу вывода двух строк и подсчитать кол-во символов каждой строки.

 

 

Практическая работа №13

Тема: Работа с двумерными массивами на языке СИ

 

1. Пример вывода двумерного массива, состоящего из 4-х столбцов и 3-х строк.

#include < stdio. h>

int main(void)

{

int t, i, num[3][4];

 

for(t=0; t< 3; ++t)

for(i=0; i< 4; ++i)

num[t][i] = (t*4)+i+1;

for(t=0; t< 3; ++t) {

for(i=0; i< 4; ++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 < stdio. h>

 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 < stdio. h>

int a[6]={10, 20, 30, 40, 50, 60};

main ()

{int i, *p;

for (i=0; i< 6; i++)

printf(" %d", a[i]);

for (p=& a[0]; p< =& a[5]; p++)

printf(" %d", *p);

for (p=& a[0], i=0; i< 6; 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 < stdio. h>

int a[]={1, 2, 3, 4, 5, 6};

main()

{int i, *p, s;

p=a;

for (s=0, i=0; i< 6; 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< 9; i+=4)

printf(" %d\n", *(p+i));

}

Задание 7. Составьте программу инициализации двумерного массива a[6][6], выборки каждого 6-го элемента двумерного массива. Используйте доступ к элементам по указателю.

Задание 8. Составьте программу инициализации двумерного массива a[2][8], вывод на экран 1 и последнего элементов двумерного массива. Используйте доступ к элементам по указателю.

 

Практическая работа №15

Тема: Работа с глобальными переменными и функциями на СИ

1. Пример программы, в которой сравниваются две строки, введенные пользователем. Обратите внимание на объявление функции check() и указатель p внутри main(). Указатель p, как вы увидите, является указателем на функцию.

#include < stdio. h>

#include < string. h>

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 */

return 0;

}

void check(char *a, char *b, int (*cmp)(const char *, const char *))

{

printf(" Проверка на совпадение. \n" );

if(! (*cmp)(a, b)) printf(" Равны" );

else printf(" Не равны" );

}

 

Задание 1. 1 Составьте программу, в которой сравниваются 4 строки.

Пример2. Пример программы передающей функции массив и количество элементов, содержащихся

#include < stdio. h>

void show_array(int values[], int number_of_elements)

{

int i;

for (i = 0; i < number_of_elements; i++)

printf(" %d\n", values[i]);

}

void main(void)

{

int scores[3] = {12, 16, 23};

show_array(scores, 3);

}

 

 

Задание 2. 2 Составьте по аналогу программу, в которой функция show_array вызывается 5 раз

 с 5-ю различными массивами.

 

Пример 3. 1Написать функцию " Факториал" и программу, использующую эту функцию для вывода таблицы факториалов.

#include " stdio. h"

#include " conio. h"

unsigned int factor(int x)

{

unsigned int f = 1;

for (int i = 2; i < = x; i++)

f *= i;

return(f);

}

void main()

{

unsigned int f;

puts(" \nТаблица факториалов" );

for (int n = 1; n < = 8; n++)

{

f = factor(n);

printf(" %2i %u\n", n, f);

}

Задание 3. 1 1Написать функцию " Квадрат чисел от1 до 9" и программу, использующую эту функцию для вывода таблицы квадратов чисел.

 

Задание 4. Написать функцию, которая вычисляет значение аb. Числа а и b могут либо целыми, либо дробными числами.

 

Задание 5. Написать функцию Procent, которая возвращает процент от полученного в качестве аргумента числа.

 

Пример 6. Рассмотрим функцию Sum(), вычисляющую значение суммы элементов массива:

 

#include < stdio. h>

  double Sum(double A[], int nA)

  {

     double s = 0;

     while(nA) s += A[--nA];

     return s;

    }

  void main (void)

  {

    double B[] = { 1, 2, 3, 4, 5 };

     int nB = sizeof(B)/sizeof(B[0]);

     printf(" Сумма = %lf\n", Sum(B, nB));

     printf(" nB = %d\n", nB);

  }

 

Задание 7. По примеру вышеуказанной программы найти среднее арифметическое массива из 4-ех элементов. {16, 5, 7, 1}.

Задание 8 Напишите программу, вычисляющую произведение элементов массива {-4, 1, 3, 9, 9, 2}

Функцию (Sum) из предыдущей задачи замените на (pro) Обязательно в конце программы написать ответ чему равно произведение элементов массива

Практическая работа № 17

Тема: Работа со структурами на СИ

 

 

Пример 1. Пример программы: /* Демонстрация записи */

 

#include < stdio. h >

struct computer { int mem; int sp; char model [20]; };

/* Объявление записи типа computer, состоящей из трех элементов: mem, sp, model */

struct computer pibm = {512, 1, “ПЭВМ ЕС 1840. 05”};

/* Объявление и инициализация переменной pibm типа computer */

main ( )

{ printf (“ персональная ЭВМ % s\n\n “, pibm. model);

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 < stdio. h>

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" );

scanf (" %s %s %s %d %d %d", & ind1. fam, & ind1. im, & ind1. ot,

& ind1. f1. day, & ind1. f1. month, & ind1. f1. year );

printf (" F, I, O: %s %s %s\n", ind1. fam, ind1. im, ind1. ot);

printf (" God r - %d\n", ind1. f1. year);

printf (" mecac - % d\n", ind1. f1. month);

printf (" den - % d\n", ind1. f1. day);

}

 

Задание 2. Опишите запись АВИА БИЛЕТ и поместите в нее следующую информацию: Ф. И. О. (фамилия, имя, отчество пассажира), возраст пассажира (год рождения), багаж (количество вещей, вес в кг).

 

 Учебно-методическое и информационное обеспечение учебной практики

а)Основная литература:

1. Голицина О. Л., Попов И. И. Основы алгоритмизации и программирования: Учебное по­собие. - М: Форум, 2008.

2. Подбельский В. В., Фомин С. С. Программирование на языке СИ. Учебное пособие. М,: ДИАЛОГ, 2005.

3. Юров В. Ассемблер –СПб.: Питер, 2010. – 637 с.,

4. В. Н. Пильщиков Программирование на языке ассемблера IBM PC.: «Диалог МИФИ», 2008. – 288 с.

5. Н. Культин «С/С++ в задачах и примерах

 

 

б)Дополнительная литература:

1. Семакин И. Г., Шестаков А. П. Основы программирования. учебник. - М.: Издательский 

центр «Академия», 2006.

 2. Пирогов В. Ассемблер на примерах. 2005.

3. Семакин И. Г., Шестаков А. П. Основы программирования. учебник. - М.: Издательский  

центр «Академия», 2006.

 

в) программное обеспечение и Интернет-ресурсы

 

-Операционная система Windows XP, интегрированная среда  ассемблера Fasm, интегрированная среда языка С 

 

1) http: //informatika. far. ru

2) http: //mr-net. narod. ru

3) http: //www. uchi-c. narod. ru

 

 

 



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.