嵌套

嵌套

嵌套,指的是在已有的表格、圖像或圖層中再加進去一個或多個表格、圖像或圖層,亦或兩個物體有裝配關係時,將一個物體嵌入另一物體的方法。

基本介紹

  • 中文名:嵌套
  • 性質:方法
  • 特徵:在已有的表格、圖像或圖層中
  • 優點:加進去一個或多個表格、圖像
簡介,例子,嵌套表,介紹,舉例,特點,

簡介

可理解為鑲嵌、套用。在已有的表格、圖像、圖層或函式中再加進去一個或多個表格、圖像、圖層或函式,這種方法就叫做嵌套。
C語言中,所有的執行語句都只能出現在函式之中。同樣,函式的調用也只能出現在某函式的函式體內。函式的調用以兩種方式出現:函式的嵌套與函式的遞歸
C語言中,所有函式的定義都是互相平行和獨立的,一個函式的定義不能包含另一個函式的定義,即不允許函式的嵌套定義。但函式的調用可以通過用一個函式調用另一個函式來實現,這就形成了函式的嵌套調用!C語言不限制嵌套的個數和層數,這樣我們就可以自由,合理的組織程式的模組結構。

例子

例:利用公式e=1+1/(1!)+1/(2!)+1/(3!)+1/(4!)+...近似計算自然數e。近似的程度為n。
算法按兩層進行:
函式fac_v()計算1/(m!) (m=1,2,3,,,n);
函式cal_e()計算1+1/(1!)+1/(2!)+1/(3!)+1/(4!)+...+1/(n!),作為e的近似值。
函式cal_e()調用fac_v()獲得1/(m!) (m=1,2,3,,,n)的值,而主函式main則調用cal_v()得到自然數e的近似值。
程式如下:
#include<stdio.h>
main()
{
double cal_e(int);
int n;
printf("請輸入一個整數:");
scanf("%d",n);
printf("自然數e的近似值為%lf\n",cal_e(n));
}
double cal_e(int n)
{
double fac_v(int);
double e=1.0;
while(n)e+=fac_v(n--);
return(e);
}
double fac_v(int m)
{
double v=1.0;
while(m)v/=m--;
return (v);
}
在上例中每個函式(包括主函式)都很簡單清晰,整個程式執行的流程也很清楚。

嵌套表

介紹

嵌套表是表中之表。一個嵌套表是某些行的集合,它在主表中表示為其中的一列。對主表中的每一條記錄,嵌套表可以包含多個行。在某種意義上,它是在一個表中存儲一對多關係的一種方法。考查一個包含部門信息的表,在任何時間內每個部門會有很多項目正在實施。在一個嚴格的關係模型中,將需要建立兩個獨立的表departmentproject
嵌套表允許在department表中存放關於項目的信息。勿需執行聯合操作,就可以通過department表直接訪問項目表中的記錄。這種不經聯合而直接選擇數據的能力使得用戶對數據訪問更加容易。甚至在並沒有定義方法來訪問嵌套表的情況下,也能夠很清楚地把部門和項目中的數據聯繫在一起。在嚴格的關係模型中,department和project兩個表的聯繫需要通過外部關鍵字外鍵)關係才能實現。

舉例

假設有一個關於動物飼養員的表,希望其中具有他們飼養的動物的信息。用一個嵌套表,就可以在同一個表中存儲飼養員和其飼養的全部動物的信息。
1、創建類型animal_ty:此類型中,對於每個動物都包含有一個記錄,記載了其品種、名稱和出生日期信息。
CREATE TYPE animal_ty AS OBJECT (
breed varchar2(25),
name varchar2(25),
birthdate date);
2、創建animals_nt:此類型將用作一個嵌套表的基礎類型。
CREATE TYPE animals_nt as table of animal_ty;
3、創建表breeder:飼養員的信息表
create table breeder
(breedername varchar2(25),
animals animal_nt)
nested table animals store as animals_nt_tab;
4、向嵌套表中插入記錄
insert into breeder
values('mary',animal_nt(animal_ty('dog','butch','31-MAR-97'),
animal_ty('dog','rover','31-MAR-97'),
animal_ty('dog','julio','31-MAR-97')));
insert into breeder
values('jane',animal_nt(animal_ty('cat','an','31-MAR-97'),
animal_ty('cat','jame','31-MAR-97'),
animal_ty('cat','killer','31-MAR-97')));
commit;
5、查詢嵌套表
select name,birthdate from
table(select animals from breeder);
select name,birthdate from
table(select animals from breeder
where breedername=’mary’)
where name=’dog’;

特點

1、對象復用:如果編寫面向對象的代碼,就提高了重用以前編寫的代碼模組的機會。同樣,如果創建面向對象的資料庫對象,也就提高了資料庫對象能夠被重用的機會。
2、標準支持:如果創建標準的對象,那么它們被重用的機會就會提高。如果有多個套用或多個表使用同一資料庫對象集合,那么它就是既成事實的資料庫對象標準。
3、定義訪問路徑:對於每一個對象,用戶可定義在其上運行的過程和函式,從而可以使數據和訪問此數據的方法聯合起來。有了用這種方式定義的訪問路徑,就可以標準化數據訪問的方法並提高對象的可復用性。

相關詞條

熱門詞條

聯絡我們