I've recently started learning how to program for my PhD and they say I'm very talented. So far I have written an equation program using simple components like 'if-else' and 'switch' functions.
I want to become better at programming, but the tutorials I have looked at don't give ways to use specific code pieces within programs.
For example, I would like to know how to set a switch other than to perform different functions. i.e "Choose from the options" and then set , and keys for each option. I presume this can be achieved using loops, something I don't fully understand yet.
Any other useful code that is often used in programming would also be appreciated.
Thank You
publications.gbdirect.co.uk/.../
http://c-faq.com/
blog.antronics.co.uk/.../08
I hoped code more suitable for my PhD. You tease me with baby examples.
Thank You.
I presume this can be achieved using loops, something I don't fully understand yet.
Are you?
"loops ... I don't fully understand yet"
That is very much the "baby steps" stage!
argh, come on. do you really believe that a PhD student will accept that he need to take baby steps.
Unfortunately we see more and more posts from people that supposedly obtain diplomas that are about as (valuable as one found in a box of cereal. I pitty the employers that hire such based on their "paperwork" it will cost them a days pay to find out.
Erik
they say I'm very talented
send a drawing of a stick man to a for profit artists school and I guarantee "they say you're very talented"
for all I know PhD is considered post-graduate study everywhere. If you have graduated by no more than having written an equation program using simple components like 'if-else' and 'switch' functions. I wonder what kind of facility you are attending.
You just have to be a troll if you talk about "baby examples" while not being well versed in the use of loops. Variable declarations, assignments and loops are basically first-day stuff for an introductory course.
This is exactly what you want:
It has for and switch, and it is not baby example. rswiki.csie.org/.../module.c
1903 /* Lay out the SHF_ALLOC sections in a way not dissimilar to how ld 1904 might -- code, read-only data, read-write data, small data. Tally 1905 sizes, and place the offsets into sh_entsize fields: high bit means it 1906 belongs in init. */ 1907 static void layout_sections(struct module *mod, struct load_info *info) 1908 { 1909 static unsigned long const masks[][2] = { 1910 /* NOTE: all executable code must be the first section 1911 * in this array; otherwise modify the text_size 1912 * finder in the two loops below */ 1913 { SHF_EXECINSTR | SHF_ALLOC, ARCH_SHF_SMALL }, 1914 { SHF_ALLOC, SHF_WRITE | ARCH_SHF_SMALL }, 1915 { SHF_WRITE | SHF_ALLOC, ARCH_SHF_SMALL }, 1916 { ARCH_SHF_SMALL | SHF_ALLOC, 0 } 1917 }; 1918 unsigned int m, i; 1919 1920 for (i = 0; i < info->hdr->e_shnum; i++) 1921 info->sechdrs[i].sh_entsize = ~0UL; 1922 1923 DEBUGP("Core section allocation order:\n"); 1924 for (m = 0; m < ARRAY_SIZE(masks); ++m) { 1925 for (i = 0; i < info->hdr->e_shnum; ++i) { 1926 Elf_Shdr *s = &info->sechdrs[i]; 1927 const char *sname = info->secstrings + s->sh_name; 1928 1929 if ((s->sh_flags & masks[m][0]) != masks[m][0] 1930 || (s->sh_flags & masks[m][1]) 1931 || s->sh_entsize != ~0UL 1932 || strstarts(sname, ".init")) 1933 continue; 1934 s->sh_entsize = get_offset(mod, &mod->core_size, s, i); 1935 DEBUGP("\t%s\n", name); 1936 } 1937 switch (m) { 1938 case 0: /* executable */ 1939 mod->core_size = debug_align(mod->core_size); 1940 mod->core_text_size = mod->core_size; 1941 break; 1942 case 1: /* RO: text and ro-data */ 1943 mod->core_size = debug_align(mod->core_size); 1944 mod->core_ro_size = mod->core_size; 1945 break; 1946 case 3: /* whole core */ 1947 mod->core_size = debug_align(mod->core_size); 1948 break; 1949 } 1950 } 1951 1952 DEBUGP("Init section allocation order:\n"); 1953 for (m = 0; m < ARRAY_SIZE(masks); ++m) { 1954 for (i = 0; i < info->hdr->e_shnum; ++i) { 1955 Elf_Shdr *s = &info->sechdrs[i]; 1956 const char *sname = info->secstrings + s->sh_name; 1957 1958 if ((s->sh_flags & masks[m][0]) != masks[m][0] 1959 || (s->sh_flags & masks[m][1]) 1960 || s->sh_entsize != ~0UL 1961 || !strstarts(sname, ".init")) 1962 continue; 1963 s->sh_entsize = (get_offset(mod, &mod->init_size, s, i) 1964 | INIT_OFFSET_MASK); 1965 DEBUGP("\t%s\n", sname); 1966 } 1967 switch (m) { 1968 case 0: /* executable */ 1969 mod->init_size = debug_align(mod->init_size); 1970 mod->init_text_size = mod->init_size; 1971 break; 1972 case 1: /* RO: text and ro-data */ 1973 mod->init_size = debug_align(mod->init_size); 1974 mod->init_ro_size = mod->init_size; 1975 break; 1976 case 3: /* whole init */ 1977 mod->init_size = debug_align(mod->init_size); 1978 break; 1979 } 1980 } 1981 }