Главная   Добавить в избранное Программирование и основы алгоритмизации | практическая работа


Бесплатные Рефераты, дипломные работы, курсовые работы, доклады - скачать бесплатно Бесплатные Рефераты, дипломные работы, курсовые работы, доклады и т.п - скачать бесплатно.
 Поиск: 


Категории работ:
Рефераты
Дипломные работы
Курсовые работы
Контрольные работы
Доклады
Практические работы
Шпаргалки
Аттестационные работы
Отчеты по практике
Научные работы
Авторефераты
Учебные пособия
Статьи
Книги
Тесты
Лекции
Творческие работы
Презентации
Биографии
Монографии
Методички
Курсы лекций
Лабораторные работы
Задачи
Бизнес Планы
Диссертации
Разработки уроков
Конспекты уроков
Магистерские работы
Конспекты произведений
Анализы учебных пособий
Краткие изложения
Материалы конференций
Сочинения
Эссе
Анализы книг
Топики
Тезисы
Истории болезней


 





Программирование и основы алгоритмизации - практическая работа


Категория: Практические работы
Рубрика: Программирование, компьютеры и кибернетика, ИТ технологии
Размер файла: 302 Kb
Количество загрузок:
79
Количество просмотров:
1351
Описание работы: практическая работа на тему Программирование и основы алгоритмизации
Подробнее о работе: Читать или Скачать
Смотреть
Скачать



23

Министерство образования Российской Федерации

ЮЖНО-УРАЛЬСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

Кафедра Автоматики и управления

Пояснительная записка к курсовому проекту

По дисциплине:

Программирование и основы алгоритмизации

Вариант № 1

Проверил:

доцент кафедры

Вставская Е.В.

“____”_____________2007г

Выполнил:

студент группы ПС-164

Лысенко Д.Г.

“____”_____________2007г

Челябинск

2007 г.

Содержание:

  • 1. Постановка задачи 3
    • 2. Метод решения 3
      • 3. Текст программы 4
      • 4. Схема алгоритма 12
      • 5. Вывод результата работы 14
      • 6. Проверка правильности программы 14
      • Постановка задачи
      • Даны целые числа a, b и n. Вычислить.

1. Метод решения

Подключаем файл windowA.inc, в котором будут содержаться базовые структуры и константы Win32. Затем в процедуре start первоначально вызываем функции Win32 API, после чего происходит регистрация окна (определения класса окна и регистрация его в системе). Затем создаем и отображаем, собственно, само окно. Потом запускается цикл обработки сообщения, которые будут посылаться ОС программе и обрабатываться в отдельной процедуре WindowProc и затем собственно выход из программы.

В процедуре обработке сообщений, если нажата клавиша «Вычислить», то считывается значение из поля редактирования, преобразовывается в числовой формат, производятся нужные вычисления и выводится на экран

Текст программы

STYLBTN equ 40000000h + 10000000h

;WSCHILD+WS_VISIBLE

STYLEDT equ 40000000h + 10000000h + 800000h + 10000h

;Пример каркасного приложения для Win32

.486

locals

.model flat,STDCALL

include windowA.inc

includelib imp32i.lib

extrn GetModuleHandleA:PROC ;дескриптор класса окна

extrn LoadIconA:PROC ;дескриптор пиктограммы

extrn LoadCursorA:PROC ;дескриптор курсора

extrn GetStockObject:PROC ;дескриптор кисти

extrn RegisterClassExA:PROC ;регистрация класса окна

extrn CreateWindowExA:PROC ;создание экземпляра окна

extrn ShowWindow:PROC ;отображение окна

extrn UpdateWindow:PROC ;перерисовка окна

extrn GetMessageA:PROC ;получение сообщения

extrn TranslateMessage:PROC ;обнаружение сообщения

extrn DispatchMessageA:PROC ;передача сообщения

;оконной функции

extrn ExitProcess:PROC ;завершение процедуры

extrn BeginPaint:PROC ;начало перерисовки

extrn EndPaint:PROC ;конец перерисовки

extrn TextOutA:PROC ;вывод текста

extrn PostQuitMessage:PROC

extrn DefWindowProcA:PROC ;обработчик по умолчанию

extrn MessageBoxA:PROC

extrn SendMessageA:PROC

extrn GetDC:PROC

extrn ReleaseDC:PROC

;оконной функции

public WindowProc

.data

hwnd dd 0 ; дескриптор экземпляра окна

hInst dd 0 ; дескриптор класса окна

hdc dd 0

;

hedt1 dd 0 ;дескриптор поля редактирования

hbtn dd 0 ;дескриптор кнопки

hh1 dd 0

hh2 dd 0

hh3 dd 0

hh4 dd 0

hbtn1 dd 0

hbtn2 dd 0

CPBUT db &Посчитать,0

CPBUT2 db В&ыход,0

CLSBTN db BUTTON,0

CPEDT db ,0

CLSEDT db EDIT,0

TEXT db

TEXTA db

TEXTB db результат:

TEXTLEN = $-TEXT

ten dw 10

temp dw 0

a dd ?

b dd ?

n dd ?

wcl WNDCLASSEX <?> ;структура для регистрации класса

; окна

message MSG <?> ;структура для регистрации сообщений

szClassName db Приложение Win32,0

szTitleName db Курсач Лысенко Д. ПС-164,0

MesWindow db Введите a,b и n,

MesWindowLen = $-MesWindow

ps PAINTSTRUCT <?>

.code

start proc near

;Получение дескриптора класса окна

push 0;

call GetModuleHandleA

mov hInst,eax

WinMain:

;для начала инициализируем поля структуры WndClassEx

mov wcl.cbSize,type WNDCLASSEX

mov wcl.style, CS_HREDRAW+CS_VREDRAW ;полная перерисовка

mov wcl.lpfnWndProc,offset WindowProc

mov wcl.cbClsExtra,0

mov wcl.cbWndExtra,0

mov eax,hInst

mov wcl.hInstance,eax

push IDI_APPLICATION ;стандартное приложение 32512

push 0

call LoadIconA

mov wcl.hIcon,eax

push IDC_ARROW ;стандартный курсор стрелка 32512

push 0

call LoadCursorA

mov wcl.hCursor,eax

;определим цвет фона окна

push LTGRAY_BRUSH ;1

call GetStockObject

mov eax,5

mov wcl.hbrBackground,eax

mov dword ptr wcl.lpszMenuName,0 ;без главного меню

mov dword ptr wcl.lpszClassName,offset szClassName

;имя класса окна

mov wcl.hIconSm,0

;регистрируем класс окна

push offset wcl

call RegisterClassExA

;создаем окно:

push 0 ;lpParam

push hInst ;hInstance

push 0 ;menu

push 0 ;parent hwnd

push 200 ;высота окна

push 300 ;ширина окна

push 300 ;координата y л.в. угла окна

push 300 ;координата x л.в. угла

push WS_OVERLAPPEDWINDOW ;стиль окна

push offset szTitleName ;Строка заголовка окна

push offset szClassName ;имя класса окна

push 0 ;дополнительные стили

call CreateWindowExA

mov hwnd,eax ;hwnd - дескриптор окна

;показать окно:

push SW_SHOWNORMAL ;1

push hwnd

call ShowWindow

;перерисовываем содержимое окна

push hwnd

call UpdateWindow

;запускаем цикл сообщений:

cycl_msg:

push 0

push 0

push NULL

push offset message

call GetMessageA

cmp ax,0

je end_cycl_msg

;трансляция ввода с клавиатуры

push offset message

call TranslateMessage

;передача сообщения оконной функции

push offset message

call DispatchMessageA

jmp cycl_msg

end_cycl_msg:

;выход из приложения

push NULL

call ExitProcess

start endp

;Оконная функция WindowProc для обработки сообщений

WindowProc proc

arg @@hwnd:DWORD, @@mes:DWORD, @@wparam:DWORD, @@lparam:DWORD

uses ebx,edi, esi ; регистры должны сохраняться

local @@hdc:DWORD

cmp @@mes,WM_DESTROY

je wmdestroy

cmp @@mes,WM_CREATE

je wmcreate

cmp @@mes,WM_PAINT

je wmpaint

cmp @@mes, WM_COMMAND

je wmcommand

jmp default

wmcreate: ;создание окна

mov eax,0

;;;;поле1

push 0

push hInst

push 0

push @@hwnd

push 20

push 35

push 50

push 10

push STYLEDT

push offset CPEDT

push offset CLSEDT

push 0

call CreateWindowExA

mov hh1,eax

mov eax,0

;;; поле2

push 0

push hInst

push 0

push @@hwnd

push 20

push 35

push 50

push 50

push STYLEDT

push offset CPEDT

push offset CLSEDT

push 0

call CreateWindowExA

mov hh2,eax

mov eax,0

;;;;;;3

push 0

push hInst

push 0

push @@hwnd

push 20

push 35

push 50

push 90

push STYLEDT

push offset CPEDT

push offset CLSEDT

push 0

call CreateWindowExA

mov hh3,eax

mov eax,0

;;;;;

push 0

push hInst

push 0

push @@hwnd

push 20

push 80

push 80

push 10

push STYLBTN ;STYLBTN

push offset CPBUT

push offset CLSBTN

push 0

call CreateWindowExA

mov hbtn,eax

mov eax,0

push 0

push hInst

push 0

push @@hwnd

push 20

push 80

push 80

push 100

push STYLBTN ;STYLBTN

push offset CPBUT2

push offset CLSBTN

push 0

call CreateWindowExA

mov hbtn2,eax

mov eax,0

;возвращаемое значение 0

jmp exit_wndproc

wmcommand:

mov eax, hbtn

cmp @@lparam,eax

je calc

mov eax, hbtn2

cmp @@lparam,eax

je res

wmnodestroy:

mov eax,0

jmp exit_wndproc

res:

jmp wmdestroy

wmpaint:

push offset ps

push @@hwnd

call BeginPaint

mov @@hdc,eax

push MesWindowLen

push offset MesWindow

push 20

push 10

push @@hdc

call TextOutA

;освободить контекст

push offset ps

push @@hdc

call EndPaint

mov eax,0 ;возвращаемое значение 0

jmp exit_wndproc

wmdestroy: ;послать сообщение WM_QUIT

push 0

call PostQuitMessage

mov eax,0 ;возвращаемое значение 0

jmp exit_wndproc

default:

;обработка по умолчанию

push @@lparam

push @@wparam

push @@mes

push @@hwnd

call DefWindowProcA

jmp exit_wndproc

calc:

;считываем поле 1

push offset TEXTA

push 150

push WM_GETTEXT

push hh1

call SendMessageA

push offset TEXTA

call StringToDig

mov a,eax

;поле 2

push offset TEXTA

push 150

push WM_GETTEXT

push hh2

call SendMessageA

push offset TEXTA

call StringToDig

mov b,eax

;поле 3

push offset TEXTA

push 150

push WM_GETTEXT

push hh3

call SendMessageA

push offset TEXTA

call StringToDig

mov n,eax

mov ecx,n

mov eax,1d

repeat:

imul a

loop repeat

imul b

aam

or ax,3030h

mov [TEXTB+12],ah

mov [TEXTB+13],al

push @@hwnd

call GetDC

mov @@hdc,eax

push 18

push offset TEXTB

push 120

push 10

push @@hdc

call TextOutA

exit_wndproc:

ret

WindowProc endp

StringToDig proc near

ARG @@TEXT:DWORD

mov esi,@@TEXT

mov eax,0

mov edx,0

mov dl,[esi]

cmp dl,-

jne N

mov temp,1

inc esi

mov dl,[esi]

N: cmp dl,0

jl MRET

cmp dl,9

jg MRET

and dl,0Fh ; ASCII->BCD

add eax,edx

mul ten

inc esi

mov dl,[esi]

cmp dl,0

jl MDIV

cmp dl,9

jg MDIV

; mul ten

and dl,0Fh

add eax,edx

jmp MRET

MDIV: div ten

MRET:

cmp temp,1

jne n1

imul eax,-1

mov temp,0

n1: ret

StringToDig endp

end start

2. Схема алгоритма

Вывод результата работы

3. Проверка правильности программы

1)

2)

3)

4)

Данные, полученные в результате вычислений, совпадают с теми, что были получены в результате выполнения программы.









 
 
Показывать только:




Портфель:
Выбранных работ  


Рубрики по алфавиту:
А Б В Г Д Е Ж З
И Й К Л М Н О П
Р С Т У Ф Х Ц Ч
Ш Щ Ъ Ы Ь Э Ю Я

 

 

Ключевые слова страницы: Программирование и основы алгоритмизации | практическая работа

СтудентБанк.ру © 2014 - Банк рефератов, база студенческих работ, курсовых и дипломных работ, шпаргалок и докладов по различным дисциплинам, а также отчеты по практике и многое другое - бесплатно.
Лучшие лицензионные казино с выводом денег