A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Fundamentos de Programação Copyright, 2011 © Alexandre C. B. Ramos Prof. Dr. Alexandre C. B. Ramos INTRODUÇÃO A INFORMÁTICA O COMPUTADOR SISTEMA OPERACIONAL.

Apresentações semelhantes


Apresentação em tema: "Fundamentos de Programação Copyright, 2011 © Alexandre C. B. Ramos Prof. Dr. Alexandre C. B. Ramos INTRODUÇÃO A INFORMÁTICA O COMPUTADOR SISTEMA OPERACIONAL."— Transcrição da apresentação:

1 Fundamentos de Programação Copyright, 2011 © Alexandre C. B. Ramos Prof. Dr. Alexandre C. B. Ramos INTRODUÇÃO A INFORMÁTICA O COMPUTADOR SISTEMA OPERACIONAL O HARDWARE

2 I - Introdução à Informática 1. O Computador Quando falamos de computador, a primeira imagem que vem a nossa mente é o Hardware entretanto este, sozinho, não tem nenhuma utilidade.Quando falamos de computador, a primeira imagem que vem a nossa mente é o Hardware entretanto este, sozinho, não tem nenhuma utilidade. Para que possamos utilizar um computador é necessário que tenhamos tanto o equipamento quanto os programas, isto é, o Software.Para que possamos utilizar um computador é necessário que tenhamos tanto o equipamento quanto os programas, isto é, o Software.

3 2. Sistema Operacional Um Sistema Operacional - SO é um software que permite ao ser humano utilizar o hardware. Além de funcionar como interface homem/máquina, facilitando o uso do computador, o SO permite gerenciar os recursos básicos do computador (hardware, software e dados).

4 2.1 Qual a importância do SO para o aluno? Futuros Gerentes, Consultores Analistas de Sistemas: poderão ser solicitados a selecionar ou recomendar SO; eFuturos Gerentes, Consultores Analistas de Sistemas: poderão ser solicitados a selecionar ou recomendar SO; e Em outros casos: o conhecimento do funcionamento do SO facilitam o desenvolvimento de qualquer sistema, além do mais programadores eficientes devem pelo menos compreender a base do SO.Em outros casos: o conhecimento do funcionamento do SO facilitam o desenvolvimento de qualquer sistema, além do mais programadores eficientes devem pelo menos compreender a base do SO.

5 2.2 O Sistema Operacional e o usuário A partir da criação do SO, não mais existe a necessidade de o programador se envolver com a complexidade do hardware para poder trabalhar, ou seja, a A partir da criação do SO, não mais existe a necessidade de o programador se envolver com a complexidade do hardware para poder trabalhar, ou seja, a parte física do computador tornou-se transparente para o usuário, que passa a enxergar a máquina como sendo apenas o SO, como se o hardware não existisse. A essa visão modular e abstrata dá-se o nome de Máquina Virtual.

6 3. Hardware Um computador é constituído por um conjunto de componentes interligados: Um computador é constituído por um conjunto de componentes interligados: processadores, memória, registradores, além de outros dispositivos físicos. Esses componentes podem ser agrupados em três subsistemas básicos: UCP, Memória e Periféricos.

7 3.1 Unidade Central de Processamento - UCP Sua função é unificar o sistema controlando as funções realizadas por cada unidade funcional.Sua função é unificar o sistema controlando as funções realizadas por cada unidade funcional. A UCP também executa todos os programas do sistema que estão armazenados na memória principal.A UCP também executa todos os programas do sistema que estão armazenados na memória principal.

8 3.2 Memória Principal Ou (primária ou real), é a parte do computador onde são armazenadas as instruções e dados.Ou (primária ou real), é a parte do computador onde são armazenadas as instruções e dados. Ela é composta por unidades de acesso chamadas células, sendo cada célula composta por um determinado número de bits (binary digit). O bit é a unidade básica de memória, podendo assumir os valores 0 ou 1.Ela é composta por unidades de acesso chamadas células, sendo cada célula composta por um determinado número de bits (binary digit). O bit é a unidade básica de memória, podendo assumir os valores 0 ou 1.

9 3.2 Memória Principal Muitos computadores utilizam o byte (8 bits) como tamanho de célula, porém encontramos computadores com células de 16, 32, e 64 bits.Muitos computadores utilizam o byte (8 bits) como tamanho de célula, porém encontramos computadores com células de 16, 32, e 64 bits. O acesso ao conteúdo de uma célula é realizado através da especificação de um número chamado endereço. Quando um programa deseja ler ou escrever um dado numa célula, deve primeiro especificar qual o endereço de memória desejado, para depois realizar a operação.O acesso ao conteúdo de uma célula é realizado através da especificação de um número chamado endereço. Quando um programa deseja ler ou escrever um dado numa célula, deve primeiro especificar qual o endereço de memória desejado, para depois realizar a operação.

10 3.2 Memória Principal Quanto a volatilidade as memórias podem ser:Quanto a volatilidade as memórias podem ser: RAM - Random Access Memory, memória volátil e que constitui quase a totalidade de memória principal de um computador; eRAM - Random Access Memory, memória volátil e que constitui quase a totalidade de memória principal de um computador; e ROM - Read Only Memory, memória não volátil cujo o conteúdo já vem pré-gravado do fabricante e se mantém mesmo quando o computador é desligado. Uma variação da ROM é a EPROM- Erasable Programmable ROM, que permite a regravação após a exposição de luz ultravioleta.ROM - Read Only Memory, memória não volátil cujo o conteúdo já vem pré-gravado do fabricante e se mantém mesmo quando o computador é desligado. Uma variação da ROM é a EPROM- Erasable Programmable ROM, que permite a regravação após a exposição de luz ultravioleta.

11 4. Dispositivos de Entrada e Saída São dispositivos utilizados para permitir a comunicação entre o computador e o mundo externo. Através desses dispositivos, a UCP e a memória principal podem se comunicar, tanto com usuários quanto com memórias secundárias, a fim de realizar qualquer tipo de processamento.São dispositivos utilizados para permitir a comunicação entre o computador e o mundo externo. Através desses dispositivos, a UCP e a memória principal podem se comunicar, tanto com usuários quanto com memórias secundárias, a fim de realizar qualquer tipo de processamento.

12 4. Dispositivos de Entrada e Saída Os dispositivos de entrada e saída (E/S) podem ser divididos em duas categorias: 1. Dispositivos que são usados como memória secundária, como discos e fitas magnéticas, se caracterizam por armazenar de três a quatro vezes mais informações que a memória principal, são de baixo custo, mas possuem tempo de acesso de quatro a seis vezes maior que o tempo de acesso da memória principal. 1. Dispositivos que são usados como memória secundária, como discos e fitas magnéticas, se caracterizam por armazenar de três a quatro vezes mais informações que a memória principal, são de baixo custo, mas possuem tempo de acesso de quatro a seis vezes maior que o tempo de acesso da memória principal.

13 4. Dispositivos de Entrada e Saída 2. Dispositivos que servem como interface homem-máquina, como teclados, monitores de vídeo, impressoras, ploters entre outros. O desenvolvimento de interfaces mais amigáveis permite que as pessoas sem conhecimento específico sobre informática possam utilizar o computador.2. Dispositivos que servem como interface homem-máquina, como teclados, monitores de vídeo, impressoras, ploters entre outros. O desenvolvimento de interfaces mais amigáveis permite que as pessoas sem conhecimento específico sobre informática possam utilizar o computador.

14 II - Programação e solução de problemas Para que o computador possa ajudar a resolver os nossos problemas de uma forma eficiente devemos programa-lo. O objeto final da programação é um programa, que é a especificação da seqüência de passos que a máquina deve executar para alcançar a solução do problema. Para que o computador possa ajudar a resolver os nossos problemas de uma forma eficiente devemos programa-lo. O objeto final da programação é um programa, que é a especificação da seqüência de passos que a máquina deve executar para alcançar a solução do problema.

15 1. Usando o Computador A tarefa de programação pode compreender os seguintes passos:A tarefa de programação pode compreender os seguintes passos: 1. Descrever o problema de uma forma clara e precisa, especificando bem QUAL É O PROBLEMA;1. Descrever o problema de uma forma clara e precisa, especificando bem QUAL É O PROBLEMA; 2. Descobrir uma solução, transformando O QUE É desejado em COMO chegar ao que se deseja na forma de uma rotina executável;2. Descobrir uma solução, transformando O QUE É desejado em COMO chegar ao que se deseja na forma de uma rotina executável;

16 3. Escrever a solução numa linguagem de programação de modo que possa ser executada NUM COMPUTADOR; e3. Escrever a solução numa linguagem de programação de modo que possa ser executada NUM COMPUTADOR; e 4. Verificar a correção do programa, mostrando que o programa satisfaz os requisitos do problema.4. Verificar a correção do programa, mostrando que o programa satisfaz os requisitos do problema. 1. Usando o Computador

17 Exercício: seja a seguinte situação: Exercício: seja a seguinte situação: Durante uma viagem de automóvel um motorista percebeu que o pneu dianteiro do seu veículo está furado.descrever o problema e a solução indicando O QUE E COMO FAZER para resolver o problema. Durante uma viagem de automóvel um motorista percebeu que o pneu dianteiro do seu veículo está furado.descrever o problema e a solução indicando O QUE E COMO FAZER para resolver o problema.

18 2. Algoritmos O termo ALGORITMO vem da palavra ÁRABE ALKHARIZMI, originária do nome de umO termo ALGORITMO vem da palavra ÁRABE ALKHARIZMI, originária do nome de um matemático persa chamado: ABU JAFAR MOHAMMED IBN MUSA AL KHOWARIZMI, autor de um livro-texto sobre matemática no século IX.

19 2. Algoritmos Um ALGORITMO é uma receita para um processo computacional e consiste de uma série de operações primitivas, interconectadas devidamente, sobre um conjunto de objetos (Constantes e Variáveis)Um ALGORITMO é uma receita para um processo computacional e consiste de uma série de operações primitivas, interconectadas devidamente, sobre um conjunto de objetos (Constantes e Variáveis) Constante: um objeto cujo valor não se altera ao longo do algoritmo e pode ou não ter um nome Variável: objeto que tem um nome e um valor e que pode ser alterado pelo algoritmo durante sua execução Operações primitivas: eqüivale a um pequeno conjunto de operações necessárias e suficientes para resolver um problema computacional

20 2. Algoritmos Exemplo de Operações Primitivas: Obtenha(Nome,Salario): carregar as informações nome e salário para a memória do computador; Forneça(Nome,Salario): enviar as informações nome e salário da memória para o vídeo ou impressora; Guarde(Nome,Salario): enviar as informações nome e salário da memória para um dispositivo de armazenagem;

21 2. Algoritmos Recupere(Nome,Salario): enviar as informações nome e salário do dispositivo de armazenagem para a memória do computador; Atribua(João da Silva, Nome): fazer com que a variável nome receba o valor João da Silva; Calcule(Total Bruto - Total de Descontos): avalia uma expressão aritmética; Avalie(Total Líquido < Total de Descontos): avalia uma expressão lógica, enviando um resultado que pode ser verdadeiro(+) ou falso(-);

22 3. Fluxogramas Corresponde a uma forma gráfica muito comum utilizada para representar um algoritmo, indicando a seqüência em que as primitivas devem ser executadas.

23 3. Fluxogramas Primitivas Gráficas: Início/Fim do programa Início/Fim do programa Processamento Processamento Decisão Decisão

24 3. Fluxogramas Em um fluxograma as operações primitivas aparecem envolvidas por retângulos, com exceção da primitiva AVALIE, a qual é envolvida por um losango. As operações são interligadas por SETAS (-->).

25 3. Fluxogramas Exemplo: Dados dois números inteiros positivos A e B, calcular o valor absoluto de A - B. Dados dois números inteiros positivos A e B, calcular o valor absoluto de A - B. Resposta em forma de texto: nesse caso devemos realizar os seguintes passos: 1. Obter os valores de A e B; 2. Verificar qual deles é o maior; 3. Subtrair o número menor do número maior; e 4. Apresentar o valor resultante.

26 3. Fluxogramas Resposta em forma gráfica: Início Obtenha A,B A < B C <-- B - A C <-- A - B Forneça C Fim

27 3. Fluxogramas - Exercícios 1. Calcular o produto de 10 por 7. Início PROD <-- 10*7 Fim Forneça PROD

28 Linguagem C Alexandre C. B. Ramos

29 Linguagem C Tópicos de estudo Tópicos de estudo Entrada e saída de dados Entrada e saída de dados Bases numéricas Bases numéricas Estruturas de seleção Estruturas de seleção Estruturas de repetição Estruturas de repetição Matrizes/vetores Matrizes/vetores Operadores lógicos Operadores lógicos Funções internas e subprogramas Funções internas e subprogramas

30 Bibliografia Básica Básica Schildt, Herbert.Turbo C - Guia do Usuário. McGraw-Hill Schildt, Herbert.Turbo C - Guia do Usuário. McGraw-Hill Complementar Complementar Schildt, Herbert.C completo e total. McGraw-Hill Schildt, Herbert.C completo e total. McGraw-Hill Kelly-Bootle, Stan.Dominando o Turbo C. Editora Ciência Moderna. Kelly-Bootle, Stan.Dominando o Turbo C. Editora Ciência Moderna. Deitel & Deitel. C++ Como Programar. Bookman. Deitel & Deitel. C++ Como Programar. Bookman.

31 Ambiente de programação Para a edição de programas, compilação e execução utilizaremos o ambiente Turbo C, especificamente a IDE (Integrated Design Environment) que funciona a partir dos sistemas operacionais DOS e WindowsXX. Para a edição de programas, compilação e execução utilizaremos o ambiente Turbo C, especificamente a IDE (Integrated Design Environment) que funciona a partir dos sistemas operacionais DOS e WindowsXX. A IDE é uma interface de desenvolvimento prática e eficiente que vai facilitar bastante o desenvolvimento dos programas em C. A IDE é uma interface de desenvolvimento prática e eficiente que vai facilitar bastante o desenvolvimento dos programas em C. Maiores detalhes do funcionamento da IDE, principais menus e comandos de edição e compilação estão disponíveis em Turbo C - Guia do Usuário. Maiores detalhes do funcionamento da IDE, principais menus e comandos de edição e compilação estão disponíveis em Turbo C - Guia do Usuário.

32 Conceitos básicos da linguagem C

33 Identificadores Usados para nomear as variáveis, as funções e os rótulos dos programas. A linguagem C: Usados para nomear as variáveis, as funções e os rótulos dos programas. A linguagem C: reconhece os 31 primeiros caracteres do nome; e reconhece os 31 primeiros caracteres do nome; e diferencia as maiúsculas e as minúsculas. diferencia as maiúsculas e as minúsculas. O identificador sempre começa por letra O identificador sempre começa por letra Normalmente: maiúsculas constantes Normalmente: maiúsculas constantes minúsculas variáveis minúsculas variáveis Exemplo: Corretos Errados Exemplo: Corretos Errados cont 1cont cont 1cont teste23 alô! teste23 alô! Alto_balanco alto..balanço Alto_balanco alto..balanço

34 Palavras reservadas O nome deve ser diferente das seguintes palavras reservadas: intcharfloatvoidenum shortlongsignedunsigneddouble structuniontypedefsizeofauto registerstaticexternconstvolatile gotoifelseswitchcase defaultbreakwhiledofor continuereturn

35 Paralelo entre Pascal e C Program Area; # include Program Area; # include uses crt; void main ( ) var A, L: real; { Begin float A, L; write (Digite o lado: ); printf ( Digite o lado: ); write (Digite o lado: ); printf ( Digite o lado: ); readln (L); scanf (%f, L); readln (L); scanf (%f, L); if L < 0 then if L < 0 if L < 0 then if L < 0 write ( O lado deve ser positivo!) printf ( O lado deve ser positivo!); write ( O lado deve ser positivo!) printf ( O lado deve ser positivo!); else else else else begin { begin { A:= L * L; A = L * L; A:= L * L; A = L * L; writeln ( A área é:, A); printf ( A área é: %f,A); writeln ( A área é:, A); printf ( A área é: %f,A); end; } end; } End. } End. }

36 Tipos e tamanhos Tipos simples: Tipos simples: char: caracter (1 byte) int: inteiro (>= 2 bytes dependendo da máquina) float: ponto flutuante, precisão simples (>= 6 bytes, dep. Máq.) Qualificadores: Qualificadores: short: se aplica ao tipo intlong: se aplica a int e float signed: se aplica a char e intunsigned: idem char e int Variáveis Variáveis Tipos simples: char, int, float e double Tipos compostos: estruturas, tabelas, uniões etc. Domínio de validade: auto, static, extern e register. Sintaxe: [classe] [qualificador] tipo nome_variavel [=valor];

37 Constantes Declaração simples: Declaração simples: # define NUM_MAX_CARACT 100 # define MENSAGEM alo, alo, Terezinha # define CR \n # undef MENSAGEM Qualificadores Qualificadores 3.14 tipo double 3.14f ou 4.14F tipo float 1.3e-3 ou 1.3E-3 tipo double 074 tipo inteiro, em octal 3l ou 3L tipo inteiro longo 255u ou 255U tipo inteiro, sem sinal 3.14l ou 3.14L tipo ddouble longo 0x3b ou 0Xb tipo inteiro, hexadecimal

38 Constantes Domínio de validade: Domínio de validade: da definição da constante até o final do arquivo ou até encontrar a diretiva #undef da constante da definição da constante até o final do arquivo ou até encontrar a diretiva #undef da constante Constantes do tipo caracter devem ser escritas entre apóstrofos (por exemplo: `l`, `a`, `x`, `\n`, `\t`) Constantes do tipo caracter devem ser escritas entre apóstrofos (por exemplo: `l`, `a`, `x`, `\n`, `\t`) Representação de caracteres ASCII não imprimíveis: Representação de caracteres ASCII não imprimíveis: nova linha = `\n`tabulação = `\t` nova linha = `\n`tabulação = `\t` espaço p/trás = `\b`retorno do carro = `\r` espaço p/trás = `\b`retorno do carro = `\r` página segui nte = `\f `barra de fração revertida = `\\` página segui nte = `\f `barra de fração revertida = `\\` apóstrofo = `\`null = `\0` apóstrofo = `\`null = `\0` bell = \aformfeed = `\f ` bell = \aformfeed = `\f ` haspas = `\ `interrogação = `\?` haspas = `\ `interrogação = `\?` caracter definido pelo seu valor ASCII (em octal) = `\ddd`, ex.: `121` caracter definido pelo seu valor ASCII (em octal) = `\ddd`, ex.: `121` caracter definido pelo seu valor ASCII (em hexa] = `\xdd`, ex.: `\x2a` caracter definido pelo seu valor ASCII (em hexa] = `\xdd`, ex.: `\x2a`

39 Operadores Operadores aritméticos (multiplicativos e aditivos): Operadores aritméticos (multiplicativos e aditivos): +, -, *, /, % (resto de divisão inteira) +, -, *, /, % (resto de divisão inteira) Operadores bit a bit: & (e), | (ou), ^ (ou-exclusivo) Operadores bit a bit: & (e), | (ou), ^ (ou-exclusivo) Operadores de deslocamento: > (direita) Operadores de deslocamento: > (direita) Operadores relacionais:, >= Operadores relacionais:, >= Operadores de igualdade: ==, != Operadores de igualdade: ==, != Operadores lógicos: && (e), || (ou) Operadores lógicos: && (e), || (ou) Operadores unários: *p : conteúdo de p &v : endereço de v Operadores unários: *p : conteúdo de p &v : endereço de v -e : menos e !e : negação (booleana) de e ~e : complemento bit a bit de e ++v : v = v + 1 -v : v = v - 1 v++ : retorna v e depois v = v + 1 v- : etorna v e depois v = v - 1 (tipo)v : converte v para o tipo sizeof(e) : numero de bytes ocupado por e sizeof(tipo) : n° de bytes ocupado por um objeto do tipo definido

40 Operadores Operadores de atribuição:Operadores de atribuição: =, +=, -=, *=, /=, %=, >=, &=, |=, ^= Operador vírgula:Operador vírgula: x = y++, z; equivale a y = y + 1; x = z Operador condicional:Operador condicional: exp ? exp1 : exp2 Exemplo: x = (a > b) ? a : b; equivale a: Se a é maior que b, então x = a; senão x = b Se a é maior que b, então x = a; senão x = b

41 Precedência e ordem de avaliação OperadorAvaliação ( ) [ ] ->. esq->dir ! ~ ++ --(tipo) * & sizeofdir->esq * / % esq->dir + - esq->dir > esq->dir > esq->dir >= esq->dir >= esq->dir == != esq->dir & esq->dir ^ esq->dir | esq->dir && esq->dir || esq->dir ? :dir -> esq = += -= etc.dir -> esq,esq-> dir

42 Instruções de controle Observações preeliminares: Observações preeliminares: uma instrução é sempre terminada por ; uma instrução é sempre terminada por ; comentários: /* isto é um comentário */ comentários: /* isto é um comentário */ as chaves { e } são usadas para agrupar declarações e instruções em um bloco, o qual é sintaticamente equivalente a uma única instrução, exemplo: as chaves { e } são usadas para agrupar declarações e instruções em um bloco, o qual é sintaticamente equivalente a uma única instrução, exemplo: While (n != 2) { /* bloco*/ While (n != 2) { /* bloco*/ x = y + z; x = y + z; n = n / 2; n = n / 2;} um bloco nunca termina com }; um bloco nunca termina com }; variáveis podem ser declaradas dentro de variáveis podem ser declaradas dentro de qualquer bloco (e tem validade só dentro do bloco).

43 Instrução if Caso mais simples: if (expressão) instrução Caso mais simples: if (expressão) instrução Caso completo: if (expressão) instrução; Caso completo: if (expressão) instrução; else if (expressão) instrução;..... else instrução;

44 Exemplo

45 Instrução switch Sintaxe: Sintaxe: switch (expressão) { case expr-constante:instr; instr;break; break; default:instr; break; }

46 Instrução while Caso mais simples:while (expressão) instr; Caso mais simples:while (expressão) instr; Caso geral:while (expressão) { instr; Caso geral:while (expressão) { instr; instr; } instr; } A instrução break faz sair da malha while. Exemplo: A instrução break faz sair da malha while. Exemplo: while (i++ != 10) { soma += x[i]; if (soma >= 100.) break; } if (soma >= 100.) break; } A instrução continue faz com que a iteração seguinte da malha seja realizada imediatamente, exemplo: A instrução continue faz com que a iteração seguinte da malha seja realizada imediatamente, exemplo: while (i++ < 10) while (i++ < 10) {if (x[i] == \n) continue; {if (x[i] == \n) continue; y[i] = y[i]; y[i] = y[i]; }

47 Instrução do/while Caso simples: do instrução; Caso simples: do instrução; while (expressão); while (expressão); Caso geral: do { Caso geral: do { instrução; instrução;..... } while (expressão); As instruções break e continue também são aplicáveis ao do/while. As instruções break e continue também são aplicáveis ao do/while.

48 Instrução for Sintaxe:for (expr1; expr2; expr3) { Sintaxe:for (expr1; expr2; expr3) { instr; instr; instr; } instr; } A instrução for é equivalente a: A instrução for é equivalente a:expr1; while (expr2) { instr; instr;....instr; expr3;} As instruções break e continue também são aplicáveis a malha for. As instruções break e continue também são aplicáveis a malha for.

49 Instrução goto Sintaxe: Sintaxe: goto rotulo... Rotulo: instr; instr; instr;...

50 Funções Generalidades Generalidades A linguagem C é baseada no conceito de blocos de construção, que são chamados de funções. A linguagem C é baseada no conceito de blocos de construção, que são chamados de funções. O nome de uma função sofre as mesmas restrições que o nome de uma variável. O nome de uma função sofre as mesmas restrições que o nome de uma variável. Como também ocorre com as variáveis, um tipo é sempre associado a uma função (tipo do valor de retorno) Como também ocorre com as variáveis, um tipo é sempre associado a uma função (tipo do valor de retorno) tipos básicos: void, char, int, float, double tipos básicos: void, char, int, float, double qualificadores: short, long, signed, unsigned, exemplo: short int func () qualificadores: short, long, signed, unsigned, exemplo: short int func () Retorno de valor: return expr; Retorno de valor: return expr; Declaração de uma função:float calc (int, float); Declaração de uma função:float calc (int, float); definição de uma função: foat calc (n, x) definição de uma função: foat calc (n, x) int n; float x; {corpo da função } não se pode definir uma função no interior de um bloco {.....} não se pode definir uma função no interior de um bloco {.....}

51 Função main O programa principal é uma função cujo nome é main O programa principal é uma função cujo nome é main A função main pode ser do tipo: main () A função main pode ser do tipo: main () { } { } Ou do tipo: main (argc, argv) Ou do tipo: main (argc, argv) int argc; char *argv; { } O valor contido em argc corresponde ao número de argumentos recebido da linha de comando O valor contido em argc corresponde ao número de argumentos recebido da linha de comando Por sua vez, argv corresponde à tabela de argumentos da linha de comando, exemplo: cp arq1 arq2 Por sua vez, argv corresponde à tabela de argumentos da linha de comando, exemplo: cp arq1 arq2 cp: nome do programa cp: nome do programa arq1 e arq2 : argumentos arq1 e arq2 : argumentos argc = 3 argc = 3 argv = [ cp, arq1, arq2] argv = [ cp, arq1, arq2]

52 Alocação do espaço de memória Classe auto Classe auto alocação por default alocação por default alocação feita no momento da declaração alocação feita no momento da declaração liberação no final do bloco (variável local) ou no final do programa (variável global) liberação no final do bloco (variável local) ou no final do programa (variável global) Classe static Classe static alocação feita na declaração alocação feita na declaração liberação no final do programa liberação no final do programa uma variável local, declarada static, guarda seu valor de uma chamada a outra da função (conceito de permanência do valor) uma variável local, declarada static, guarda seu valor de uma chamada a outra da função (conceito de permanência do valor) uma variável global, declarada static, só é acessível por funções contidas dentro do arquivo onde foi declarada (conceito de privacidade) uma variável global, declarada static, só é acessível por funções contidas dentro do arquivo onde foi declarada (conceito de privacidade) Classe extern Classe extern a variável é alocada em um outro arquivo a variável é alocada em um outro arquivo

53 Alocação de espaço de memória Classe register Classe register deve ser empregado somente com as variáveis automáticas (auto) deve ser empregado somente com as variáveis automáticas (auto) classe de alocação normalmente empregadas para as variáveis utilizadas de maneira intensiva classe de alocação normalmente empregadas para as variáveis utilizadas de maneira intensiva o compilador é livre de atribuir um registrador do processador à variável ou de ignorar a solicitação o compilador é livre de atribuir um registrador do processador à variável ou de ignorar a solicitação não se pode, evidentemente, tentar obter o endereço de uma variável do tipo register não se pode, evidentemente, tentar obter o endereço de uma variável do tipo register como regra geral, as variáveis de classe register são do tipo char ou int como regra geral, as variáveis de classe register são do tipo char ou int

54 Definição de tabelas (arrays) Uma tabela é um conjunto de elementos de mesmo tipo. Uma tabela é um conjunto de elementos de mesmo tipo. Declaração: Declaração: [classe] [qualificador] tipo tabela [n° elementos]; [classe] [qualificador] tipo tabela [n° elementos]; Inicialização: Inicialização: tipo tabela[ ] = {val1, val2,...} tipo tabela[ ] = {val1, val2,...} Exemplos: Exemplos: char v[10]; char v[10]; static double x[20]; static double x[20]; int stat[ ] = { -1, -1, 0, 1}; int stat[ ] = { -1, -1, 0, 1}; Acesso a um elemento de uma tabela, exemplos: Acesso a um elemento de uma tabela, exemplos: y = x[10]; y = x[10]; ss = stat [2*i-3]; ss = stat [2*i-3]; Tabelas multidimensionais Tabelas multidimensionais int tab[2] [3] [4]; ou double pos[3] [3]; int tab[2] [3] [4]; ou double pos[3] [3];

55 Estruturas Uma estrutura corresponde a um conjunto de uma ou mais variáveis, eventualmente de tipos diferentes e agrupadas sob um mesmo nome Uma estrutura corresponde a um conjunto de uma ou mais variáveis, eventualmente de tipos diferentes e agrupadas sob um mesmo nome Exemplos de declarações de estruturas (struct define o tipo estrutura) Exemplos de declarações de estruturas (struct define o tipo estrutura) declara a estrutura x (tipo num_complexo), alocando para a mesma 2 campos do tipo double: declara a estrutura x (tipo num_complexo), alocando para a mesma 2 campos do tipo double: struct num_complexo { double parte_real; struct num_complexo { double parte_real; double parte_imag; } x; double parte_imag; } x; declara a estrutura data, alocando para a mesma inteiros: declara a estrutura data, alocando para a mesma inteiros: struct { int dia; int mês; int mês; int ano; } data; int ano; } data; Acesso aos membros de uma estrutura: Acesso aos membros de uma estrutura: data.dia = 18;

56 Exemplos de programa em C Converte o caracter de entrada em octal; Imprime o tamanho dos tipos de base do C; Imprime o tamanho dos tipos de base do C Conversor de temperatura Fahrenheit para Celsius; Conversor de temperatura Fahrenheit para Celsius Conta caracteres brancos, tabulações e retornos à linha; Conta caracteres brancos, tabulações e retornos à linha Verifica se uma dada palavra esta contida dentro de uma frase; Verifica se uma dada palavra esta contida dentro de uma frase Variáveis globais e locais; Variáveis globais e locais Exemplo de classe static; Exemplo de classe static Exemplo de classe extern; Exemplo de classe extern

57 Processos Definições iniciais: Definições iniciais: Programa: arquivo executável Programa: arquivo executável Processo: programa em execução Processo: programa em execução Lista de argumentos: recebida pelo programa quando este é colocado em execução, exemplo: Lista de argumentos: recebida pelo programa quando este é colocado em execução, exemplo: main (int argc, char *argv[ ] ) main (int argc, char *argv[ ] ) Lista de variáveis de ambiente: também recebida pelo programa quando este é colocado em execução Lista de variáveis de ambiente: também recebida pelo programa quando este é colocado em execução main (int argc, char *argv[ ], char *envp[ ]) main (int argc, char *argv[ ], char *envp[ ]) exemplo: programa que imprime a lista de variáveis de ambiente recebidas exemplo: programa que imprime a lista de variáveis de ambiente recebidas Formato das varáveis de ambiente: var = string Formato das varáveis de ambiente: var = string Ultima string da lista de variáveis de ambiente: obrigatoriamente NULL, isto é, (char *) 0 Ultima string da lista de variáveis de ambiente: obrigatoriamente NULL, isto é, (char *) 0 Outras maneiras de se obter as variáveis de ambiente: Outras maneiras de se obter as variáveis de ambiente: uso da variável externa environ uso da variável externa environ uso da função getenv uso da função getenv

58 Processos

59 Processos

60 Processos

61 Processos Identificador do processo Identificador do processo Cada processo possui um único identificador de processo (PID, inteiro) Cada processo possui um único identificador de processo (PID, inteiro) Para um processo obter o seu PID, ele deve chamar a função getpid() Para um processo obter o seu PID, ele deve chamar a função getpid() Identificador do processo pai Identificador do processo pai Cada processo possui um processo pai Cada processo possui um processo pai Para obter o PID do processo pai, deve ser chamada a função getppid() Para obter o PID do processo pai, deve ser chamada a função getppid()


Carregar ppt "Fundamentos de Programação Copyright, 2011 © Alexandre C. B. Ramos Prof. Dr. Alexandre C. B. Ramos INTRODUÇÃO A INFORMÁTICA O COMPUTADOR SISTEMA OPERACIONAL."

Apresentações semelhantes


Anúncios Google