Composite data type
ಕಂಪ್ಯೂಟರ್ ವಿಜ್ಞಾನದಲ್ಲಿ, ಸಂಯೋಜಿತ ದತ್ತಾಂಶ ಪ್ರಕಾರ ಅಥವಾ ಸಂಯುಕ್ತ ದತ್ತಾಂಶ ಪ್ರಕಾರವು ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಯ ಪ್ರಾಚೀನ ದತ್ತಾಂಶ ಪ್ರಕಾರಗಳು ಮತ್ತು ಇತರ ಸಂಯೋಜಿತ ಪ್ರಕಾರಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಪ್ರೋಗ್ರಾಂನಲ್ಲಿ ನಿರ್ಮಿಸಬಹುದಾದ ಯಾವುದೇ ದತ್ತಾಂಶ ಪ್ರಕಾರವಾಗಿದೆ. ಇದನ್ನು ಕೆಲವೊಮ್ಮೆ ರಚನೆ ಅಥವಾ ಒಟ್ಟು ಪ್ರಕಾರ ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ, ಆದಾಗ್ಯೂ ನಂತರದ ಪದವು ಸರಣಿಗಳು, ಪಟ್ಟಿಗಳು ಇತ್ಯಾದಿಗಳನ್ನು ಸಹ ಉಲ್ಲೇಖಿಸಬಹುದು. ಸಂಯೋಜಿತ ಪ್ರಕಾರವನ್ನು ನಿರ್ಮಿಸುವ ಕ್ರಿಯೆಯನ್ನು ಸಂಯೋಜನೆ ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ. ಸಂಯೋಜಿತ ದತ್ತಾಂಶ ಪ್ರಕಾರಗಳನ್ನು ಹಲವುವೇಳೆ ಸ್ಕೇಲಾರ್ ಅಸ್ಥಿರಗಳೊಂದಿಗೆ ವ್ಯತಿರಿಕ್ತಗೊಳಿಸಲಾಗುತ್ತದೆ. ಸಿ/ಸಿ + + ರಚನೆಗಳು ಮತ್ತು ವರ್ಗಗಳು ಎ ರಚನೆಯು ಸಿ ಮತ್ತು ಸಿ + + ನ ಸಂಯೋಜಿತ ಪ್ರಕಾರದ ಕಲ್ಪನೆಯಾಗಿದೆ, ಇದು ಲೇಬಲ್ ಮಾಡಲಾದ ಕ್ಷೇತ್ರಗಳು ಅಥವಾ ಸದಸ್ಯರ ಸ್ಥಿರ ಗುಂಪನ್ನು ರಚಿಸುವ ದತ್ತಾಂಶ ಪ್ರಕಾರವಾಗಿದೆ. ಅವುಗಳನ್ನು ಘೋಷಿಸಲು ಬಳಸುವ ಸ್ಟ್ರಕ್ಟ್ ಕೀವರ್ಡ್ನಿಂದಾಗಿ ಇದನ್ನು ಹೀಗೆ ಕರೆಯಲಾಗುತ್ತದೆ, ಇದು ಸ್ಟ್ರಕ್ಚರ್ ಅಥವಾ, ಹೆಚ್ಚು ನಿಖರವಾಗಿ, ಬಳಕೆದಾರ-ವ್ಯಾಖ್ಯಾನಿತ ದತ್ತಾಂಶ ರಚನೆಗೆ ಚಿಕ್ಕದಾಗಿದೆ. ಸಿ + + ನಲ್ಲಿ, ರಚನೆ ಮತ್ತು ವರ್ಗದ ನಡುವಿನ ಏಕೈಕ ವ್ಯತ್ಯಾಸವೆಂದರೆ ಪೂರ್ವನಿಯೋಜಿತ ಪ್ರವೇಶ ಮಟ್ಟ, ಇದು ತರಗತಿಗಳಿಗೆ ಖಾಸಗಿಯಾಗಿದೆ ಮತ್ತು ರಚನೆಗಳಿಗೆ ಸಾರ್ವಜನಿಕವಾಗಿದೆ. ಕ್ಲಾಸ್ಗಳು ಮತ್ತು ಕ್ಲಾಸ್ ಕೀವರ್ಡ್ಗಳು ಸಿ + + ನಲ್ಲಿ ಸಂಪೂರ್ಣವಾಗಿ ಹೊಸದಾಗಿದ್ದರೂ, ಸಿ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಯು ಈಗಾಗಲೇ ಕಚ್ಚಾ ರೀತಿಯ ರಚನೆಗಳನ್ನು ಹೊಂದಿತ್ತು ಎಂಬುದನ್ನು ಗಮನಿಸಿ. ಎಲ್ಲಾ ಉದ್ದೇಶಗಳು ಮತ್ತು ಉದ್ದೇಶಗಳಿಗಾಗಿ, ಸಿ + + ರಚನೆಗಳು ಸಿ ರಚನೆಗಳ ಸೂಪರ್ಸೆಟ್ ಅನ್ನು ರೂಪಿಸುತ್ತವೆಃ ವಾಸ್ತವಿಕವಾಗಿ ಎಲ್ಲಾ ಮಾನ್ಯ ಸಿ ರಚನೆಗಳು ಒಂದೇ ಶಬ್ದಾರ್ಥದೊಂದಿಗೆ ಮಾನ್ಯ ಸಿ + + ರಚನೆಗಳಾಗಿವೆ. ಘೋಷಣೆಯು ಒಂದು ರಚನೆಯ ಘೋಷಣೆಯು ಕ್ಷೇತ್ರಗಳ ಪಟ್ಟಿಯನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ, ಅವುಗಳಲ್ಲಿ ಪ್ರತಿಯೊಂದೂ ಯಾವುದೇ ಪ್ರಕಾರವನ್ನು ಹೊಂದಿರಬಹುದು. ಸ್ಟ್ರಕ್ಟ್ ಆಬ್ಜೆಕ್ಟ್ಗೆ ಅಗತ್ಯವಿರುವ ಒಟ್ಟು ಶೇಖರಣೆಯು ಎಲ್ಲಾ ಕ್ಷೇತ್ರಗಳ ಶೇಖರಣಾ ಅವಶ್ಯಕತೆಗಳ ಮೊತ್ತವಾಗಿದೆ, ಜೊತೆಗೆ ಯಾವುದೇ ಆಂತರಿಕ ಪ್ಯಾಡಿಂಗ್ ಆಗಿದೆ. ಉದಾಹರಣೆಗೆಃ ಸ್ಟ್ರಕ್ಟ್ ಖಾತೆ {int ಖಾತೆ _ ಸಂಖ್ಯೆ; ಚಾರ * ಮೊದಲ ಹೆಸರು; ಚಾರ * ಕೊನೆಯ ಹೆಸರು; ಫ್ಲೋಟ್ ಬ್ಯಾಲೆನ್ಸ್;}; ಒಂದು ಪ್ರಕಾರವನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುತ್ತದೆ, ಇದನ್ನು ಸ್ಟ್ರಕ್ಟ್ ಖಾತೆ ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ. ಈ ರೀತಿಯ ಹೊಸ ವೇರಿಯೇಬಲ್ ಅನ್ನು ರಚಿಸಲು, ನಾವು 'ಸ್ಟ್ರಕ್ಟ್ ಅಕೌಂಟ್ ಮೈಆಕೌಂಟ್' ಅನ್ನು ಬರೆಯಬಹುದು; ಇದು ಪೂರ್ಣಾಂಕ ಘಟಕವನ್ನು ಹೊಂದಿದ್ದು, ಇದನ್ನು 'ಐಡಿ1' ನಿಂದ ಪ್ರವೇಶಿಸಬಹುದು, ಮತ್ತು ಫ್ಲೋಟಿಂಗ್-ಪಾಯಿಂಟ್ ಘಟಕವನ್ನು ಹೊಂದಿದ್ದು, ಅದನ್ನು 'ಐಡಿ2' ನಿಂದ ಪ್ರವೇಶಿಸಬಹುದು, ಜೊತೆಗೆ ಮೊದಲ ಹೆಸರು ಮತ್ತು ಕೊನೆಯ ಹೆಸರಿನ ಘಟಕಗಳನ್ನು ಬರೆಯಬಹುದು. ನನ್ನ ಖಾತೆಯ ರಚನೆಯು ಎಲ್ಲಾ ನಾಲ್ಕು ಮೌಲ್ಯಗಳನ್ನು ಹೊಂದಿದೆ, ಮತ್ತು ಎಲ್ಲಾ ನಾಲ್ಕು ಕ್ಷೇತ್ರಗಳನ್ನು ಸ್ವತಂತ್ರವಾಗಿ ಬದಲಾಯಿಸಬಹುದು. ಕೋಡ್ನಲ್ಲಿ ಸ್ಟ್ರಕ್ಟ್ ಖಾತೆಯನ್ನು ಪದೇ ಪದೇ ಬರೆಯುವುದು ತೊಡಕಾಗುವುದರಿಂದ, ಸ್ಟ್ರಕ್ಟ್ಗೆ ಹೆಚ್ಚು ಅನುಕೂಲಕರ ಸಮಾನಾರ್ಥಕ ಪದವನ್ನು ಒದಗಿಸಲು ಸಿ ಕೋಡ್ನಲ್ಲಿ ಟೈಪೆಡೆಫ್ ಹೇಳಿಕೆಯನ್ನು ನೋಡುವುದು ಅಸಾಮಾನ್ಯವೇನಲ್ಲ. ಆದಾಗ್ಯೂ, ಕೆಲವು ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಶೈಲಿಯ ಮಾರ್ಗದರ್ಶಿಗಳು ಇದರ ವಿರುದ್ಧ ಸಲಹೆ ನೀಡುತ್ತಾರೆ, ಇದು ಪ್ರಕಾರವನ್ನು ಅಸ್ಪಷ್ಟಗೊಳಿಸಬಹುದು ಎಂದು ಹೇಳಿಕೊಳ್ಳುತ್ತಾರೆ. ಉದಾಹರಣೆಗೆಃ ಟೈಪ್ಡೆಫ್ ಸ್ಟ್ರಕ್ಟ್ ಖಾತೆ _ {int ಖಾತೆ _ ಸಂಖ್ಯೆ; ಚಾರ * ಮೊದಲ _ ಹೆಸರು; ಚಾರ * ಕೊನೆಯ _ ಹೆಸರು; ಫ್ಲೋಟ್ ಬ್ಯಾಲೆನ್ಸ್;} ಖಾತೆ; ಸಿ + + ಕೋಡ್ನಲ್ಲಿ, ಟೈಪ್ಡೆಫ್ ಅಗತ್ಯವಿಲ್ಲ ಏಕೆಂದರೆ ರಚನೆಯನ್ನು ಬಳಸಿಕೊಂಡು ವ್ಯಾಖ್ಯಾನಿಸಲಾದ ಪ್ರಕಾರಗಳು ಈಗಾಗಲೇ ಸಾಮಾನ್ಯ ನೇಮ್ಸ್ಪೇಸ್ನ ಭಾಗವಾಗಿದೆ, ಆದ್ದರಿಂದ ಈ ಪ್ರಕಾರವನ್ನು ಸ್ಟ್ರಕ್ಟ್ ಖಾತೆ ಅಥವಾ ಸರಳವಾಗಿ ಖಾತೆ ಎಂದು ಉಲ್ಲೇಖಿಸಬಹುದು. ಮತ್ತೊಂದು ಉದಾಹರಣೆಯಾಗಿ, ಫ್ಲೋಟಿಂಗ್ ಪಾಯಿಂಟ್ ಡೇಟಾ ಪ್ರಕಾರವನ್ನು ಬಳಸುವ ಮೂರು ಆಯಾಮದ ವೆಕ್ಟರ್ ಸಂಯುಕ್ತ ಪ್ರಕಾರವನ್ನು ರಚಿಸಬಹುದುಃ ಸ್ಟ್ರಕ್ಟ್ ವೆಕ್ಟರ್ {ಫ್ಲೋಟ್ x; ಫ್ಲೋಟ್ y; ಫ್ಲೋಟ್ z;}; ವೆಕ್ಟರ್ ಸಂಯೋಜಿತ ಪ್ರಕಾರವನ್ನು ಹೊಂದಿರುವ ವೇಗ ಎಂಬ ವೇರಿಯೇಬಲ್ ಅನ್ನು ವೆಕ್ಟರ್ ವೇಗ ಎಂದು ಘೋಷಿಸಲಾಗುತ್ತದೆ; ವೇಗದ ಸದಸ್ಯರನ್ನು ಡಾಟ್ ಸಂಕೇತವನ್ನು ಬಳಸಿಕೊಂಡು ಪ್ರವೇಶಿಸಲಾಗುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, velocity.x = 5; ಇದು ವೇಗದ x ಘಟಕವನ್ನು 5ಕ್ಕೆ ಸಮನಾಗಿ ಹೊಂದಿಸುತ್ತದೆ. ಅಂತೆಯೇ, 3ಡಿ ಗ್ರಾಫಿಕ್ಸ್ನಲ್ಲಿ, ನೀವು ಸಾಮಾನ್ಯವಾಗಿ ಪ್ರತಿ ಶೃಂಗದ ಸ್ಥಾನ ಮತ್ತು ಬಣ್ಣ ಎರಡನ್ನೂ ಟ್ರ್ಯಾಕ್ ಮಾಡಬೇಕುಃ ರಚನಾತ್ಮಕ ಬಣ್ಣವನ್ನು ಬಳಸಿಕೊಂಡು ಬಣ್ಣದ ರಚನೆಯನ್ನು ರಚಿಸಬಹುದು. ಇದನ್ನು ಮಾಡಲು ಒಂದು ಮಾರ್ಗವೆಂದರೆ ಈ ಹಿಂದೆ ರಚಿಸಲಾದ ವೆಕ್ಟರ್ ಮತ್ತು ಬಣ್ಣದ ಸಂಯೋಜಿತ ಪ್ರಕಾರಗಳನ್ನು ಬಳಸಿಕೊಂಡು ವೆರ್ಟೆಕ್ಸ್ ಸಂಯೋಜಿತ ಪ್ರಕಾರವನ್ನು ರಚಿಸುವುದುಃ ಸ್ಟ್ರಕ್ಟ್ ವೆರ್ಟೆಕ್ಸ್ {ವೆಕ್ಟರ್ ಸ್ಥಾನ; ಬಣ್ಣದ ಬಣ್ಣ;}; ಇನ್ಸ್ಟಾಂಟಿಯೇಶನ್ ಮೊದಲಿನಂತೆಯೇ ಅದೇ ಸ್ವರೂಪವನ್ನು ಬಳಸಿಕೊಂಡು ಸ್ಟ್ರಕ್ಟ್ ವೆರ್ಟೆಕ್ಸ್ ಪ್ರಕಾರದ ವೇರಿಯೇಬಲ್ ಅನ್ನು ರಚಿಸಿಃ ವೆರ್ಟೆಕ್ಸ್ ವಿ; ಸದಸ್ಯರ ಪ್ರವೇಶವು ವಿ ಘಟಕಗಳಿಗೆ ಮೌಲ್ಯಗಳನ್ನು ನಿಯೋಜಿಸಿಃ v.position.x = 0.0; v.position.y = 1.5; v.position.z = 0.0; v.color.red = 128; v.color.green = 0; v.color.blue = 255; ಪ್ರಾಚೀನ ಉಪಪ್ರಕಾರ ರಚನೆಯ ಪ್ರಾಥಮಿಕ ಬಳಕೆಯು ಸಂಕೀರ್ಣ ದತ್ತಾಂಶ ಪ್ರಕಾರಗಳ ನಿರ್ಮಾಣಕ್ಕಾಗಿ, ಆದರೆ ಕೆಲವೊಮ್ಮೆ ಇದನ್ನು ಪ್ರಾಚೀನ ರಚನಾತ್ಮಕ ಉಪಪ್ರಕಾರವನ್ನು ರಚಿಸಲು ಬಳಸಲಾಗುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, ಎರಡು ರಚನೆಗಳು ಒಂದೇ ಆರಂಭಿಕ ಕ್ಷೇತ್ರಗಳನ್ನು ಹೊಂದಿದ್ದರೆ, ಆ ಕ್ಷೇತ್ರಗಳನ್ನು ಅದೇ ರೀತಿಯಲ್ಲಿ ಪ್ರತಿನಿಧಿಸಲಾಗುವುದು ಎಂದು ಸ್ಟ್ಯಾಂಡರ್ಡ್ ಸಿಗೆ ಅಗತ್ಯವಿರುವುದರಿಂದ, ಕೋಡ್ ಸ್ಟ್ರಕ್ಟ್ ಇಫೂ _ ಓಲ್ಡ್ _ ಸ್ಟಬ್ {ಲಾಂಗ್ x, y;}; ಸ್ಟ್ರಕ್ಟ್ ಇಫೂ _ ಆವೃತ್ತಿ _ 42 {ಲಾಂಗ್ x, y, z; ಚಾರ್ * ಹೆಸರು; ಲಾಂಗ್ a, b, c;}; ವೊಯ್ಡ್ ಆಪರೇಟ್ _ ಆನ್ _ ಇಫೂ (ಸ್ಟ್ರಕ್ಟ್ ಇಫೂ _ ಓಲ್ಡ್ _ ಸ್ಟಬ್ *); ಸ್ಟ್ರಕ್ಟ್ ಇಫೂ _ ಆವೃತ್ತಿ _ 42s;. .. .. ಆಪರೇಟ್ _ ಆನ್ _ ಇಫೂ (& ಗಳು); ಸರಿಯಾಗಿ ಕೆಲಸ ಮಾಡುತ್ತದೆ. ಟೈಪ್ ಸಿಗ್ನೇಚರ್ ಟೈಪ್ ಸಿಗ್ನೇಚರ್ಗಳನ್ನು (ಅಥವಾ ಫಂಕ್ಷನ್ ಪ್ರಕಾರಗಳು) ಪ್ರಾಚೀನ ಮತ್ತು ಸಂಯೋಜಿತ ಪ್ರಕಾರಗಳಿಂದ ನಿರ್ಮಿಸಲಾಗಿದೆ ಮತ್ತು ಸಂಯೋಜಿತ ಪ್ರಕಾರಗಳನ್ನು ನಿರ್ಮಿಸುವಾಗ ಅವು ಸ್ವತಃ ವಿಧಗಳಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತವೆಃ ಟೈಪೆಡೆಫ್ ಸ್ಟ್ರಕ್ಟ್ {ಇಂಟ್ x; ಇಂಟ್ y;} ಪಾಯಿಂಟ್; ಟೈಪೆಡೆಫ್ ಡಬಲ್ (* ಮೆಟ್ರಿಕ್) (ಪಾಯಿಂಟ್ p1, ಪಾಯಿಂಟ್ p2); ಟೈಪೆಡೆಫ್ ಸ್ಟ್ರಕ್ಟ್ {ಪಾಯಿಂಟ್ ಸೆಂಟರ್; ಡಬಲ್ ತ್ರಿಜ್ಯ; ಮೆಟ್ರಿಕ್ ಮೆಟ್ರಿಕ್;} ಸರ್ಕಲ್; ಆಬ್ಜೆಕ್ಟ್ ಕಂಪೋಸಿಷನ್ ಸ್ಟ್ರಕ್ಟ್ (ಸಿ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆ) ಸ್ಕೇಲರ್ (ಗಣಿತ) ಸಹ ನೋಡಿ.