【軟件設計師】程序語言

1.程序設計語言基本概念

1.1 低級語言與高級語言

低級語言:機器語言和匯編語言稱為低級語言

? ? ? ? 機器語言指0.,1組成的機器指令序列

? ? ? ? 匯編語言指用符號表示指令的語言,如MOV AX,2

?高級語言:從人類的邏輯角度出發,不依賴具體的機器硬件

?1.2 表達式

? ? ? ? 前綴表達式:也被稱之為波蘭表達式,其特點是將操作符放于操作數之前,如:-x+3456

? ? ? ? 中綴表達式:即我們常用的表示方法,(3+4)*5-6

? ? ? ? 后綴表達式:又被稱作逆波蘭法,其特定是將操作符置于操作樹之后,3 4 +5 * 6 -

前綴表達式:

? ? ? ? 從右至左掃描表達式,遇到數字時,將數字壓入棧堆,遇到運算符時,彈出棧頂的兩個數,用運算符堆他們做運算,并將結果入棧;重復上述操作直到表達式最左端,最后運算得出的值即為表達式的結果

中綴表達式:

? ? ? ? 按照平常時的習慣去計算即可

后綴表達式:

? ? ? ? 與前綴表達式類似,但是掃描順序是從左到右

1.3?操作符的優先級

? ? ? ? 指針最優,單目運算優于雙目運算,如正負號

? ? ? ? 先乘除(模),后加減

? ? ? ? 先算數運算,后移位運算,最后位運算:1《 3+2 & 7 相當于 (1<<(3+2)) & 7

? ? ? ? 邏輯運算最后運算

?1.4?過程控制????????

? ? ? ? 參數傳遞方式:

? ? ? ? 傳值調用,數據傳送是單向的

? ? ? ? 引用調用(又稱之為地址調用),數據傳送是雙向的

2.匯編、編譯、解釋系統

?2.1 編譯程序和解釋程序

高級語言和匯編語言編寫的程序稱為源程序,源程序不能直接在計算機上執行

? ? ? ? 如果源程序是匯編語言寫的,則需要一個稱為匯報程序的翻譯程序將其翻譯為目標程序,然后才能執行

? ? ? ? 如果源程序是為高級語言時,這個翻譯程序稱為編譯程序(編譯器)

? ? ? ? 按源程序中語句的執行順序,逐條翻譯并立即執行相關功能的處理程序,稱為解釋程序

? ? ? ? 編譯方式生成邏輯上與源程序等價的目標程序,解釋方式不生成;編譯程序不參與用戶程序的運行控制,而解釋程序需要參加;編譯方式下在機器上運行的目標程序完全獨立與源程序

? ? ? ? 將高級語言翻譯程目標程序的是編譯程序

????????匯編程序先將源程序中的偽代碼翻譯成機器代碼,然后再翻譯指令語句

? ? ? ? 使用匯編語言編寫的程序需要匯編程序翻譯程機器語言,匯編輸入的是用匯編語言書寫的源程序,輸出的是用機器語言表示的目標程序

2.2 程序的執行方式

1.編譯執行

? ? ? ?按編譯方式在計算機上執行高級語言編寫的程序,需經過兩個階段--編譯階段(把源程序翻譯為目標程序)和運行階段(真正執行此目標程序)

? ? ? ? 優點:執行效率低,占用資源小

? ? ? ? 缺點:兼容性差

? ? ? ? 編譯過程中為變量分配存儲單元所用的地址是邏輯地址,程序運行時再映射為物理地址

2.解釋執行

? ? ? ? 源程序的每個語句一經解釋就立即執行?

? ? ? ? 優點:可移植性較好、開發速度快、與用戶通訊方便

? ? ? ? 缺點:效率低

2.3?編譯程序工作過程?

? ? ? ? ?編譯程序的工作過程包括:詞法分析、語法分析、語義分析、中間代碼生成、代碼優化、目標代碼生成 (必須按順序)

? ? ? ?解釋方式包含詞法分析、語法分析、語義分析

? ? ? ?中間代碼生成和代碼優化不是每個編譯器都必須要有的

? ? ? 詞法分析階段:

????????輸入源程序,對構成源程序的字符串進行掃描和分解,識別出一個個單詞,刪掉無用的信息,報告分析時的錯誤

? ? ? ? 一個程序語言的基本語法符號分為五類:關鍵字、標識符、常量、運算符、界符等

? ? ? ? 詞法分析器所輸出的單詞符號常常表示為如下二元式:(單詞種別,單詞符號的屬性值),由于屬性值長度不固定,所以我們這邊主要放的是指針

? ? ? ? 描述詞法規則常用:正則式和有限自動機?? ? ? ??

? ? ? ? 語法分析階段:

? ? ? ? 詞法分析以單詞符號作為少數。分析單詞符號是否形成符號語法規則的語法單位,如表達式、賦值、循環等,判斷程序語句的形式是否正確

? ? ? ? 輸入:記號流

? ? ? ? 按語法規則分析每條語句是否有正確的邏輯結構

? ? ? ? 語法分析的方法:自上而下分析法、自下而上分析法?

? ? ? ? 編譯正確的程序必然不包括語法錯誤,如果出錯就叫編譯錯誤。

? ? ? ? 語義分析階段:

? ? ? ? 檢查源代碼是否存在語義錯誤,并收集類型信息以供后面的代碼生成階段使用,只有語法和語義都正確的源程序才能翻譯成正確的目標代碼

? ? ? ? 語義分析的主要工作是進行各類型分析和檢查。賦值語句的右端和左端的類型不匹配。表達式的除法為0等?????????

? ? ? ? 語義分析階段不可以發現程序中所有的語義錯誤;程序運行過程中陷入死循環,則可能的原因是程序中存在動態的語義錯誤

? ? ? ? 中間代碼生成階段:

? ? ? ? 中間代碼的生成階段的工作是根據語義分析的輸出生成中間代碼

? ? ? ? 中間代碼是一種簡單且有明確含義的記號系統,可以有若干個形式,常見的有逆波蘭記號(后綴式)、四元式、三元式和樹

? ? ? ? 他們的共同特征是代碼的方式與具體的機器無關,不需在指令結構上保存一致,可以提高移植性?

? ? ? ? 代碼優化階段:

? ? ? ? 代碼優化階段是對前階段產生的中間代碼進行變換或進行改造,目的是使生成的目標代碼更加高級,即省時間和省空間?

? ? ? ? 目標代碼生成階段:

? ? ? ? 是把中間代碼變換成特定機器上的絕對指令代碼或可重定位的指令代碼或匯編指令代碼。這是編譯的最后階段,它的工作與硬件系統的結構和指令的含義有關?

? ? ? ? 分配寄存器的工作在此階段,因為在這一階段中間代碼變換成特定機器上的絕對指令代碼、可重定位的指令代碼或匯編指令代碼

2.4 詞法分析階段

? ? ? ? (狀態轉換圖與正規表達式和正規集 )

狀態轉換圖:

? ? ? ? 功能:用于識別一定字符串

? ? ? ? 要求:狀態(即節點)個數有限,至少一個初始狀態若干個終止狀態,每條邊上一定要有字符

正規表達式與正規集(定義和運算):

? ? ? ? 狀態轉換圖可以構造詞法分析程序,但是屬于非形式化描述,正規表達式(簡稱正規式)是詞法分析的形式化表示方法。所謂形式化的方法,是指用一套帶有嚴格規定的符號體系來描述問題的方法

? ? ? ? 優點:更加清晰和準確

練習:

2.5?NFA

2.6 符號表

? ? ? ? 在高級語言程序進行編譯或者解釋處理的時候(編譯程序工作中),需要不斷收集、記錄和使用源程序中一些相關符號的類型和特征等信息,并將其存入符號表中????????

? ? ? ? 編譯過程中,對高級程序語句的翻譯主要考慮聲明語句和可執行語句。對聲明語句,主要是將所需要的信息正確地填入合理組織的符號表中,對可執行語句,則是翻譯成中間代碼或目標代碼

2.7 反編譯

? ? ? ? 編譯是將高級語言程序翻譯成機器語言程序(匯編形式或機器代碼形式),反編譯是編譯的逆過程。反編譯不能把可執行文件還原程高級語言代碼,只能轉換程功能上等價的匯編程序?

2.8 程序設計語言

? ? ? ? 程序設計語言基本成分:數據、運算、控制和傳輸等

? ? ? ? 程序設計語言控制成分:順序、選擇、循環

? ? ? ? 程序設計語言的語義:靜態語義(分析方法:語法制導翻譯;基本思想:將語言結構的語義以屬性的形式賦予代表此結構的文法符號,而屬性的計算以語義規則的形式賦予文法的產生式)和動態語義

2.9 計算機程序語言

? ? ? ? ?LISP是一種函數式編程語言(是第一個聲名系內函數式程序設計語言),是一種通用高級計算機程序語言,長期以來壟斷人工智能領域的應用。

? ? ? ? 系內過程式:C、Fortran

? ? ? ? 面向對象:java、C#、

? ? ? ? 弱類型語言(動態類型語言)

2.10 語言?

? ? ? ? 解釋型程序設計語言:JAVA、PYTHON、JAVASCRIPT

? ? ? ? 腳本語言(“擴建的語言”、動態語言):PYTHON、JAVASCRIPT

? ? ? ? 編譯型程序設計語言:C/C++(常用于進行系統級軟件的開發,現行操作系統都是均由C/C++開發的)

? ? ? ? 腳本語言是為了縮短編寫-編譯-鏈接-運行過程創建的計算機編程語言,用來控制軟件應用程序。腳本通常以文本如ASCII保存,只在被調用的時候進行解釋或編譯。腳本語言常用于描述格式化和鏈接,編程效率不如編譯型語言。腳本語言采用解釋方式實現。腳本語言一般運行在解釋器或虛擬機中,一般通過腳本引擎解釋執行,不產生獨立保存的目標程序。用以編寫獨立程序和快速腳本的語言.屬于動態語言,其程序結構可以在運行中改變.腳本語言一般是面向字符的(缺點:不方便調試,命名不規范會讀不懂/

? ? ? ? C語言是處于匯編語言和高級語言之間的一種中間型程序設計語言,常被稱為中級語言,既有高級語言的基本特點,也有匯編語言面向硬件和系統可以直接訪問硬件的功能,其屬于靜態語言,其所有成分可以在編譯時確定

? ? ? ? 腳本語言都是動態語言,而動態語言都是解釋型語言,不管他們是否面向對象的語言

2.11?HTML

?關于樣式表:? ? ?

????????? <!-- -->是注釋,不能定義CSS樣式表

? ? ? ? 用@import引入樣式表文件

? ? ? ? 在<head>標簽內定義CSS樣式

? ? ? ? <link>用來鏈接網上可訪問的CSS樣式文件

????????<align>對齊方式

? ? ? ? <mailto>可以定義一個指向電子郵件地址的超鏈接,通過該鏈接可以在internet發送電子郵件

? ? ? ? <HR>分割線

? ? ? ? <I>斜體

? ? ? ? <vlink>顯示鏈接被點擊之后的顏色

? ? ? ? <alink>表示正在被點擊的鏈接的顏色

? ? ? ? background用于設置背景圖片的URL

? ? ? ? bgcolor用以設置文檔整體背景顏色

? ? ? ? tr表示行

? ? ? ? col表示列

? ? ? ? td是單元格

2.12 標記語言

? ? ? ? HTML:超文本標記語言,用于互聯網的信息展示。用HTML編寫的財務部稱為HTML文檔,它能獨立于各種操作系統平臺。HTML是純文本文檔,可以使用記事本,寫字板等編輯工具來編寫HTML,他們需要通過WWW瀏覽器解釋并顯示效果

? ? ? ? XML是可拓展的標記語言。1.0標準發布后被認為是繼HTML和JAVA編程語言之后的又一個INTERNET技術。XML豐富了HTML的描述功能,可以描述非常復雜 web頁面,如復雜的數學表達式、化學方程式等,XML的特點是結構化、自描述、可拓展瀏覽器自適應等

? ? ? ? WML是用于WAP的標記語言,其語法與XML一樣,是XML的子集

XML語法規范:

? ? ? ? 文檔第一行必須聲明該文件是XML文件以及它所使用的XML規范版本,在文件前面不能夠有其他元素或注釋

? ? ? ? 所有XML文檔必須有一個根元素(且只能有一個),XML文檔的第一個元素就是根元素

? ? ? ? 所有XML文檔都必須包含一個單獨的標記來定義,所有其他元素必須成對在根元素中嵌套

? ? ? ? 所有的元素都可以有子元素,子元素必須正確的嵌套在父元素之間

2.13?傳值傳遞傳與引用

傳值傳遞:

? ? ? ? 傳遞方向:單方向

? ? ? ? 傳遞內容:實參的值(可以是變量,函數調用,也可以是常量和表達式

????????

引用傳遞:

? ? ? ? 傳遞方向:雙方向

????????傳遞內容:實參的地址(要求實參一定要有地址)

2.14?其他

? ? ? ? 程序中常量的值在運行的時候不能改變,變量可以;變量具有相應的存儲單元,常量沒有;可以對常量賦值,不能對常量賦值

? ? ? ? C語言中全局變量的存儲空間在靜態數據區分配,變量是內存空間的抽象

? ? ? ? 變量常量都具有類型屬性? ??

? ? ? ? 程序運行時用戶內存空間一般劃分為代碼區、靜態數據區、動態數據區(棧區和堆區)

? ? ? ? 對鏈表進行定義和運算時,數據空間必須采用堆存儲分配策略

????????

? ? ? ? 函數體為空時,在運行時會出現動態語義錯誤

? ? ? ? 強/弱類型指的是語言類型的類型檢查的嚴格程度

? ? ? ? 動態類型和靜態類型是指變量與類型的綁定方法

? ? ? ? 弱類型相對于強類型來說類型檢查不嚴格,比如運行變量類型的隱式轉換,運行強制類型轉換等

? ? ? ? 靜態類型指編譯源程序期間執行檢查,動態類型指編譯器(虛擬機)在重新運行時執行類型檢查。簡單來說,在聲名一個變量之后,不能改變其類型的語言,是靜態類型,能隨時改變其類型的語言,就是動態類型

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/17419.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/17419.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/17419.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

numpy-mkl的下載地址

不要使用pip3直接在終端安裝&#xff0c;因為pip3默安裝的是numpy&#xff0c;而不是numpymkl。 采用在第三方庫中手動下載后&#xff0c;再安裝的方式。 第三方庫網址&#xff1a;https://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy 如果不能進入就可以選擇去git里面&#x…

(三)MobaXterm、VSCode、Pycharm ssh連接服務器并使用

背景&#xff1a;根據前兩篇文章操作完成后&#xff0c; 手把手教學&#xff0c;一站式安裝ubuntu及配置服務器-CSDN博客 手把手教學&#xff0c;一站式教你實現服務器&#xff08;Ubuntu&#xff09;Anaconda多用戶共享-CSDN博客 課題組成員每人都有自己的帳號了&#xff0…

嵌入式0基礎開始學習 Ⅲ Linux基礎(3)正則表達式

0.問題引入 字符串是計算機應用中最為廣泛的處理對象之一(瀏覽器&#xff0c;xml文件&#xff0c;代碼) 并且字符串的組合規則形式各種各樣&#xff0c;如&#xff1a; 數字字符串 email字符串 IP地址字符串 網址 …

互聯網政務應用安全管理規定:使用安全連接方式訪問

前幾日&#xff0c;由中央網絡安全和信息化委員會辦公室、中央機構編制委員會辦公室、工業和信息化部、公安部等4部門聯合制定的《互聯網政務應用安全管理規定》&#xff08;以下簡稱規定&#xff09;發布了&#xff0c;規定定義了互聯網政務應用&#xff0c;也對互聯網政務應用…

Android數據緩存框架 - 內存數據載體從LiveData到StateFlow

引言&#xff1a;所有成功者的背后&#xff0c;都有一份艱苦的歷程&#xff0c;不要只看到了人前的風光&#xff0c;而低估了他們背后所付出的努力。 隨著flow到流行度越來越高&#xff0c;有開發者呼吁我使用flow&#xff0c;于是我就如你們所愿&#xff0c;新增了StateFlow作…

智能時代下,人機交互和虛擬現實的機遇和挑戰

智能時代下,人機交互和虛擬現實的機遇和挑戰

多態(C++)

多態(C) 本文如果有錯誤或者不足的地方&#xff0c;希望各位大佬多多指點。 【本文目錄】 1.多態的概念2.多態的定義及實現3.抽象類4.多態的原理5.單繼承和多繼承的虛函數表 1.多態的概念 多態的概念就是&#xff1a;多種形態 多態就是可以有多種的形態。不同的身份去實現同一…

【Leetcode 160】環形鏈表——雙指針,細節講解

題目 給你一個鏈表的頭節點 head &#xff0c;判斷鏈表中是否有環。 如果鏈表中有某個節點&#xff0c;可以通過連續跟蹤 next 指針再次到達&#xff0c;則鏈表中存在環。 為了表示給定鏈表中的環&#xff0c;評測系統內部使用整數 pos 來表示鏈表尾連接到鏈表中的位置&#…

RTSP/Onvif安防視頻監控云平臺EasyNVR重啟后通道在線視頻無法播放,接口報錯502是什么原因?

EasyNVR安防視頻云平臺是旭帆科技TSINGSEE青犀旗下支持RTSP/Onvif協議接入的安防監控流媒體視頻云平臺。平臺具備視頻實時監控直播、云端錄像、云存儲、錄像檢索與回看、告警等視頻能力&#xff0c;能對接入的視頻流進行處理與多端分發&#xff0c;包括RTSP、RTMP、HTTP-FLV、W…

hypack如何采集多波束數據?(下)

多波束測量模塊 1&#xff09;記錄多波束和輔助傳感器的數據&#xff1b; 2&#xff09;顯示實時改正后的數據和數據質量信息。 ?編輯? 測量準備 1&#xff09;設置大地測量參數和硬件設置&#xff1b; 2&#xff09;計劃測線 計劃測線是一定間距的平行線&#xff0c;…

微軟聯手清華,AI注釋讓文本到圖像生成更符合人類偏好

獲取本文論文原文PDF&#xff0c;請在公眾號【AI論文解讀】留言&#xff1a;論文解讀 摘要 本研究展示了利用人類偏好數據集來精細調整文本到圖像生成模型的潛力&#xff0c;增強了生成圖像與文本提示之間的一致性。盡管取得了進展&#xff0c;現有的人類偏好數據集要么構建成…

掌控安全CTF-2024年5月擂臺賽-WP(部分)

MISC ez_Misc 題目給了一個加密的壓縮包和一個文本文檔&#xff0c;首先我們先來看文本的內容&#xff0c;如下&#xff1a; 很容易看出&#xff0c;0寬隱寫&#xff0c;用PuzzleSolver梭哈一下&#xff0c;發現了&#xff1a;Thi3 is n0t 2 hint 又在文本中發現一個特征&…

【2024】高校網絡安全管理運維賽

比賽時間&#xff1a;2024-05-06 Re-easyre 基本的base64換表&#xff0c;用CyberChef解密 Re-babyre 進入主函數&#xff0c;發現輸入四次 看一下就知道是大數求解 (當初寫的時候差不多 不知道為什么第四個總是算錯…) from z3 import *s Solver() # 設置一個解方程的類…

中心滲透Ⅱ

cs與msf權限傳遞以及mimikatz抓取win2012明文密碼 使用Cobalt Strike抓取win2012明文密碼&#xff0c;將會話傳遞到Metasploit Framework上 1.cs生成木馬并使目標服務器中馬 建立監聽生成木馬 2.抓取目標主機的明文密碼 通過修改注冊表來讓Wdigest Auth保存明文口令 shell …

技術就緒度

技術就緒度&#xff08;Technology Readiness Level&#xff0c;簡稱TRL&#xff09;這個術語中的每個字符可以這樣理解&#xff1a; 技術&#xff08;Technology&#xff09;&#xff1a;指的是正在研發或評估的具體的技術、工具、材料或方法。這可以是一套軟件程序、一個物理…

一分鐘揭秘面試官真實意圖,穩拿offer的面試秘訣!

想要在面試中脫穎而出&#xff0c;順利獲得心儀的offer嗎&#xff1f;那么&#xff0c;你需要了解面試官背后的潛臺詞。通過解析這些潛臺詞&#xff0c;你將能更準確地把握面試官的期望&#xff0c;并給出他們最喜歡的回答。下面&#xff0c;就讓我們一起揭開這層神秘的面紗&am…

深入pandas:數據分析

目錄 前言 第一點&#xff1a;導入模塊 第二點&#xff1a;準備數據 第三點&#xff1a;簡單的分析數據 第四點&#xff1a;【重點】數據透支 總結 前言 在數據分析與挖掘的領域&#xff0c;了解如何使用工具和方法來探索數據是至關重要的。本文將探討如何利用Python中的…

C語言常用字符串處理函數

C語言中包含了很多對字符串處理的函數,要使用這些函數&#xff0c; 首先需要導入頭文件#include <string.h> 1. strlen() -- 計算字符串長度 原型: size_t strlen(char const *string); 例: char *str "abcde"; size_t len strlen(str); // 結果為…

【DevOps】Elasticsearch在Ubuntu 20.04上的安裝與配置:詳細指南

目錄 一、ES 簡介 1、核心概念 2、工作原理 3、 優勢 二、ES 在 Ubuntu 20.04 上的安裝 1、安裝 Java 2、下載 ES 安裝包 3、創建 ES 用戶 4 、解壓安裝包 5、 配置 ES 6、 啟動 ES 7、驗證安裝 三、ES 常用命令 1、創建索引 2、 插入文檔 3、查詢文檔 四、ES…

1.6 分組延時,丟失和吞吐量

分組丟失和延時是怎樣發生的&#xff1f; 在路由器緩沖區的分組隊列 ? 分組到達鏈路的速率超過了鏈路輸出的能力 ? 分組等待排到隊頭、被傳輸 分組排隊&#xff0c;傳輸分組&#xff08;延時&#xff09; 分組到達路由器&#xff0c;沒有可用的隊列&#xff0c;則該分組被丟…