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

Поля редактирования. Каркасное приложение для Win32. Определение класса окна и регистрация его в системе. Считывание значения из поля редактирования. Цикл обработки сообщения. Числовой формат. Схема алгоритма. Вывод результата работы программы на экран.

Рубрика Программирование, компьютеры и кибернетика
Вид практическая работа
Язык русский
Дата добавления 11.10.2008
Размер файла 290,9 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

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)

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


Подобные документы

  • Рассмотрение особенностей среды программирования Delphi. Разработка программы для пересчета длины из фунтов в килограммы с использованием следующих объектов: Edit, Label, Button. Значения свойств поля ввода-редактирования и командной кнопки Перерасчет.

    практическая работа [177,2 K], добавлен 18.10.2012

  • Приложение в среде Delphi, реализующее ввод двух целых чисел, по щелчку на кнопке с символом "=", вычисление результата операции вещественного деления с выводом значения на экран. Дополнение программы обработчика события: изменение цвета и ширины окна.

    лабораторная работа [13,3 K], добавлен 15.07.2009

  • Понятие алгоритма. Цикл программы. Структурная схема алгоритма. Элементы языка Тurbo Рascal. Алфавит. Идентификаторы. Комментарии. Лексика языка С++. ESC-последовательности. Операции. Ключевые слова. Комментарии.

    контрольная работа [43,0 K], добавлен 24.04.2006

  • Основные элементы окна программы MathCAD. Выполнение операций с файлами, редактирование, настройка программы. Способы ввода и редактирования в рабочем поле окна программы. Задание на рабочей области необходимых функций и матриц, выполнение вычислений.

    контрольная работа [18,0 K], добавлен 11.09.2019

  • Методы языка программирования C#. Алгоритмизация и программирование задач на языке высокого уровня C#. Внутренний цикл, ветвление, внешний цикл, вложенные друг в друга структуры ветвления. Вывод элементов массива на экран. Остальные элементы матрицы.

    курсовая работа [250,2 K], добавлен 27.02.2015

  • Основы организации приложения в Windows. Посылка и передача сообщений для окон. Создание и отображение главного окна приложения. Деактивация приложения, его фазы. Сообщения клавиатуры и функции для работы с ней. Определение состояния отдельных клавиш.

    лекция [65,7 K], добавлен 24.06.2009

  • Создание работоспособного модуля по работе с мобильными картами АЗС. Разработка базы данных в среде программирования Турбо Паскаль для работы с текстами и файловыми структурами. Описание методов алгоритмизации процессов сортировки и редактирования.

    курсовая работа [1,9 M], добавлен 05.12.2011

  • Проектирование приложения "Тетрис", осуществляющего вывод различных фигур на экран случайным образом и их падение. Описание логической структуры программы, ее тестирование. Требования к аппаратной и программной средам. Функции для работы с приложением.

    курсовая работа [343,7 K], добавлен 20.01.2015

  • Обзор основных возможностей и инструментов пакета Audacity. Запуск приложения, поддерживаемые звуковые форматы. Настройка параметров, оцифровка и редактирование звука. Использование фильтров и озвучивание презентации. Применение программы Audacity.

    курсовая работа [151,6 K], добавлен 08.05.2011

  • Запись в массив листа Excel c именем "Эксперимент". Среднее арифметическое значение элементов массива. Вывод диалогового окна. Фрагмент программы, организующий считывание исходного массива в программу для обработки. Адрес ячейки электронной таблицы.

    контрольная работа [1,1 M], добавлен 16.08.2011

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.