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

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

Fundamentos de Programação

Apresentações semelhantes


Apresentação em tema: "Fundamentos de Programação"— Transcrição da apresentação:

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

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. 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; 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.

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 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: 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. 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. 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. 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:
RAM - 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.

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.

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.

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.

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.

15 1. Usando o Computador 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; 2. Descobrir uma solução, transformando O QUE É desejado em COMO chegar ao que se deseja na forma de uma rotina executável;

16 1. Usando o Computador 3. 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.

17 1. Usando o Computador 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.

18 2. Algoritmos O termo ALGORITMO vem da palavra ÁRABE ALKHARIZMI, originária do nome de um matemático persa chamado: ABU JA’FAR 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) 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
Processamento 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. 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 Forneça PROD Fim

28 Linguagem C Alexandre C. B. Ramos

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

30 Bibliografia Básica Schildt, Herbert.Turbo C - Guia do Usuário. McGraw-Hill Complementar Schildt, Herbert.C completo e total. McGraw-Hill Kelly-Bootle, Stan.Dominando o Turbo C. Editora Ciência Moderna. 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. 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.

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: reconhece os 31 primeiros caracteres do nome; e diferencia as maiúsculas e as minúsculas. O identificador sempre começa por letra Normalmente: maiúsculas  constantes minúsculas  variáveis Exemplo: Corretos Errados cont cont teste alô! Alto_balanco alto..balanço

34 Palavras reservadas O nome deve ser diferente das seguintes palavras reservadas: int char float void enum short long signed unsigned double struct union typedef sizeof auto register static extern const volatile goto if else switch case default break while do for continue return

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

36 Tipos e tamanhos 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: short: se aplica ao tipo int long: se aplica a int e float signed: se aplica a char e int unsigned: idem char e int 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: # define NUM_MAX_CARACT 100
# define MENSAGEM “alo, alo, Terezinha” # define CR ‘\n’ # undef MENSAGEM Qualificadores tipo “double” f ou 4.14F tipo “float” 1.3e-3 ou 1.3E-3 tipo double tipo inteiro, em octal 3l ou 3L tipo inteiro longo u ou 255U tipo inteiro, sem sinal 3.14l ou 3.14L tipo d”double” longo 0x3b ou 0X”b tipo inteiro, hexadecimal

38 Constantes Domínio de validade:
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`) Representação de caracteres ASCII não imprimíveis: nova linha = `\n` tabulação = `\t` espaço p/trás = `\b` retorno do carro = `\r` página segui nte = `\f ` barra de fração revertida = `\\` apóstrofo = `\’` null = `\0` bell = ‘\a’ formfeed = `\f ` haspas = `\” ` interrogação = `\?` caracter definido pelo seu valor ASCII (em octal) = `\ddd`, ex.: `121` caracter definido pelo seu valor ASCII (em hexa] = `\xdd`, ex.: `\x2a`

39 Operadores Operadores aritméticos (multiplicativos e aditivos):
+, -, *, /, % (resto de divisão inteira) Operadores bit a bit: & (e), | (ou), ^ (ou-exclusivo) Operadores de deslocamento: << (esquerda), >> (direita) Operadores relacionais: <,<=, >, >= Operadores de igualdade: ==, != Operadores lógicos: && (e), || (ou) 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 v++ : retorna v e depois v = v + 1 v- : etorna v e depois v = v (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:
=, +=, -=, *=, /=, %=, <<=, >>=, &=, |=, ^= Operador vírgula: x = y++, z; equivale a y = y + 1; x = z 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

41 Precedência e ordem de avaliação
Operador Avaliação ( ) [ ] -> esq->dir ! ~ ++ --(tipo) * & sizeof dir->esq * / % 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: uma instrução é sempre terminada por “ ; “ 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: While (n != 2) { /* bloco*/ x = y + z; n = n / 2; } um bloco nunca termina com }; 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 completo: if (expressão) instrução; else if (expressão) instrução; ..... else instrução;

44 Exemplo

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

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

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

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

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

50 Funções Generalidades
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. 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 qualificadores: short, long, signed, unsigned, exemplo: short int func () Retorno de valor: return expr; Declaração de uma função: float calc (int, float); 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 {.....}

51 Função main O programa principal é uma função cujo nome é “main”
A função “main” pode ser do tipo: main () { } 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 Por sua vez, “argv” corresponde à tabela de argumentos da linha de comando, exemplo: cp arq1 arq2 cp: nome do programa arq1 e arq2 : argumentos argc = 3 argv = [ “cp”, “arq1” , “arq2”]

52 Alocação do espaço de memória
Classe auto alocação por “default” 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) Classe static alocação feita na declaração 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 global, declarada “static” , só é acessível por funções contidas dentro do arquivo onde foi declarada (conceito de privacidade) Classe extern a variável é alocada em um outro arquivo

53 Alocação de espaço de memória
Classe register 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 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” 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. Declaração: [classe] [qualificador] tipo tabela [n° elementos]; Inicialização: tipo tabela[ ] = {val1, val2, ...} Exemplos: char v[10]; static double x[20]; int stat[ ] = { -1, -1, 0, 1}; Acesso a um elemento de uma tabela, exemplos: y = x[10]; ss = stat [2*i-3]; Tabelas multidimensionais 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 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: struct num_complexo { double parte_real; double parte_imag; } x; declara a estrutura “data”, alocando para a mesma inteiros: struct { int dia; int mês; int ano; } data; 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; Conversor de temperatura Fahrenheit para Celsius; Conta caracteres brancos, tabulações e retornos à linha; Verifica se uma dada palavra esta contida dentro de uma frase; Variáveis globais e locais; Exemplo de classe static; Exemplo de classe extern;

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

58 Processos

59 Processos

60 Processos

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


Carregar ppt "Fundamentos de Programação"

Apresentações semelhantes


Anúncios Google