Escolar Documentos
Profissional Documentos
Cultura Documentos
CDD 378
Direitos desta edição reservados à UNITINS
É proibida a reprodução total ou parcial desta obra sem autorização expressa da UNITINS
Equipe EADCON
Coordenador Editorial William Marlos da Costa
Apresentação
e procedimentos lógicos claramente definidos, necessários para a solução de um
problema em um número finito de etapas.
Assim, na aula um, veremos os conceitos básicos de lógica para programação
e as formas mais utilizadas para a representação de algoritmos.
A aula dois abordará os operadores lógico-matemáticos e relacionais, necessá-
rios para a construção de expressões. Iniciaremos também a construção de algoritmos
seqüenciais, aprendendo os comandos básicos de entrada e saída de dados.
As estruturas de seleção serão apresentadas nas aulas três e quatro, abordando mais
especificamente o desvio condicional simples, composto e encadeado. E, finalmente,
nas aulas cinco, seis e sete, conheceremos as diferentes estruturas de repetição.
A disciplina de lógica para programação é de extrema importância, uma vez
que nos apresenta o embasamento necessário para a implementação de soluções
computacionais para problemas do mundo real.
Em breve, você desenvolverá complexos sistemas baseados nos conheci-
mentos que começará a adquirir aqui.
Bons estudos!
Prof. Igor Yepes
EMENTA
Representação do pensamento lógico. Fundamentos de algoritmos. Variáveis
e constantes. Programação estruturada. Estruturas de seleção e repetição.
OBJETIVOS
• Apresentar os principais conceitos de Lógica para Programação
Plano de Ensino
CONTEÚDO PROGRAMÁTICO
• Fundamentos de lógica aplicada ao desenvolvimento de algoritmos
• Formas de representação de algoritmos
• Operadores e tipos de dados utilizados para construção de
expressões
• Variáveis e constantes
• Estruturas seqüenciais
• Estruturas de seleção
• Estruturas de repetição
BIBLIOGRAFIA BÁSICA
CARBONI, Irenice de Fátima. Lógica de programação. São Paulo: Thomson,
2003.
FORBELLONE, André Luiz Villar; EBERSPACHER, Henri Frederico. Lógica de
programação: a construção de algoritmos e estruturas de dados. 3. ed. São
Paulo: Makron Books, 2005.
MANZANO, José Augusto N. G.; OLIVEIRA, Jayr Figueiredo de. Algoritmos:
lógica para desenvolvimento de programação de computadores. 16. ed. São
Paulo: Érica, 2005.
BIBLIOGRAFIA COMPLEMENTAR
LOPES, Anita; GARCIA, Guto. Introdução à programação: 500 algoritmos resol-
vidos. Rio de Janeiro: Campus, 2002.
ORTH, Afonso Inácio. Algoritmos e programação com resumo das linguagens
Pascal e C. Porto Alegre: AIO, 2001.
SOUZA, Marco Antonio Furlan de; GOMES, Marcelo Marques; SOARES, Marcio
Vieira. Algoritmos e lógica de programação. São Paulo: Thomson, 2005.
Aula 1
Conceitos básicos de lógica
para programação
1.1 Lógica
Segundo o dicionário eletrônico Houaiss (2007) da língua portuguesa,
a lógica é a parte da filosofia que trata das formas do pensa-
mento em geral (dedução, indução, hipótese, inferência, etc.) e
das operações intelectuais que visam à determinação do que é
verdadeiro ou não.
1.3.2 Fluxograma
O fluxograma é uma forma de representação algorítmica intermediária entre
a descrição narrativa e o português estruturado. Apresenta menos imprecisão que
a primeira, sem se preocupar com detalhes de implementação do programa.
1.3.3 Pseudocódigo
Finalmente, apresentamos a forma de representação de algoritmos mediante
utilização de pseudocódigo, o qual, como explicado anteriormente, é uma forma
de representação mais próxima das linguagens de programação e, ao mesmo
tempo, de fácil compreensão por ser escrita em português. Isso facilita o apren-
dizado e permite que nos preocupemos mais com a construção da estrutura
lógica requerida do que com a linguagem utilizada. Contudo segue normas
semelhantes às linguagens de programação na sua utilização.
da sua declaração que definimos o tipo de dado que irá conter e, conseqüente-
mente, o espaço de memória que será reservado para isso.
A nomenclatura das variáveis deve seguir as seguintes regras básicas:
• não pode iniciar por um número;
• não podem ser utilizados caracteres especiais, com exceção do subli-
nhado ( _ );
• não podem ser utilizadas palavras reservadas da linguagem para nome
de variáveis.
Seguindo tais regras, podemos exemplificar como nomes válidos para variá-
veis:
• Nome
• Nota1
• Data_nascimento
• _1
• x
Dessa forma, alguns exemplos de nomes não-válidos seriam:
• @Nom2e (iniciando com um caractere especial diferente de _)
• 1Nota (iniciando com um número)
• Data nascimento (com espaço em branco no meio)
Por outro lado, temos as constantes, cujo valor permanece inalterado durante
a execução do algoritmo. A nomenclatura das constantes, caso sejam explici-
tamente declaradas, segue as mesmas regras estipuladas para a nomenclatura
das variáveis, com exceção de que não é possível omitir o seu valor de inicia-
lização. Ou seja, ao declarar uma constante, devemos atribuir imediatamente
o seu valor inicial; enquanto que para as variáveis, o valor pode ser atribuído
posteriormente à sua declaração.
Pois é... Finalizamos nossa primeira aula com uma boa noção das principais
formas de representação de estruturas algorítmicas, compreendendo suas aplica-
ções e sua utilidade na codificação de soluções.
a) Somente I é falsa.
b) Somente II é falsa.
c) Somente III é falsa.
d) Todas as afirmativas são verdadeiras.
Anotações
Aula 2
Expressões e estruturas seqüenciais
Uma vez que já temos uma visão geral das formas de representação de
algoritmos e os tipos de dados por eles utilizados, temos de aprender como
manipular esses dados de forma apropriada. Para isso, devemos conhecer os
operadores e os tipos de expressões que podemos construir com eles.
Após entendermos como formular expressões para uso nos procedimentos
algorítmicos, poderemos iniciar o aprendizado dos comandos básicos de entrada
e saída para construção de algoritmos seqüenciais, nos quais são executados
todos os passos (instruções) na seqüência apresentada, da primeira até a última
linha, sem omissões e sem repetições.
Bateu a curiosidade? Então vamos lá!
2.1 Expressões
Uma expressão pode ser composta por uma variável, uma constante, ou qual-
quer combinação válida entre variáveis, constantes e operadores que retornem
um resultado após a sua execução.
2.1.1 Operadores
Tanto na construção de algoritmos quanto no desenvolvimento de programas
em linguagens computacionais, utilizaremos basicamente três tipos de operadores:
• aritméticos
• lógicos
• relacionais
Antes de conhecermos esses operadores, é importante conhecer o operador
de atribuição (←), utilizado para transferir o resultado de uma expressão para
uma variável. Por exemplo:
a←3
b←2
soma ← a + b
Agora sim, vamos conhecer cada um dos tipos de operadores (aritméticos,
lógicos e relacionais) mais detalhadamente.
a) Operadores aritméticos
As expressões aritméticas nos fornecem como resultado da sua execução um
valor numérico (inteiro ou real). A tabela a seguir relaciona os operadores
aritméticos que iremos utilizar, bem como a sua ordem de prioridade de
execução dentro da expressão.
Como você pode verificar, o ou lógico só retorna falso como resultado caso
os dois operandos comparados por ele contenham um valor falso. Se ao menos
um dos operandos for verdadeiro, o resultado será verdadeiro. O e lógico só
retornará um resultado verdadeiro se os dois operandos por ele comparados
forem também verdadeiros. Caso ao menos um dos operandos seja falso, o
resultado também será falso. Finalmente, o não lógico (ou operador lógico de
negação), serve para inverter o valor.
c) Operadores relacionais
Temos ainda mais um tipo de operadores que pode ser utilizado em expres-
sões lógicas: os operadores relacionais. O quadro a seguir nos apresenta
esses operadores.
Certo... Vamos agora a uma breve explicação dessa estrutura. As duas barras
no início da primeira linha indicam que o conteúdo após as barras (//), até o final
dessa linha, é um comentário. Logo não será considerado para execução. Caso
deseje especificar trechos de comentário superiores a uma linha, basta iniciar com
/* e finalizar o trecho com */. Toda a área compreendida entre essas duas marca-
ções será tratada como comentário, não influindo na execução do pseudocódigo.
É interessante que você insira comentários no seu código sempre que neces-
sário, para explicar uma peculiaridade de um cálculo, uma funcionalidade espe-
cífica, etc. Isso é muito útil na hora de realizar alterações no código, pois caso
você, ou até mesmo outro programador, necessite alterar alguma funcionalidade,
com algumas dicas espalhadas pelo código fica mais fácil saber a que se refere
um determinado trecho do algoritmo.
O início e fim do bloco principal do algoritmo são claramente delimitados
pelas palavras início e fim. Entre essas duas marcações é que devem ser inse-
ridas todas as instruções a serem executadas pelo pseudocódigo.
É recomendável realizar a declaração de variáveis e constantes logo no
início do bloco principal, apesar de ser permitido realizar essa declaração em
qualquer trecho do código (desde que seja antes da utilização da variável em
alguma expressão ou comando). Se ficar definido como padrão a declaração no
início, facilita bastante na hora de realizar alguma manutenção ou alteração.
Após a área de declaração, são inseridos os comandos e expressões que
devem ser executados.
Sintaxe:
ler <variavel>
ler <variavel_1>, <variavel_2>, ... , <variavel_n>
Vejamos agora alguns pequenos exemplos que ajudarão a compreender
esses conceitos.
O exemplo da figura a seguir apresenta um pequeno algoritmo, sem neces-
sidade de declaração de variáveis, pois não faz uso de nenhum dado adicional
além do literal “Olá mundo!” após o comando escrever.
1. Classifique como (V) (verdadeira) ou (F) (falsa), cada uma das afirmações a
seguir, selecionando a alternativa que representa a seqüência correta.
( ) Com operadores é possível construir expressões, assim como na mate-
mática. A complexidade de uma expressão é determinada pela quanti-
dade de operadores e termos (variáveis ou valores constantes).
( ) Os operadores são, na prática, instruções especiais pelas quais incre-
mentamos, decrementamos, comparamos e avaliamos dados dentro de
um programa de computador.
a) F, V, V c) V, F, F
b) V, V, F d) F, F, F
a) 85 c) 733
b) 5 d) 46
Aula 3
Estrutura de seleção simples
e composta
Claro como a água? Não? Então vamos explicar cada linha do bloco prin-
cipal para que não fique nenhuma dúvida.
Iniciamos com a declaração de três variáveis. Uma para armazenar o valor
informado pelo jogador humano, outra para o número do computador, e uma
terceira para armazenar a soma dos dois primeiros.
inteiro humano , computador , total
As duas linhas seguintes apresentam uma mensagem na tela solicitando que o
jogador humano informe um número inteiro, armazenando-o na variável humano.
escrever “Digite um número inteiro: ”
ler humano
Após isso, é a vez de o computador escolher seu lançamento, que é reali-
zado de forma aleatória. Para isso, vamos utilizar duas funções predefinidas no
portugol IDE:
tela. Isso é feito de forma bem simples, dentro de um desvio condicional composto
no qual a condição verificará se o resto da divisão (%) do valor contido em total
por 2 é 0. Se o resto for 0, significa que o valor é par. Senão, só poderá ser
ímpar. Temos então:
se total % 2 = 0 entao
escrever “\nPAR – Ganhei! É a superioridade da máquina!!”
senao
escrever “\nÍMPAR – Parabéns! Você ganhou.”
fimse
inicio
inteiro x<-4,y<-2,z<- -3
real resultado
resultado <- (x%2)*z^3
se resultado < 0 entao
escrever “CONDIÇÃO 1”
senao
se resultado > 0 entao
escrever “CONDIÇÃO 2”
senao
escrever “CONDIÇÃO 3”
fimSe
fimSe
fim
a) Condição 1
b) Condição 2
c) Condição 3
4. Tudo o que é feito por um desvio condicional composto pode ser represen-
tado utilizando desvios condicionais simples? Elabore uma resposta com
cinco a dez linhas.
E então? Não está tão difícil, não é mesmo? Agora que você já domina as
estruturas de seleção simples e compostas, poderá verificar como aumenta seu
poder quando trabalharmos com essas estruturas encadeadas (ou aninhadas),
permitindo criar estruturas de decisão muito mais complexas e úteis. Não se
esqueça de revisar esta aula e de dar uma boa olhada no material da próxima
para facilitar o aprendizado. Até lá!
Anotações
Aula 4
Estrutura de seleção encadeada
Após esta aula, você já terá conhecimento para desenvolver algoritmos com
um grau de complexidade maior, e poderemos avançar para outro tipo de estru-
turas de grande importância ao desenvolvimento de sistemas.
Lembra do problema dois da aula anterior (aula três)? Como não havíamos
explicado ainda o se aninhado, resolvemos com três se simples. Mas será que
essa era a melhor forma de resolver esse problema? Veja e analise o exemplo a se-
guir, dessa vez resolvido com estrutura condicional encadeada (se encadeado).
Para concluir esta aula, temos ainda mais uma estrutura bastante útil em
determinadas situações. Trata-se da estrutura de decisão de múltipla escolha.
Segundo Forbellone e Eberspächer (2005), quando temos um conjunto de
elementos discretos que necessita ser testado e ações diferentes são associadas
a esses valores, estamos diante de uma estrutura de decisão encadeada homo-
gênea do tipo se-senao-se. Como essa situação é bastante comum no desenvolvi-
mento de algoritmos que dependem de alternativas (desvios condicionais), usa-se
uma estrutura específica para esses casos, a seleção de múltipla escolha.
A sintaxe dessa estrutura pode ser representada da seguinte forma:
escolhe <expressão_0>
caso <Expressão_1o>,. . .,<Expressão_1n>:
<instruções>
. . . . . . . . . . .
caso <Expressão_no>,. . .,<Expressão_nn>,:
<instruções>
defeito:
<instruções>
fimescolhe
Nesse exemplo, você pode verificar que, com base no conteúdo da variável
sexo, a estrutura de seleção com múltiplas escolhas irá comparando o conteúdo
da variável com o valor apresentado nas opções (caso). Se combinar com alguns
dos valores, será executado o respectivo bloco de comandos. Se não houver
nenhuma equivalência entre as opções apresentadas, será executado o bloco de
comandos padrão (default), no Portugol IDE denominado defeito.
Saiba mais
1 início
2 texto nome
3 inteiro sexo, idade
4 escrever “Entre com seus dados\n”
5 escrever “Nome: \n”
6 ler nome
7 escrever “Sexo:\n<1> Masculino\n<2> Feminino”
8 ler sexo
9 escrever “Idade:\n”
10 ler idade
11 se sexo=/=1 e sexo =/=2 entao
12 escrever “Sexo indefinido!\n”
1 início
2 texto nome
3 inteiro sexo, idade
4 escrever “Entre com seus dados\n”
5 escrever “Nome: \n”
6 ler nome
7 escrever “Sexo:\n<1> Masculino\n<2> Feminino”
8 ler sexo
9 escrever “Idade:\n”
10 ler idade
11 se sexo=/=1 e sexo =/=2 entao
12 escrever “Sexo indefinido!\n”
13 senao
14 se idade>0 entao
15 se sexo = 1 e idade<18 entao
16 escrever “\Bem vindo”,nome,”\nVocê é menor de idade
17 senao
18 se sexo =1 entao
19 escrever \Bem vindo”,nome,”\nVocê é maior de idade
20 senao
21 se sexo = 2 e idade<18 entao
22 escrever “\Bem vinda”,nome,”\nVocê é menor de idade.”
23 senao
24 escrever “\Bem vinda”,nome,”\nVocê é maior de idade.”
25 fimSe
26 fimSe
27 fimSe
28 senao
29 escrever “Você deve entrar com idade maior que zero!”
30 fimSe
31 fimSe
32 fim
inicio
real res, n1, n2
texto opcao
escrever “\nDigite a operacao desejada:”
ler opcao
escrever “Digite o primeiro operando:
ler n1
esrever “Digite o segundo operando:”
ler n2
escolhe opcao
caso “+”:
escrever n1+n2
caso “–”:
escrever n1–n2
caso “*”:
escrever n1*n2
caso “/”:
escrever n1/n2
defeito:
escrever “Opcção inválida.”
fimescolhe
fim
Anotações
Aula 5
Estrutura de repetição
com teste no início
Para que você consiga acompanhar de forma satisfatória esta aula, é neces-
sário que domine as estruturas de programação seqüencial e de desvio condi-
cional estudadas até o presente momento. Também a tranqüilidade e a segurança
na construção de expressões lógico-matemáticas para a correta compreensão e
desenvolvimento das estruturas que começaremos a estudar a partir desta aula
serão fundamentais. Nosso estudo exige conhecimento cumulativo, por isso não
deixe lacunas para trás!
Saiba mais
Muito bem. Mas creio que, após analisar o código anterior, você já deva
ter se perguntado:
Mas... e se eu não quiser as médias dos 50 alunos? Se quiser parar antes dos cinqüenta
ou se quiser calcular para um número maior?
Realmente o algoritmo proposto está bem rígido nesse aspecto. Ele só serve
para calcular a média de 50 alunos. Nem mais, nem menos (a não ser que você
force o encerramento do programa). Mas basta uma pequena alteração para
resolver esses problemas. Vejamos.
unicamente para indicar o número do aluno para o qual foi realizado o cálculo
da média. Ele permanece com a função de contador, mas não influencia mais
a execução ou não do loop.
Dessa forma, o controle de execução do laço passou para o usuário, o qual
gerencia essa estrutura por meio da variável continua. Enquanto o usuário perma-
necer inserindo o valor “s” para essa variável, o laço continua em execução.
Quando for digitado um caractere diferente, o loop será encerrado. Assim a
variável continua é o que denominamos de critério de parada do nosso laço.
Você também pode especificar previamente, durante a execução do algo-
ritmo, a quantidade de vezes que o laço será repetido. Vejamos um exemplo
disso em um algoritmo implementado para retornar a média de n números digi-
tados pelo usuário. O algoritmo deve solicitar ao usuário quantos números serão
digitados para o cálculo. Após isso, deve entrar no laço, solicitar a entrada
dos n valores e, após a leitura de todos, calcular a média. Aqui entra mais um
conceito: acumulador. Assim como o contador serve para contar a quantidade
de vezes que um laço, ou um determinado evento dentro dele, é executado, o
acumulador visa a realizar o armazenamento cumulativo de valores dentro de
uma variável (como, por exemplo, um somatório).
Assim, dentro do laço, além do contador que controlará o número de execu-
ções do loop, teremos um acumulador, o qual irá somando todos os valores
digitados para, após o encerramento do laço, ser dividido pela quantidade de
valores digitados obtendo, dessa forma, a média.
O seu algoritmo deve ficar parecido com o exemplo a seguir.
Figura 4 Exemplo de loop com teste no início.
// Exemplo 18 – Cálculo da média com acumulador
inicio
real valor , acum <- 0
inteiro cont <- 1 , n
escrever “Quantos números deseja digitar? ”
ler n
enquanto cont <= n faz
escrever “Digite o valor ” , cont , “: ”
ler valor
acum <- acum + valor
cont <- cont + 1
fimenquanto
cont <- cont – 1
escrever “\nA soma dos ” , cont , “ números é: ”,
acum
escrever “\nA média dos números é: ” , acum / cont
fim
Com esse exemplo, concluímos mais uma aula da nossa disciplina de lógica
para programação. Revise bem os conceitos e exemplos dados de forma a dirimir
qualquer dúvida. Sobretudo não custa lembrar que você deve treinar muito o
desenvolvimento de algoritmos, pois só é possível aprender a desenvolvê-los
colocando a mão na massa, construindo e testando algoritmos. Não se iluda
em querer aprender apenas compreendendo o funcionamento de algoritmos
prontos. Crie problemas e solucione-os com algoritmos desenvolvidos por você.
Use a criatividade!
1. Dado o algoritmo a seguir, que faz uso do laço de repetição enquanto, qual
será o valor exibido na tela após sua execução?
inicio
inteiro x , resultado
x <– 5
resultado <– 0
enquanto ( x > 0 ) faz
resultado <– x * 2
resultado <– resultado – 2
x <– x – 1
fimenquanto
escrever resultado
fim
a) 2 c) 0
b) –2 d) –1
Realize uma análise desse código comparando-o com o que você desen-
volveu e, para uma melhor compreensão, implemente-o no Portugol IDE para
verificar sua funcionalidade.
Finalmente, na atividade quatro, um contador nada mais é do que uma vari-
ável utilizada para contar a quantidade de execuções de um laço, ou a quanti-
dade de vezes que uma determinada situação acontece. Pode ser utilizada de
muitas formas, mas sempre procurando contar as ocorrências de algum evento
dentro do laço. O acumulador, por outro lado, é uma variável que armazena
valores de forma cumulativa. O acumulador pode, por exemplo, realizar o soma-
tório de valores a cada execução do laço.
Anotações
Aula 6
Estrutura de repetição
com teste no final
Compare o fluxograma dessa estrutura com o do faz ... enquanto para iden-
tificar a diferença de funcionalidade.
Você pôde notar, nesse exemplo, que o laço só encerra sua execução
quando a sua condição retorna um valor verdadeiro; nesse caso, quando a
variável i é igual a dez.
Vamos exercitar um pouco? Tente resolver o seguinte problema e só depois
de ter a sua versão do algoritmo funcionando confira com o pseudocódigo aqui
apresentado para poder comparar detalhes e diferenças das implementações.
Problema: desenvolva um jogo no qual o computador escolhe um número inteiro
positivo entre 0 (zero) e 100 (cem) de forma aleatória (já utilizamos antes essa
função). Após determinar o número (sem exibi-lo ao usuário), o computador
solicitará que você permaneça “chutando” valores até acertar o número oculto.
A cada tentativa do usuário, o computador deve informar se o número oculto
é maior ou menor do que o informado pelo jogador. O jogo terminará no
momento em que o número for localizado, quando então o computador deverá
encerrar o laço, informando o número oculto e a quantidade de tentativas neces-
sárias para encontrá-lo.
Pronto! Analise esse código e compare com o anterior para verificar quais
foram as alterações implementadas.
Com isso, estamos encerrando o conteúdo desta aula e nos aproximando do
final da nossa disciplina. Não deixe de executar as atividades do caderno e de
acessar o material complementar disponibilizado pelos professores.
inicio
inteiro numero, contador
repete
escrever “Introduza um numero:”
ler numero
contador <- contador + 1
ate contador > 5
fim
inicio
inteiro opcao, quantidade
real total <– 0.0
repete
escrever “Produto 1 - R$ 10,00\n”
escrever “Produto 2 - R$ 25,00\n”
escrever “Produto 3 - R$ 50,00\n”
escrever “Escolha um número de produto ou 0 para sair”:
ler opcao
escolhe opcao
caso 0:
escrever “Total da compra:”, total
caso 1:
ler quantidade
total <– total + quantidade * 10.0
caso 2:
ler quantidade
total <– total + quantidade * 25.0
caso 3:
ler quantidade
total <– total + quantidade * 50.0
fimescolhe
ate (opcao = 0)
fim
inicio
inteiro maior <- 1
inteiro numeros
repete
escrever “Digite um numero (zero para sair): “
ler numeros
se numeros > maior entao
maior <- numeros
fimse
ate maior = 0
escrever “O maior numero digitado foi: “ , maior
fim
Dado o algoritmo anterior, o que está errado em relação ao que foi proposto?
a) O Número maior não será calculado de forma correta, pois o mesmo
sempre estará com o valor zero.
b) A variável número não armazena o valor digitado pelo usuário.
c) O laço de repetição encerra após a leitura do número 1, não do zero.
d) O laço de repetição ficará repetindo, pois nunca será atendida a
condição de parada.
Na seqüência (linha 20), é pedido ao usuário que entre com o quarto valor (1), de
acordo com o enunciado, que será atribuído à variável quantidade. Na linha 21
a variável total vai receber o resultado do processamento de total + quantidade *
50. Sabendo que total é igual a 125 e quantidade igual a 1, podemos reescrever
para 125 + 1 * 50, que é igual a 175. Em seguida, por causa do laço de repetição
repete...até, parte do algoritmo será repetida. É solicitado ao usuário a entrada do
último dado (0). A estrutura de seleção múltipla desviará a execução do algoritmo
para a linha 11 (caso 0). É impresso em tela Total da compra: 175.0 (lembrando
que total é uma variável real) e sairá finalizando o algoritmo.
Para a atividade três, a resposta é a alternativa (d). Isso porque a afirmativa
( I ) é verdadeira, pois como o próprio nome diz, estrutura seqüencial obedece a
uma seqüência linear de execução. Já na afirmativa (II), sabemos que um teste
condicional é baseado em lógica convencional e, portanto, deve resultar em um
valor verdadeiro ou falso. Lembre-se dos tipos de desvios condicionais: seleção
simples, composta e encadeada. Repare que nessa afirmativa não é especificada
qual o tipo de desvio condicional, ou seja, a afirmação generaliza para todos os
tipos. Contudo, na seleção simples, uma instrução ou um conjunto de instruções
é executado somente se o teste condicional especificado retornar o valor verda-
deiro. Adicionalmente, na seleção composta, as instruções contidas nos desvios
condicionais devem ser executadas sempre para situações verdadeiras ou falsas.
Isso torna a afirmativa (II) incorreta. A afirmativa (III) também é falsa, pois uma
seqüência de comandos pode ser executada nenhuma, uma ou várias vezes.
Para a atividade quatro, a alternativa a ser assinalada é a (d), uma vez que
a variável maior já inicia com um valor diferente de zero e, em nenhum momento
na execução do algoritmo ela poderá assumir o valor zero, pois o desvio condi-
cional dentro do bloco do laço de repetição não permite essa atribuição. A
variável que deveria servir para encerrar o laço seria a numeros, pois é ela que
recebe o valor digitado pelo usuário, enquanto a maior sempre irá armazenar
o maior valor digitado.
Anotações
Aula 7
Estrutura de repetição
com variável de controle
laço de repetição com variável de controle, também conhecido como para, difere
dos anteriores, pois sempre repete a execução do bloco de instruções um número
predeterminado de vezes, uma vez que essa estrutura não prevê uma condição
(como é o caso das estruturas de repetição vistas anteriormente), possuindo limites
fixos de início e fim do laço de repetição (FORBELONE; EBERSPÄCHER, 2005).
Vejamos, a seguir, a sintaxe e representação por meio de fluxograma dessa
estrutura de repetição.
FLUXOGRAMA
Agora podemos dar uma olhada em um pequeno algoritmo que, usando o laço
de repetição para, lista dez números inteiros seqüenciais.
Repare que é criada uma variável de controle do tipo inteiro, nesse exemplo
nomeada como contador e, dentro da primeira linha do laço, ela é inicializada
com o valor 0 (zero). Nessa estrutura você pode inicializar a variável de controle
com o valor necessário para o início das instruções do laço. A seguir, é definido o
valor final da variável (9) e o valor do incremento automático (passo 1 – opcional).
Assim, cada vez que o algoritmo chegar ao final da estrutura (comando proximo),
o valor da variável será automaticamente incrementado no valor estipulado em
passo. Se não for definido o passo, será automaticamente assumido passo 1.
O pseudocódigo seguinte apresenta um exemplo de laço para com decre-
mento, para o qual foi necessário inicializar a variável de controle com um valor
maior (9) que o valor final (0) e definir o passo com uma unidade negativa (-1).
Saiba mais
Vamos agora construir um algoritmo que execute a leitura das notas de duas
provas de uma turma de alunos, cujo quantitativo será informado pelo usuário.
Após a leitura das notas de cada aluno, o algoritmo deve calcular e exibir a
média final, informando se o aluno foi aprovado (média igual ou superior a
seis), ou se foi reprovado (média inferior a seis). No final dos cálculos referentes
à turma, o algoritmo deve informar a média geral da turma juntamente com a
maior e a menor médias individuais. O algoritmo deve, no final, solicitar se o
usuário deseja continuar calculando médias para outra turma e, caso seja digi-
tado n (não), deve ser encerrada a execução.
Construa o algoritmo necessário para essa atividade e, após desenvolver o
seu, compare com o apresentado a seguir, analisando as estruturas e a lógica
utilizada em ambos.
Com esse último exemplo, chegamos ao final da nossa disciplina. Não deixe
de revisar qualquer parte do conteúdo em que você tenha ainda alguma dúvida,
questionando os professores para uma melhor compreensão.
A última estrutura vista nesta disciplina foi apresentada nesta aula. A estru-
tura de repetição com variável de controle ou para, como é mais conhecida.
Nas estruturas anteriores, enquanto e repete, é freqüentemente difícil precisar
o número de vezes que um bloco de instruções irá ser executado. Esse tipo de
laço de repetição (para) difere dos anteriores, pois possui um número pré-deter-
minado de execuções do seu bloco de instruções.
a) inicio
inteiro contador1 <- 0
inteiro contador2 <- 0
escrever “Tabuada de Somar”
enquanto contador1 <= 10 faz
contador2 <- 1
enquanto contador2 <= 10 faz
escrever “\n\t”,contador1,”*”,contador2,”=”, contador1 *contador2
contador2 <- contador2 + 1
fimenquanto
escrever “\n\n”
contador1 <- contador1 + 1
fimenquanto
fim
b) inicio
inteiro contador1
inteiro contador2
contador1 <- 0
contador2 <- 0
escrever “Tabuada de Somar”
contador1 <- 1
repete
contador2 <- 1
enquanto contador2 <= 10 faz
escrever “\n\t”,contador1,”*”,contador2,”=”,contador1*contador2
contador2 <- contador2 + 1
fimenquanto
escrever “\n\n”
contador1 <- contador1 + 1
ate contador1 >= 10
fim
c) inicio
inteiro contador1, contador2
escrever “Tabuada de Somar”
para contador1 de 1 ate 10 passo 1
para contador2 de 1 ate 10 passo 1
escrever “\n\t”,contador1,”*”,contador2,”=”,contador1*contador2
proximo
escrever “\n\n”
proximo
fim
d) inicio
inteiro contador1
inteiro contador2
contador1 <- 0
contador2 <- 0
escrever “Tabuada de Somar”
contador1 <- 1
repete
contador2 <- 1
repete
escrever “\n\t”,contador1,”*”,contador2,”=”,contador1*contador2
contador2 <- contador2 + 1
ate contador2 <= 10
escrever “\n\n”
contador1 <- contador1 + 1
ate contador1 >= 10
fim
A seqüência correta é:
a) F, F, V, V, V c) V, F, V, F, F
b) F, V, F, F, V d) V, F, V, V, F
3. Fatorial é o produto dos inteiros consecutivos de 1 até um dado número natural n. Seu
símbolo é n!. O fatorial de 5 é dado por: 5! = 1 * 2 * 3 * 4 * 5 = 120. Por definição, fato-
rial de 0 é 1 (0! = 1). Considerando que você possui mais de uma forma de construir uma
estrutura de repetição, analise atentamente os algoritmos seguintes e assinale a alternativa
mais adequada à questão.
FIMSE
c) SE NOTA < 6 ENTAO
ESCREVER “Reprovado”
SENAO
ESCREVER “APROVADO”
FIMSE
d) ((3 % 2) * (2^4)) + (10 / 5)
e) PARA contador DE 0 ATE 9 PASSO 1
ESCREVER contador , “\t”
PROXIMO
f) N <- 6
g) ENQUANTO contador < 10 FAZ
ESCREVER contador , “\t”
contador <- contador + 1
FIMENQUANTO
A seqüência correta é:
a) a–V; b–IV; c–III; d–VII; e–VI; f–II; g–I
b) a–VII; b–V; c–III; d–IV; e–VI; f–I; g–II
c) a–VII; b–VI; c–IV; d–V; e–III; f–I; g–II
d) a–V; b–IV; c–VI; d–III; e–I; f–II; g– VII
Anotações
Equipe EADCON
Coordenador Editorial William Marlos da Costa
Apresentação
básicas de redes de computadores e banco de dados.
Para terminarmos os estudos referentes a esta disciplina, analisaremos,
na sétima aula, os profissionais que atuam na área de tecnologia da
informação.
Com o intuito de combinar reflexões teóricas com propostas práticas, este
material não só trará contribuições relevantes para o aprendizado da compu-
tação básica, como também motivará você para um trabalho mais prazeroso
com esse conteúdo.
Desejamos bons estudos!
Prof. Alexandre Tadeu Rossini da Silva
Prof. Evanderson S. de Almeida
EMENTA
História da computação. Componentes básicos do computador. Sistemas
posicionais de numeração. Operações aritméticas no sistema binário de
numeração. Classificação de software. Noções básicas de redes de compu-
tadores e banco de dados. Profissões na área de informática.
Plano de Ensino
OBJETIVOS
• Conhecer a história da computação, os componentes básicos do
computador e os sistemas posicionais de numeração.
• Reconhecer as operações aritméticas no sistema binário de
numeração.
• Adquirir noções básicas de redes de computadores e banco de
dados.
• Estudar a classificação de software.
CONTEÚDO PROGRAMÁTICO
• História da computação
• Componentes básicos do computador
• Sistemas posicionais de numeração
• Operações aritméticas no sistema binário de numeração
• Classificação de software
• Noções básicas de redes de computadores e banco de dados
• Profissões na área de informática
BIBLIOGRAFIA BÁSICA
BROOKSHEAR, J. Glenn. Ciência da computação: uma visão abrangente. 7. ed.
Porto Alegre: Bookman, 2004.
POLLONI. Enrico G. F.; FEDELI, Ricardo Daniel; PERES, Fernando Eduardo.
Introdução à ciência da computação. São Paulo: Thomson, 2003.
VELLOSO, Fernando de Castro. Informática: conceitos básicos. 7. ed. Rio de
Janeiro: Elsevier, 2004.
BIBLIOGRAFIA COMPLEMENTAR
ALMEIDA, Marcus Garcia de. Fundamentos de informática. 2. ed. Rio de Janeiro:
Brasport, 2002.
MARÇULA, Marcelo; BENINI FILHO, Pio Armando. Informática: conceitos e apli-
cações. São Paulo: Érica, 2005.
Aula 1
História da computação
1.1 Dados
O ser humano sempre processou dados. Desde o momento em que um
cidadão antigo coletava pedras para representar a quantidade de ovelhas de
seu rebanho, ou escrevia nas paredes das cavernas, em cartões perfurados para
controlar o posicionamento e o movimento de agulhas do tear, ou até o tempo
em que grandes transações bancárias são efetuadas entre duas mega-empresas
situadas em continentes distintos, deparamo-nos com a definição de dados.
Saiba mais
Saiba mais
(ou seja, não vem definido de fábrica), poder decidir que cálculos ou
operações a máquina irá realizar. A consciência com o conceito de
programação que temos hoje não é mera coincidência.
Nesta aula, você pôde compreender o que são dados e as diferenças entre
dados analógicos e digitais. Fez uma viagem no tempo analisando as invenções
que contribuíram para o surgimento do computador.
Compreendeu que, de acordo com a evolução histórica dos computadores,
é possível agrupar quatro diferentes gerações, notadas sempre por um marco,
um evento revolucionário, que permitiu à tecnologia saltar consideravelmente em
direção a um estado mais evoluído.
Você aprendeu que, na primeira geração, os computadores eram baseados
em válvulas. Nessa geração, o primeiro computador criado foi o ENIAC. Já na
segunda geração, você viu que os computadores eram baseados em transistores
que eram muito mais rápidos e baratos que as válvulas, além de consumirem
muito menos energia elétrica. Na terceira geração, os computadores eram base-
ados em circuitos integrados, que consistiam em um conglomerado de transis-
tores em um pequeno chip de silício. Por fim, na quarta geração, sugiram os
Na atividade um, você expôs que dados analógicos podem assumir diversos
valores em um dado intervalo numérico, e os dados digitais assumem um número
limitado de valores nesse mesmo intervalo numérico, contudo não causa nenhum
tipo de prejuízo para os cálculos executados com esse intervalo. Se sua resposta
não contemplou esse princípio, sugerimos que retorne ao conteúdo sobre dados
digitais e analógicos e releia com atenção sobre cada um deles. Caso sua
resposta tenha remetido à idéia exposta, parabéns! Você atingiu o objetivo de
compreender a diferença entre dados analógicos e dados digitais.
Na atividade dois, a resposta correta é a alternativa (c). Se essa foi a sua
resposta, parabéns! Você acertou e atingiu nosso objetivo de conhecer o panorama
da evolução dos computadores, composto por descobertas da ciência e invenções de
cientistas em diversos momentos da história. Caso esta não tenha sido sua resposta,
sugiro que você retorne ao conteúdo sobre a evolução histórica dos computadores
e reveja com atenção as características marcantes de cada geração.
Na atividade três, mencionou que a válvula interrompe ou permite a
passagem de corrente elétrica, dependendo de como a energia passa por dentro
dela. Com isso, percebemos dois estados físicos definidos: com corrente elétrica,
temos o bit “um” (verdadeiro); sem corrente elétrica, o bit “zero” (falso). Eis aí
dois estados, o suficiente para realizar quaisquer cálculos baseados em álgebra
booleana. Se você conseguiu transmitir essa idéia, parabéns, atingiu o obje-
tivo de conhecer o panorama da evolução dos computadores. Caso não tenha
conseguido, volte ao conteúdo sobre a evolução histórica e releia com atenção
sobre as válvulas e a álgebra booleana.
Na atividade quatro, a resposta é a alternativa (d). Se essa foi a sua resposta,
parabéns! Você atingiu nosso objetivo de conhecer o panorama da evolução dos
computadores, composto por descobertas da ciência e invenções de cientistas
em diversos momentos da história. A alternativa (d) está incorreta, pois o circuito
integrado não é um substituto para os transistores e sim um agrupamento de
muitos transistores em um pequeno espaço de silício (chip). Caso não tenha acer-
tado a resposta, sugerimos que retorne ao conteúdo sobre a terceira geração de
computadores na evolução histórica dos computadores e reveja com atenção as
características marcantes dessa geração.
Anotações
Aula 2
Componentes básicos do computador
2.4.3 Registradores
Os registradores são pequenas memórias que servem para auxiliar o proces-
sador, armazenam resultados temporários, durante o processo de cálculo. Pense
que o processador teria de se esforçar muito mais para realizar operações sem
esses registradores internos, pois, se assim fosse, teria de utilizar a memória
principal, que está mais longe, externa ao processador.
Existem registradores com funções genéricas e específicas que são muito
mais rápidos do que aqueles que são preparados para responder a apenas um
tipo fixo de operação, enquanto os genéricos executam diversos tipos de opera-
ções, tal qual a memória principal. Os registradores são memórias internas para
uso geral, usados pela ULA para armazenar dados (caracteres, números biná-
rios) que estão sendo processados.
São exemplos de registradores gerais: AX, BX, usados para armazenar
números binários. São exemplos de registradores específicos: IP, Instruction
Pointer, usados para armazenar a referência do endereço da memória principal
(RAM), que contém a próxima instrução a ser executada.
Isso facilita a vida do programador, que terá à sua disposição um leque de instru-
ções prontas de fábrica a fim de alcançar seus objetivos.
Não há como definir qual o melhor dos processadores. Alguns autores
defendem o RISC como sendo o mais performático e “puro” dos processadores;
outros defendem que a complexidade trazida pelo CISC facilita a vida dos desen-
volvedores. De fato os processadores RISC costumam ser mais rápidos que os
processadores CISC. Mais rápido nem sempre significa melhor. Os computadores
da Apple (power pc, I-mac) não são tão populares no Brasil, mas sim nos EUA.
São preferidos quando o assunto é, por exemplo, processamento de vídeo, som e
gráfico, realizado por empresas de jogos eletrônicos, maquetes virtuais, etc.
Mesmo assim, o processador Intel é o mais popular por seguir uma regra de
retro compatibilidade com programas construídos para outros processadores da
mesma marca, mesmo que ultrapassados. Isso significa que um programa feito
para um processador Intel 4x86 (antigo) terá grandes chances de ser executado
em um Pentium IV (novo). Ter a vantagem de retro compatibilidade coloca a
Intel em posição comercial privilegiada, uma vez que os programadores de
sistemas e aplicativos terão menos trabalho, codificarão uma só vez e verão o
seu programa funcionar em várias versões futuras da Intel.
Chegamos ao fim da segunda aula. Agora você está ciente de importantes
informações que nortearão de maneira significativa as decisões que tomará em
relação à programação e demais relacionamentos associados ao computador.
Repare, também, o quanto a primeira aula apresentou aspectos fundamen-
tais sobre a evolução dos componentes de nossos computadores, o que fez com
que você recebesse a informação desta aula de forma fundamentada. Leve, em
sua mente, os conceitos aqui expostos, pois irá usá-los como, no mínimo, “pano
de fundo” para o desenvolvimento de aplicações, preparação de conteúdos,
ministração de palestras e seminários e os estudos da maioria das disciplinas que
serão vistas neste curso e que sejam relacionadas ao computador moderno.
Anotações
Aula 3
Sistemas posicionais de numeração
Exemplo
Exemplos
Exemplos
Exemplos
Exemplos
(11011)2:
b = 2 (base do número)
n = 5 – 1 = 4 (quantidade de algarismos – 1)
1x24 + 1x23 + 0x22 + 1x21 + 1x20
16 + 8 + 0 + 2 + 1 = (27)10
(3D9)16 :
b = 16 (base do número)
n = 3 – 1 = 2 (quantidade de algarismos – 1)
3x162 + Dx161 + 9x160
3x162 + 13x161 + 9x160
768 + 208 + 9 = (985)10
Exemplo
(125)10 : ( ? )2 15 ÷ 2 = 7 e resto = 1
125 ÷ 2 = 62 e resto = 1
7 ÷ 2 = 3 e resto = 1
62 ÷ 2 = 31 e resto = 0
3 ÷ 2 = 1 e resto = 1
31 ÷ 2 = 15 e resto = 1
1 < 2 (base desejada)
125 2
1 6
62 22
2
0 3
31 12
2
1 1
15 52
2
1 7 2
sentido da leitura
1 3 2
1 1
(125)10 = (1111101)2
Exemplo
(1010011011)2
0010 1001 1011
2 9 B
Exemplo
(54B)16
5 4 B
Exemplo
(1010011011)2
001 010 011 011
1 2 3 3
Exemplo
(543)8
5 4 3
Exemplo
(543)8
5 4 3
1 6 3
Exemplo
(1F4B)16
1 F 4 B
1 7 5 1 3
onde:
b = base do número (exemplo: base 2, 8, 10 e 16)
n = quantidade de algarismos da parte inteira –1
an = algarismos de acordo com sua posição
m = quantidade de algarismos da parte fracionária
Vejamos alguns exemplos de conversão de números fracionários de outras
bases para a base 10.
Exemplos
Exemplos
parte fracionária:
0 1
7,42710 = 111,012
Estamos chegando ao fim desta aula. Nela expusemos que existem vários
sistemas de numeração. Entre esses sistemas de numeração, os de representação
posicional (atribuição de pesos para cada posição de algarismo) se destacam
pela facilidade de realização de operações aritméticas, que serão estudadas na
próxima aula.
Nesta aula, vimos que o ser humano desde sempre teve a necessidade de
quantificar coisas, para isso foram criados os sistemas numéricos. Com as repre-
sentações numéricas, torna-se possível realizar tarefas antes complexas de forma
trivial. Entre as várias formas de representações, destacam-se a decimal (com
dez símbolos de representações), a binária (com dois símbolos) – amplamente
utilizada nos computadores, a octal (com oito símbolos) e a hexadecimal (com
dezesseis símbolos). Explicamos como se realizam conversões entre essas quatro
formas de representação, que obedecem a uma única lei: a lei de formação.
Basicamente, a lei de formação atribui pesos para as posições de cada algarismo
HEX: 4 9
OCT: 1 1 1
BIN: 1 0 0 1 0 0 1
DEC: 64 32 16 8 4 2 1 = 73
(Devemos somar os valores decimais somente onde o valor em binário é
equivalente a 1).
Se você conseguiu resolver essas atividades, significa que compreendeu os
sistemas de representação numérica de base 2, 8, 10 e 16 e suas conversões,
que são os objetivos desta aula.
GATES, Bill. A estrada do futuro. São Paulo: Companhia das Letras, 1995.
IDOETA, Ivan V.; CAPUANO, Francisco G. Elementos de eletrônica digital.
28. ed. São Paulo: Érica, 1998.
LOURENÇO, Antonio C. et al. Circuitos digitais. São Paulo: Érica, 1996.
WEBER, Raul F. Fundamentos de arquitetura de computadores. 3. ed. Porto
Alegre: Sagra Luzzatto, 2004.
Aula 4
Operações aritméticas no sistema
binário de numeração
4.2.1 Complemento de 1
Outra maneira de representar números binários é o complemento de 1. Para
encontrar o valor simétrico de um número binário na notação complemento de
1, basta inverter todos os bits que o compõem, ou seja, onde for 0 substitui por
1, e onde for 1 substitui por 0. Por exemplo:
• 0001 = 1, invertem-se todos os bits e tem-se 1110 = –1;
• 0101 = 5, invertem-se todos os bits e tem-se 1010 = –5.
Essa notação também descreve um intervalo de representação simétrico. Ela
tem a mesma desvantagem de apresentar dois valores diferentes para o zero. A
figura dois, a seguir, apresenta os valores em complemento de 1 e o seu corres-
pondente em decimal.
4.2.2 Complemento de 2
Com a finalidade de encontrar um intervalo de representação que tenha
apenas um valor para zero, foi desenvolvida a notação complemento de 2.
Para se chegar à representação em complemento de 2, faz-se o complemento
de 1 (ou seja, invertem-se todos os bits do número) e soma-se um ao resultado.
Por exemplo:
Saiba mais
PRIMEIRO SEGUNDO
RESULTADO DA SUBTRAÇÃO
OPERANDO OPERANDO
0 0 0
0 1 1, vai 1 para ser subtraído no dígito seguinte
1 0 1
1 1 0
* * *
14 = 1 1 1 0
–7 = 0 1 1 1
7= 0 1 1 1
7 = 00111
2 = 00010
7 – 2 => 00111 – 00010 => 00111 + (11101 + 00001) => 00111 + 11110 => 100101
1 0 1 1 Multiplicando
X 1 0 1 0 Multiplicador
0 0 0 0
+ 1 0 1 1
+ 0 0 0 0
+ 1 0 1 1
1 1 0 1 1 1 0
4.7.2 Multiplicação
Para se realizar uma multiplicação, primeiramente verifica-se se uma das
mantissas a operar é zero; caso afirmativo, o resultado é zero;
Se não houver zeros:
• some os expoentes;
• multiplique as mantissas;
• normalize o resultado.
4.7.3 Divisão
Para se realizar uma divisão, primeiramente verifique se uma das mantissas
a operar é zero; caso afirmativo:
• se o divisor for zero, é impossível e dispara uma exceção de divisão
por zero;
• se o dividendo for zero, o resultado será igual a zero;
0 1 1 1 0 0 1 1
(vai um) 1 1 1 1 1 1
0 1 1 1 0 0 1 1
+ 0 1 1 1 0 1 0 1
1 1 1 0 1 0 0 0
Anotações
Aula 5
Classificação de software
Saiba mais
Como você viu, o acesso ao código fonte é um dos pilares para a caracteri-
zação de um software livre. Isso não significa que não seja comercial, muito pelo
contrário. A idéia de se ganhar dinheiro com software livre não está na venda de
produtos fechados, mas sim na venda de serviços de qualidade que estão, a todo
o momento, expostos, sendo colocados à prova e ao julgamento da comunidade
(MOLINARI, 2007).
Um software, quando se diz livre, geralmente está regido pela GPL (General
Public License), que consiste na designação da licença para software livre criada
por Richard Stallman no final da década de 1980, regido pela Free Software
Foundation. É utilizado por grandes projetos, como o do sistema operacional
Linux (FSF, [s.d.]). Assim essa vertente da classificação de software pode ser divida
em duas subdivisões, que são: Open Source e Livre Comercial, tratados a seguir.
Lembre: nem sempre um software gratuito é livre, e nem todo software livre deixa comple-
tamente de ser comercial.
Saiba mais
Anotações
Aula 6
Noções básicas de redes de
computadores e banco de dados
Para o aprendizado desta aula, é necessário que você tenha força de vontade
para conhecer novas tecnologias. Por isso procure saber mais sobre o que será
falado aqui em sites relacionados com estas duas áreas: redes de computadores
e bancos de dados.
Saiba mais
Podemos observar que o meio de transmissão entre cada uma dessas interli-
gações de computadores é diferenciado, como veremos na seção a seguir.
Saiba mais
Saiba mais
Saiba mais
Aula 7
O profissional de informática
Saiba mais
Saiba mais
c) Analista de sistemas
É responsável pelo levantamento das necessidades do cliente e pela
elaboração de um modelo conceitual do sistema a ser desenvolvido. É o
projetista de sistemas. Fazendo-se analogia com engenharia civil, esse
profissional projeta a “planta” dos sistemas, indicando detalhes técnicos
e algoritmos.
d) Auditor de sistemas
É o profissional encarregado em auditar sistemas e redes corporativas,
identificar fraudes e outros tipos de irregularidade, além de analisar
políticas de uso e de segurança.
e) Programador Web
É o profissional responsável pelo desenvolvimento de aplicações para
Web , em termos de implementação de software. Sua principal atividade
é o desenvolvimento de aplicações para internet e intranets, além de
sítios de comércio eletrônico, por exemplo.
f) Webmaster
É o responsável pela estrutura, projeto e gerência de aplicações Web,
desde equipes envolvidas com essas aplicações até a infra-estrutura.
Esse projeto de lei, mesmo com pouco tempo, é tido como polêmica e, diante
disso, a SBC se posicionou por meio de uma correspondência para o Senado
Federal. Veja o conteúdo completo do fato exposto pela SBC (2008, [s.p.]):
atenta aos recentes acontecimentos a respeito do Projeto de Lei
607/2007, que trata da Regulamentação da Profissão, a SBC enviou
correspondência para a Senadora Patrícia Saboya, Presidente da
Comissão de Assuntos Sociais, solicitando Audiência Pública.
Em sua correspondência, a SBC justificou o pedido de Audiência
Pública devido à existência de opiniões diversas e muito diver-
gentes e que, nessa audiência, os diversos pontos de vista, tanto
da SBC quanto de outras organizações sociais, poderão ser
apresentados e debatidos amplamente, possibilitando um melhor
encaminhamento do assunto por parte dos Senadores.
Anotações
Equipe EADCON
Coordenador Editorial William Marlos da Costa
Apresentação
Procuramos apresentar os conteúdos por meio de uma linguagem
simples, sem, contudo, descuidar das reflexões teóricas, tão necessárias
à compreensão da realidade. Assim, você deverá compreender mais facil-
mente este assunto, estando pronto para se posicionar como um profissional
de informação, capaz de interagir e dialogar interdisciplinarmente com as
demais áreas da sociedade e não simplesmente imergir em conceitos pura-
mente computacionais.
Estruturamos nossas aulas da seguinte forma: primeiramente, eviden-
ciamos os condicionantes históricos que propiciaram o surgimento da socio-
logia. Logo após, mostramos as transformações pelas quais a sociedade
passou, desde a Revolução Industrial até o surgimento da sociedade da infor-
mação. Nesta sociedade, cada setor é influenciado pela informatização,
assim procuramos evidenciar as alterações no cotidiano dos cidadãos devido
aos impactos das Tecnologias da informação e da Comunicação (TIC). Em
seguida, procuramos analisar as implicações culturais do desenvolvimento
das tecnologias digitais de informação e de comunicação. Também nos preo-
cupamos em descrever os novos desafios exigidos pelo mercado de trabalho
da sociedade do século XXI. Por fim, buscamos suscitar algumas discussões
sobre a ética e exclusão digital.
Desejamos sucesso na disciplina e em todo o curso, lembrando-lhe
que o material aqui apresentado é uma pequena parte, diante da infi-
nidade de possibilidades de aprendizagem que o mundo atual lhe
oferece. Bons estudos!
Prof.ª Eleusa Maria Leão
Prof. Marcelo Ribeiro de Oliveira
EMENTA
Fundamentos de sociologia. Impactos da informática sobre a sociedade.
Mercado de trabalho e a situação atual da informatização da sociedade
brasileira nos seus vários setores. O profissional de informática e a ética
profissional. O futuro da informática e da sociedade.
Plano de Ensino
OBJETIVOS
• Possibilitar o exercício do espírito crítico e reflexivo a respeito
das questões éticas, políticas, sociais e econômicas surgidas na
Sociedade da Informação.
• Identificar as principais características da sociedade baseada no
paradigma da informação e comunicação.
• Possibilitar a reflexão sobre os fundamentos teóricos que embasam o
uso da informação e a aplicação dela e das tecnologias no mercado
de trabalho global, bem como na atual sociedade brasileira.
CONTEÚDO PROGRAMÁTICO
• Fundamentos de sociologia
• Impactos da informática sobre a sociedade
• Mercado de trabalho e a nova economia global
• Situação atual da informatização da sociedade brasileira
• O profissional de informática
• O futuro da informática
BIBLIOGRAFIA BÁSICA
LIMA, Frederico O. A sociedade digital: o impacto da tecnologia na sociedade,
na cultura, na educação e nas organizações. Rio de Janeiro: Qualitymark,
2000.
RUBEN, Guilhermo; WAINER, Jacques; DWYER, Tom. Informática, organizações
e sociedade no Brasil. São Paulo: Cortez, 2003.
SCHAFF, Adam. A sociedade informática: as conseqüências sociais da segunda
revolução industrial. São Paulo: Brasiliense, 2001.
BIBLIOGRAFIA COMPLEMENTAR
CASTELLS, Manuel. A sociedade em rede. 9. ed. São Paulo: Paz e Terra, 2006.
MASIERO, Paulo César. Ética para computação. São Paulo: Edusp, 2001.
ROVER, Aires José. Direito, sociedade e informática: limites e perspectivas da
vida digital. Florianópolis: Fundação Boiteux, 2000.
Aula 1
Fundamentos de Sociologia
passava ao longo do século XIX (mudanças estas que vinham ocorrendo desde
o final da Idade Média, como já comentamos), por meio de métodos diversos.
Portanto, estes pensadores analisaram, por meio de perspectivas diferentes, a
mesma realidade, a sociedade capitalista.
Vamos agora conhecer um pouco sobre cada um deles, deixando claro que
todos procuram entender como se dá a relação indivíduo-sociedade.
• Émile Durkheim (1858-1917), teórico francês, discípulo de Comte, foi o
primeiro a buscar desenvolver um método e definir o objeto de estudo
da sociologia.
Durkheim buscou analisar a relação indivíduo-sociedade tendo como
ponto de partida a força que a sociedade exerce sobre o indivíduo.
Para ele, “a sociedade é um conjunto de normas de ação, pensamento
e sentimento que não existem apenas nas consciências dos indivíduos,
mas que são construídas exteriormente (grifo do autor), isto é, fora das
consciências individuais” (TOMAZI,1998, p. 18). Portanto, segundo
este autor, ao viver em sociedade, os homens se defrontam com uma
série de normas e regras de conduta que não foram criadas por eles,
mas que lhes são impostas, de modo que o não cumpri-las implica algum
tipo de sanção. Várias situações do nosso dia-a-dia servem para ilustrar
o que esse teórico nos aponta: o modo de vestir, a imposição da língua
nacional, o cumprimento das leis, evidenciam a pressão que a sociedade
faz sobre o indivíduo, adaptando-o ao que a sociedade julga como
certo. Um outro exemplo é o uso dos avanços tecnológicos nas transa-
ções comerciais, tais como a Internet. Na perspectiva durkheimiana, os
empresários podem, ou não, se utilizar destas ferramentas, mas, caso
não o façam podem sofrer uma série de problemas que tornarão inviá-
veis seus negócios.
• Max Weber (1864-1920), teórico alemão, procurou analisar a relação
indivíduo-sociedade, partindo do indivíduo, centrando seus estudos nas
ações individuais. Para Weber, a sociedade deve ser compreendida a
partir da análise das ações individuais, ou seja, segundo ele, os indiví-
duos fazem escolhas, na medida em que atribuem significado às suas
ações. Dessa forma, somente iremos entender as ações individuais se
identificarmos os motivos que levam os indivíduos a agir. Portanto, para
Weber, a sociedade não é algo superior ou exterior ao individuo, mas
um conjunto de ações reciprocamente referidas. Assim, se na perspec-
tiva durkheimiana, um empresário adota certo uso de tecnologia em
virtude da pressão que a sociedade exerce sobre ele, na concepção
weberiana, é o indivíduo, que motivado por valores, razão, estados
emocionais ou tradição, faz as escolhas que julgar necessárias e mais
produtivas (TOMAZI, 1998).
Saiba mais
2. Nesta aula você teve oportunidade de entrar em contato com as teorias dos
clássicos da sociologia. Procure demonstrar, na forma de texto, as principais
diferenças entre estes autores.
Na atividade um, com certeza, você deve ter dito que esta revolução
provocou profundas transformações em toda a sociedade européia, face
ao avanço das tecnologias. Deve também ter evidenciado que as máquinas
passaram a substituir o trabalho humano e que as terras e ferramentas concen-
traram-se nas mãos dos burgueses, provocando a acumulação de riquezas
e convertendo grandes massas humanas, oriundas do meio rural, em meros
trabalhadores despossuídos. Assim, você deve ter afirmado que a revolução
industrial criou um abismo entre os que detiam os meios de produção e os assa-
lariados. Com certeza você argumentou que toda esta situação de insatisfação
levou trabalhadores e teóricos a questionar tal realidade, contribuindo assim,
para o surgimento da sociologia.
Na atividade dois, você acertou a questão caso tenha dito que esses teóricos
se diferenciam bastante na forma como analisam a relação indivíduo-sociedade.
Você deve ter apontado que Emile Durkheim faz todas as suas análises partindo
da força que a sociedade exerce sobre o indivíduo , ao passo que Max Weber
tem como ponto de partida as ações sociais, ou seja, o indivíduo fazendo esco-
lhas. Já Karl Marx, desenvolve sua teoria tomando como elemento-chave a forma
com os homens se relacionam para produzir.
Na atividade três, você acertou caso tenha escolhido a letra (a). Somente
estão corretas as assertivas I e II. A assertiva três está incorreta, pois os ilumi-
nistas buscavam explicar os problemas sociais de maneira racional e objetiva,
fugindo dos posicionamentos normativos e finalistas, comuns aos pensadores
medievais e da Antiguidade.
Na atividade quatro, se você escolheu a letra (d), acertou. Durkheim ressalta,
em sua teoria, a força que a sociedade exerce sobre o indivíduo, por meio da
imposição de normas e regras de conduta. Já Weber faz o contrário: são as
escolhas individuais que serão observadas. E Marx faz todas as suas análises
evidenciando a maneira como os homens se relacionam para produzir.
Anotações
Aula 2
A sociedade da informação
Para acompanhar esta aula, você deve analisar os impactos provocados pela
utilização das tecnologias tanto nas sociedades industriais, quanto nas desenvol-
vidas sob o paradigma da informação. É preciso entender o modo como o conheci-
mento passa a ser ofertado no decorrer da evolução tecnológica pela qual passou
e, naturalmente, ainda passará. Esta é de fundamental importância para reflexão
sobre a rápida mudança de idéias pela qual a sociedade passa em função do
nível de avanço tecnológico já alcançado. Este conhecimento pode ser adquirido
a partir da leitura da bibliografia básica e complementar desta disciplina.
Saiba mais
Saiba mais
Saiba mais
1. Nos dias atuais, estamos rodeados de pequenos detalhes tecnológicos que nos
configuram participantes de uma sociedade alterada pela tecnologia. Cite,
explicando, alguns destes detalhes alteradores de nosso cenário social.
IV. A flexibilização, que faz com que tecnologias antigas sigam a tendência
de se fundirem à tecnologia da informação.
V. A convergência de tecnologias denota a grande capacidade de configu-
ração e reconfiguração inerente a essa sociedade.
corretas. A afirmativa II está errada, pois o novo meio tecnológico molda prati-
camente todos os processos da vida dos cidadãos. Também as afirmativas IV e
V estão incorretas, pois a definição da alternativa (IV) explica, na realidade, a
convergência enqua nto a definição da alternativa (V) explica a flexibilização.
Se você conseguiu responder corretamente as atividades, então os nossos
objetivos nesta aula foram atingidos.
CARMO, Paulo Sérgio do. O trabalho na economia global. São Paulo: Moderna,
1998.
CASTELLS, M. A questão urbana. Rio de Janeiro: Paz e Terra, 1983.
______. Fim de milênio: a era da informação – economia, sociedade e cultura.
4. ed. São Paulo: Paz e Terra, 2007a. v. 3.
______. A sociedade em rede – a era da informação: economia, sociedade e
cultura. 10. ed. São Paulo: Paz e Terra, 2007b. v.1.
GREENSTEIN, M.; FEINNAN, T. Electronic commerce: security, risk management
and control. Boston: McGraw-Hill, 2000.
HALL, Stuart. A identidade cultural na pós-modernidade. 6. ed. Rio de Janeiro:
DP&A, 2001.
Revolução Industrial. Disponível em: <http://www.algosobre.com.br/historia/
revolucao-industrial.html>. Acesso em 03 ago. 2008.
Anotações
Aula 3
Situação atual da informatização da
sociedade nos seus vários setores
Para acompanhar esta aula, você precisa saber o conteúdo das aulas
passadas, que apresentaram uma visão histórica dos impactos da informática
sobre a sociedade. Além disso, é importante que você analise a sociedade atual
para identificar como as tecnologias da informação e comunicação têm impac-
tado a vida das pessoas.
Agora, tente comparar este estilo de vida com um estilo à moda antiga: o
cidadão acorda com o canto do galo, levanta cedo, pois a viagem será a pé
e será longa: a vila aonde ele irá trabalhar fica à 10km de onde mora, (2h de
caminhada), não poderá levar muito peso além dos 10Kg de produtos que levará
para o outro vilarejo. Ele se despede dos seus e vai ao trabalho. Ao chegar lá,
trabalha em contato direto com seus clientes, compradores de seus produtos.
Logo ele terá que voltar e o trabalho é bastante “corrido”, pos isso, não pode
anotar o nome dos clientes, apenas lembrar-se daqueles com quem tem mais
contato e talvez com quem almoce ao meio dia, e será muito difícil se encon-
trarem em outro lugar a não ser onde ele está agora. No fim da tarde é hora de
voltar: após duas horas de caminhada (que bom que não choveu!) seguidas de
um jantar e uma conversa com a família, a cama lhe espera. Boa noite.
Veja que, curiosamente e incrivelmente, o cidadão do primeiro caso pode
ser considerado um super-herói, se comparado com o cidadão do segundo
caso: possui supervelocidade para viajar grandes distâncias, superaudição e
supervoz para se comunicar com pessoas a centenas e milhares de quilômetros
de distância, supermemória para se lembrar de muitas informações de prati-
camente todos os seus contatos, superpercepção para prever o tempo e assim
se prevenir das intempéries naturais. Como todo bom super herói, o cidadão
impactado pelas tecnologias da informação já não percebe que todas estas
inovações lhe conferem estes “super poderes”: convive com elas como se fossem
extensões de seu corpo.
Possuir “super poderes” pode ter suas desvantagens. Explico: poder viajar
pelo mundo sem sair de casa a partir da internet tem causado o aumento do
individualismo e uma introspecção do cidadão, de forma a não se sociabi-
lizar com os entes mais próximos. Isso significa que um adolescente poderá
ter centenas de contatos espalhados pelo mundo, porém nunca ter um contato
físico com estes e, ao mesmo tempo, nunca ter contato físico com seus vizinhos
e outros cidadãos próximos, ou seja, aqueles que fisicamente estariam dispo-
níveis para um contato não virtual. Os cidadãos “super-heróis” de hoje (todos
aqueles que são impactados pela tecnologia da informação) tem um dia-a-dia
repleto de compromissos e tarefas profissionais que duram o dia todo, tais
quais aquelas citadas no exemplo do palestrante, dado anteriormente. Logo,
o contato físico e casual é minimizado. Por causa de nossas muitas atividades,
acabamos por não conhecer nossos vizinhos, principalmente se morarmos em
grandes centros urbanos, onde todos acordam muito cedo para ir ao trabalho
e retornam muito tarde, já na hora de dormir. Pessoas de uma mesma rua,
ou até mesmo um mesmo prédio, têm dificuldades de se conhecer e talvez
nunca o façam. Os estabelecimentos comerciais já estão centrados em atendi-
mento rápido e eficaz. Acabamos por não encontrarmos, nos grandes centros,
aquele famoso “Manoel da padaria” que sempre bate um bom papo com os
fregueses. Uma vez que “tempo é dinheiro” e a quantidade de clientes em
Saiba mais
As crianças, em especial, por serem mais jovens, devem ser orientadas sobre
como as tecnologias poderão servir de base para o aprendizado e, da mesma
forma, educar, alertando-as para os perigos do mau uso da internet e outras
formas nocivas de uso das tecnologias. Assim, é possível afirmar, também, que o
governo que pretender democratizar a informação precisará planejar maneiras
de alcançar toda a extensão de sua jurisdição, usando para isso várias mídias,
se necessário, a fim de alcançar o maior número possível de cidadãos.
Anotações
Aula 4
Cibercultura: a interconexão
Para acompanhar esta aula, é importante que você tenha visto as aulas ante-
riores e identificado as transformações pelas quais as sociedades têm passado,
face aos impactos provocados pela revolução industrial e tecnológica. É preciso
também que você analise e pense a respeito de como o novo paradigma age
sobre a vida das pessoas. Será que todas as mudanças econômicas ocorridas
modificam a cultura dessa sociedade? Existe uma cibercultura? Se posicione e
reflita sobre este novo contexto em qual a humanidade está inserida.
Para Castells (2007), surge uma nova sociedade quando e se uma transfor-
mação estrutural puder ser observada nas relações de produção, de poder e de
experiência, de modo que estas transformações modifiquem substancialmente as
formas sociais de espaço e tempo e ao aparecimento de uma nova cultura. Na
aula passada, discutimos as principais transformações econômicas ocorridas na
sociedade, face às inovações tecnológicas. Verificamos que o modo de viver das
pessoas (isso inclui você e eu) tem sido transformado com tantos avanços tecno-
lógicos (Orkut e outras redes sociais virtuais, sms, telemedicina, teletrabalho,
e-commerce, youtube, ensino a distância). O novo paradigma sob o qual a
sociedade está organizada age diretamente no modo como as pessoas se rela-
cionam, seja em nível pessoal (amizades, namoro, encontros e outras reuniões
sociais de caráter pessoal), seja em nível de lazer (games massivos online, chats,
fã-clubes virtuais, fóruns sobre esportes, etc.) e nas relações profissionais (tele-
conferência, teletrabalho, telemedicina, etc.) ou em qualquer outro nível social.
Nesta aula, analisaremos como tais mudanças estruturais afetaram as supe-
restruturas, levando ao aparecimento de uma nova cultura, a cibercultura.
Saiba mais
Ainda segundo Castells (2003), o uso do e-mail aumenta a vida social com
a família e os amigos, e amplia os contatos sociais. Além disso, evidencia que
as pesquisas deixam claro que usuários da Internet tendem a ter redes sociais
maiores que os não-usuários.
A citação anterior nos permite afirmar que estamos vivendo uma época em
que está presente uma “noção de espaço, em que o físico e virtual se influenciam
um ao outro, lançando as bases para a emergência de novas formas de sociali-
zação, novos estilos de vida e novas formas de organização social” (CARDOSO
citado por CASTELLS, 2003, p. 110).
Castells citando Waller (2000) afirma que a Internet está sendo usada para
redefinir as relações de família, numa sociedade em que as pessoas estão expe-
rimentando novas formações familiares.
A partir do que foi exposto acima, você pode perceber que a prática do
individualismo em rede parece estar redefinindo as fronteiras e o significado de
instituições tradicionais de sociabilidade, entre elas, a família. Bem como está
também levando os indivíduos a construírem formas de sociabilidade em torno
de interesses específicos, na medida em que podem participar de certas comuni-
dades virtuais no momento e da forma que querem.
Saiba mais
Fonte: <
<http://veja.abril.com.br/180407/p_096.shtm>
http://veja.abril.com.br/180407/p_096.shtm>ll.
http://veja.abril.com.br/180407/p_096.shtm>
2. Gilberto Gil em sua música A Rede nos diz que “criar meu web site, fazer
minha home page, com quantos gigabytes, se faz uma jangada, um barco
que veleje”. Construa um pequeno texto discutindo como os termos da internet
estão disseminados na sociedade e como isto faz parte da cibercultura.
Na atividade um, você deve ter dito que as tecnologias e o uso das mesmas
não podem ser compreendidas isoladamente. Tanto suas descobertas, inova-
ções quanto o uso estão sempre ligadas a um contexto social e cultural. Assim,
para analisarmos as principais questões que permeiam a sociedade atual, não
podemos somente olhar para as transformações e inovações técnicas, mas pensar
a sociedade como um todo, na qual aspectos técnicos, políticos, econômicos e
sociais estão extremamente entrelaçados. Assim, é inconcebível pensarmos as
tecnologias como (ordem das causas) e a cultura (sofredora dos efeitos). Nesse
sentido, são os mesmos seres humanos que inventam, produzem, utilizam as
técnicas e fazem a interpretação das mesmas.
Na atividade dois, você deve teve ter dito que a cibercultura é um conjunto de
técnicas (materiais e intelectuais), de práticas, de atitudes, de modos de pensamento
e de valores que se desenvolvem juntamente com o crescimento do ciberespaço.
Você deve ter afirmado que estamos vivendo numa época em que o físico e o virtual
se influenciam um ao outro, lançando as bases para a emergência de novas formas
de socialização, novos estilos de vida e novas formas de organização social.
Na atividade três, a resposta correta é a (a), pois o que vimos em nossas
aulas é que, de modo geral, o corpo de dados não sustenta a tese de que o uso
da Internet leva a menor interação social e maior isolamento social. A letra (b)
está incorreta, na medida em que contraria totalmente o que foi dito na letra a.
As letras (c) e (d) estão incorretas. De modo geral, as pesquisas afirmam que a
internet pode provocar o isolamento social, desde que seu uso se dê acima de
um limiar que permita a conciliação com outras atividades.
Na atividade quatro, a resposta certa é a (d). Diretamente, a digitalização
da informação pode ser aproximada da virtualização. A cibercultura é um
conjunto de técnicas (materiais e intelectuais), de práticas, de atitudes, de modos
de pensamento e de valores que se desenvolvem juntamente com o crescimento
do ciberespaço. Segundo Lévy, a cibercultura, diferentemente de outras formas
culturais anteriores, expressa o surgimento de um novo universal que se constrói
sobre a indeterminação de um sentido global qualquer.
Anotações
Aula 5
Mercado de trabalho
Saiba mais
Saiba mais
Saiba mais
Figura 2 Internet: portas abertas para Na visão de Peter Drucker (2000), se, por
novas oportunidades. um lado, a chegada da ferrovia transformou a
maneira como o homem percebia a distância,
transformando profundamente economia geográ-
fica (encurtando o mundo), a telemática (teleco-
municações + informática) está “eliminando” defi-
nitivamente a distância (planificação do mundo
em um mapa de nós interconectados) e criando
uma única economia e um único mercado. Por
isso, empresas e pessoas precisam criar idéias,
já considerando a ausência de uma unidade de
lugar, devido ao novo paradigma ser marcado
pela informação comunicada rapidamente pela
grande rede. Assim, os novos negócios que
surgem podem ser definidos como negócios da
era digital. Provedores de internet, revendedores
de domínios e serviços de hospedagem de sítios,
servidores de jogos online, enciclopédias virtuais
(você se lembra do fato de que, ter uma enci-
clopédia, composta por vários e grossos livros
de capa dura, em casa, era algo chique?), agendas online,
enfim, tudo que puder ser informatizado e disposto na rede torna-se
um produto lucrativo. O ambiente global torna-se mais competitivo e
cruel para algumas empresas que não consigam se contextualizar; porém, o
leque de opções é vasto e existem inúmeros espaços a serem explorados por
empresa, pessoas e por você, aluno!
A internet é cada dia mais usada para interação entre diversas catego-
rias de pessoas, empresas e governos, como na lista anterior. A partir dessas
possibilidades, podemos pensar: será que as cidades deixarão de existir, com
o avançar dessas relações cada vez mais virtuais? Tal pensamento causou
o chamado mito do fim das cidades. Castells (2003, p. 185) declara que o
planeta inteiro está sendo “reorganizado em torno de gigantescos nós metro-
politanos, que absorvem uma proporção crescente da população urbana”. Ele
também afirma (2002, p. 502) que “um conjunto de nós interconectados forma
uma rede” e
nessa rede, nenhum lugar existe por si mesmo, já que as posições
são definidas pelos intercâmbios de fluxos da rede. Conseqüente-
mente, a rede de comunicação é a configuração espacial
fundamental: os lugares não desaparecem, mas sua lógica e
seu significado são absorvidos na rede. A infra-estrutura tecno-
lógica que constrói a rede define o novo espaço como as ferro-
vias definiam as ‘regiões econômicas’ e os ‘mercados nacionais’
na economia industrial; ou as regras institucionais de cidadania
específicas das fronteiras (e seus exércitos tecnologicamente avan-
çados) definiam ‘cidades’ nas origens mercantis do capitalismo e
da democracia.
Anotações
Aula 6
Cyberprofissional,
cyberoportunidades
Para acompanhar esta aula, você deve estar por dentro dos assuntos estu-
dados nas aulas passadas. Entender às exigências do mercado de trabalho
significa estar de “guarda alta”, preparado para encarar os desafios que o
mesmo nos propõe a cada dia. Saiba que o mercado de informática está de
portas “escancaradas”. Hoje, praticamente, não há risco de desemprego para o
profissional da informação, mas, os grandes salários e menores cargas horárias
estarão reservados para aqueles que melhor exercerem suas competências, seu
nível de empregabilidade, como profissional da informação.
Saiba mais
Saiba mais
Muitos que vêem a área de TI como sendo enfadonha e complicada, tornando-se uma
profissão exclusivamente para “Nerds
“Nerds
Nerds”,
”, acabam perdendo uma ótima oportunidade de
qualificação e emprego, além de enganarem-se profundamente no quesito da interdiscipli-
naridade da TI: é possível associar a ela as mais diversas áreas, desde a automação da
fabricação de palitos de fósforo, cultura de abelhas, seqüenciamento genético e estudos
de curas para doenças, previsualizações do “antes e depois” de salões de beleza e medi-
cina estética, jogos eletrônicos e sistemas de comércio eletrônico de utensílios e enfeites
feitoss a partir do capim dourado (produto típico do estado do Tocantins) às viagens
feito
submarinas e espaciais, com direito a fotos das profundezas dos oceanos, da superfície
lunar e marciana, bem como dos demais planetas que forem explorados ou capturados
pelas lentes de satélites computadorizados. De acordo com Cardoso (2008), a palavra
“desemprego” não existe no dicionário da tecnologia da informação. Afirma, ainda, para
felicidade de muitos candidatos a um cargo público, que a relação entre candidato vaga
é de um para um. O autor enfatiza a agressividade das empresas de TI, no momento
de buscar um novo talento. Por exemplo: a grande companhia IBM, desde 2007, firma
parcerias com escolas do ensino médio para que estas possam incluir em seus currículos
aquelas disciplinas que abordam as suas necessidade de mão-de-obra.
Ter uma relação de emprego de “um para um” significa, para o profissional
de TI, risco praticamente inexistente de desemprego. Você, talvez, já possa cons-
tatar essa “feliz” realidade, por exemplo, quando alguém, sabendo que você
está cursando TADS (Tecnologias em Análise e Desenvolvimento de Sistemas),
logo se aproximando, pergunta-lhe se você pode desenvolver um “programinha”
para controlar tal processo (padaria, escolinha, loja de confecção, “home page”,
etc.). Tal fenômeno é bom para o trabalhador, servindo de incentivo para que se
recicle e continue estudando e se aperfeiçoando nas áreas de TI, mas, também,
reflete uma necessidade do país de desenvolver-se nesta área.
Na área privada, uma gama enorme de oportunidades existem, sítios de
grandes empresas como Google, IBM, Microsoft, Sun, Xerox, etc., chegam até
fazer propaganda para atrair o profissional até o seu domínio. Grupos de discussão
sobre tecnologias, como o Java-br, ou de desenvolvedores C++, Delphi, PHP,
“.Net” e outras tecnologias estão recheados de informações sobre a tecnologia
e, freqüentemente, propostas de emprego em diversas empresas que oferecem,
até urgentemente, vagas para profissionais de TI que dominam a tecnologia em
discussão no grupo. Sobre este aspecto, Tossulino (2008) declara que, na reali-
dade, é o mercado que se encontra em rápido crescimento e, por isso, requer,
cada vez mais, profissionais qualificados, experientes e efetivos. O autor também
se refere à concorrência e à competição, afirmando que, atualmente, estas não
se dão apenas no sentido de se buscar mais clientes, mas, também, de se buscar
profissionais. Assim, as empresas que oferecem a melhor política de benefícios,
bons ambientes e condições de trabalho, plano de cargos e salários e uma ótima
remuneração são aquelas que ganham a disputa pelos melhores profissionais.
Mesmo assim, muitos jovens “cyberempreendedores” preferem abrir seu próprio
negócio, a ter um emprego em empresas desse porte, e, assim, causar sua própria
disrupção no mercado (lembre-se de nossos estudos sobre os impactos das TIC na
economia). Vale à pena lembrar que grandes empresas nasceram de uma maneira
informalmente conhecida como “fundo de garagem”: Jovens detentores do “cyber-
conhecimento”, com pouco ou nenhum capital, e de índole empreendedora, produ-
zindo seu próprio produto em “secreto” e divulgando-o na hora em que entenderem
estarem prontos para surpreender no mercado. São exemplos de empresas que
nasceram assim: Microsoft, IBM, Cisco. Para não acharem que apenas estrangeiras
conseguem tal feito, citamos aqui a empresa brasileira Locaweb (www.locaweb.
com.br), hoje, grande empresa de hospedagem de sites. Ela começou em 1998
com duas pessoas e um servidor. Hoje, é referência em hospedagem de sites com
mais de 500.000 sites hospedados.
Na área governamental, existe enorme demanda por funcionários. Um
emprego público é uma opção bastante visada para pessoas que objetivam uma
carreira segura, sem a possibilidade de “surpresas” financeiras ou para aqueles
que pensam em constituir uma base, um degrau, onde pisarão antes de tentar
iniciativas mais ousadas, sendo, assim, uma sábia opção. No Brasil, milhões de
pessoas realizam concursos públicos, sendo grande parte delas, profissionais da
informação. A concorrência por vagas públicas de TI é grande. Queiroz (2008)
refere-se à alta concorrência por cargos de TI, declarando sobre um concurso reali-
zado recentemente, em 2005, da SERPRO – Serviço Federal de Processamento
de Dados, a concorrência era de 23.333 inscritos para 1.980 vagas, ou seja,
11,7 candidatos por vaga. Já na PRODESP – Companhia de Processamento de
Dados de São Paulo, em seu processo de seleção realizado em 2004, a concor-
rência foi de 30 pessoas por vaga, aproximando-se da disputada concorrência
do vestibular de medicina da USP (32,43 candidatos por vaga).
A figura a seguir mostra um panorama de algumas das muitas oportuni-
dades de TI na área pública, exemplificando algumas instituições que oferecem
vagas para diversos cargos, acompanhados de suas remunerações.
Anotações
Aula 7
O futuro da sociedade:
algumas questões
Para participar e compreender bem esta aula, é importante que você pare
e reflita sobre os usos das tecnologias da informação e comunicação, notada-
mente, às questões relativas ao uso da Internet. É importante que você reflita
sobre as questões éticas que permeiam essa sociedade. É necessário também
que você analise as condições de acesso à Internet, bem como as ações que têm
sido desenvolvidas para possibilitar a inclusão digital.
autores, discutir sobre estes assuntos. Assim, optamos por estruturar nossa
aula da seguinte forma: inicialmente, discutiremos sobre a ética; em seguida,
faremos algumas análises a respeito da inclusão e exclusão digitais e finaliza-
remos com algumas proposições de como as transformações econômicas têm
afetado o caráter das pessoas.
Saiba mais
forma, quando um cidadão não tem acesso às TIC, não se trata de ele simples-
mente não ter acesso a uma tecnologia, e sim a uma instituição social, resul-
tando, portanto, em exclusão social, somada às outras formas de desigualdade
e exclusão já existentes. Portanto, esta questão, aparentemente simples, torna-se
complicada se a submetermos a uma análise mais atenta.
Com relação ao acesso à Internet, que sem dúvida tem aumentado bastante
nos últimos anos, Castells (2003) afirma que há diferenças de acesso de acordo
com a renda da família, grupos étnicos, nível educacional e com o fato de ter ou
não deficiências físicas. Há também uma significativa disparidade no acesso à
Internet entre crianças de diferentes grupos de renda, o que poderá ter conseqü-
ências consideráveis para o futuro.
Segundo Albino (2008), pesquisas feitas pelo Instituto Brasileiro de Geografia
e Estatística (IBGE), em 2006, evidenciam a gravidade da exclusão digital no
Brasil e mostram que, apesar de todo o desenvolvimento tecnológico, as pessoas
das classes D e E, que correspondem à metade da população brasileira, não têm
acesso ao computador. Apenas 12,46% da população brasileira tem acesso
a computadores e somente 8,31% estão conectados à Internet (IBGE, 2006).
Ainda segundo ele, a maioria destes poucos incluídos digitais, cerca de 97%,
se concentra na área urbana, acentuando ainda mais o desnível e deixando
as zonas rurais praticamente na escuridão digital. Esses percentuais expõem o
cenário de exclusão digital em que vive grande parte da população brasileira.
Para que ocorra um verdadeiro processo de inclusão, há que se reconhecer
que muito mais do que consumidores as pessoas são cidadãos. Na palavras de
Lévy (2007, p. 238),
é preciso favorecer de todas as formas adequadas a facilidade
e a redução dos custos de conexão. Mas o problema do ‘acesso
para todos’ não pode ser reduzido às dimensões tecnológicas e
financeiras geralmente apresentadas. Não basta estar em frente
de uma tela, munido de todas as interfaces amigáveis que se possa
pensar, para superar uma situação de inferioridade. É preciso antes
de mais nada estar em condições de participar ativamente dos
processos de inteligência coletiva que representam o principal inte-
resse do ciberespaço. Os novos instrumentos deveriam servir priori-
tariamente para valorizar a cultura, as competências, os recursos e
os projetos locais, para ajudar as pessoas a participar de coletivos
de ajuda mútua, de grupos de aprendizagem cooperativa.
Nos dias atuais, o mercado é dinâmico demais para permitir que as coisas
sejam feitas do mesmo jeito, ano após ano, ou que se faça a mesma coisa por um
longo tempo. Na opinião de Sennett (2007, p.82), as pessoas “são fortemente
impelidas a interpretar seu trabalho como refletindo sobre si mesmas, como indi-
víduos. O capitalismo de curto prazo corrói o caráter das pessoas, “sobretudo
aquelas qualidades de caráter que ligam os seres humanos uns aos outros, e
dão a cada um deles um senso de identidade sustentável” (SENNETT, 2007, p.
27). Para este autor, a flexibilidade causa ansiedade: as pessoas não sabem os
riscos que serão compensados, que caminhos seguir. O comportamento flexível
que possibilita sucesso aos trabalhadores está enfraquecendo seu caráter de um
modo que não há remédio prático.
Saiba mais
Anotações
Equipe EADCON
Coordenador Editorial William Marlos da Costa
Apresentação
tradução de algoritmos para uma linguagem que o computador possa
entender. Mas, para isso, é preciso conhecer e dominar conceitos importantes
relativos à programação, de maneira geral, e também aspectos da linguagem
utilizada.
Qualidades como atenção, organização e persistência são importantes
para um programador. Essas qualidades em conjunto com o poder e a simpli-
cidade da linguagem C podem fazer com que, ao final desta disciplina,
sejamos considerados programadores, ainda que iniciantes.
Serão abordados nas sete aulas os principais conceitos dessa linguagem
para que, a partir dos conteúdos trabalhados, você possa alçar vôo com as
próprias asas e trilhar os caminhos da programação em linguagem C.
Bom trabalho!
Prof. Carlos Henrique Corrêa Tolentino
EMENTA
Programação em Linguagem C. Estruturas de dados homogêneas e
heterogêneas. Modularização de Algoritmos.
OBJETIVOS
• Introduzir a atividade de programação.
Plano de Ensino
CONTEÚDO PROGRAMÁTICO
• Conceitos básicos da linguagem C
• Operadores
• Estruturas de Controle – Decisão e repetição
• Modularização em C: uso de Funções
• Estruturas de dados homogêneas (vetores e matrizes) e heterogê-
neas (estruturas)
• Manipulação de strings
BIBLIOGRAFIA BÁSICA
DEITEL, H. M.; DEITEL, P. J. Como programar em C. Rio de Janeiro: LTC, 1999.
HERBERT, S. C Completo e Total. São Paulo: Makron Books, 1997.
MIZRAHI, V. V. Treinamento em Linguagem C - Módulos 1 e 2. Rio de Janeiro:
Makron Books, 1993.
BIBLIOGRAFIA COMPLEMENTAR
ASCENCIO, Ana Fernanda Gomes; CAMPOS, Edilene Aparecida Veneruchi de.
Fundamentos da programação de computadores: algoritmos, Pascal e C/C++.
São Paulo: Pearson Prentice Hall, 2003.
ORTH, Afonso Inácio. Algoritmos e programação com resumo das linguagens
Pascal e C. Porto Alegre: AIO, 2001.
ZIVIANI, Nivio. Projeto de algoritmos: com implementações em Pascal e C.
2. ed. São Paulo: Thomson, 2004.
Aula 1
Introdução à programação
em linguagem C
Esta primeira aula representa o nosso primeiro contato com uma linguagem
de programação real. Para esta disciplina, foi escolhida a Linguagem C. A ativi-
dade de programação pode ser descrita como a transcrição de algoritmos para
uma linguagem de programação que possa ser executada por um computador.
Dessa maneira, um dos requisitos para iniciar a atividade de programação é
estar em dia com a prática no desenvolvimento de algoritmos, como foi estudado
na disciplina de Lógica de Programação.
abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ
1234567890
+-*/\=|&!?#%(){}[]_‘“.,:<>
<tipo_de_dados> <nome_da_variável>;
int x;
int numero1, numero2;
float media; char ch1;
1.2.4 Operadores
• Aritméticos
OPERADOR AÇÃO
+ Soma (inteira e ponto flutuante)
- Subtração ou Troca de sinal (inteira e ponto flutuante)
* Multiplicação (inteira e ponto flutuante)
/ Divisão (inteira e ponto flutuante)
% Resto de divisão (de inteiros)
++ Incremento (inteiro e ponto flutuante)
-- Decremento (inteiro e ponto flutuante)
• Lógicos
OPERADOR AÇÃO
&& E lógico (do inglês AND)
|| OU lógico (do inglês OR)
! NÃO lógico (do inglês NOT)
• Relacionais
OPERADOR AÇÃO
> Maior que
< Menor que
>= Maior ou igual a
<= Menor ou igual a
== Igual a
!= Diferente de ou “não igual a”
• Atribuição
OPERADOR AÇÃO
Atribui à variável do lado esquerdo o valor do lado direito
=
do operador.
• Operadores de endereços
OPERADOR AÇÃO
& retorna o endereço de uma variável
retorna o conteúdo de uma variável ponteiro, que será vista
*
nas aulas posteriores
Outros operadores importantes serão apresentados em momentos oportunos.
Por enquanto, você pode usar os que já foram apresentados para criar uma
grande quantidade de programas simples em linguagem C.
1.3.1 Bibliotecas
Se observarmos bem, veremos que as palavras reservadas e os comandos
da linguagem C não apresentam alguns recursos básicos de um programa, por
exemplo, comandos de entrada ou saída de dados. Essas funções estão, geral-
mente, disponíveis nas bibliotecas C padrão (SHILDT, 2001). Em outras pala-
vras, as bibliotecas são repositórios de funções que podem ser usadas pelos
programadores para diversos fins, como entrada e saída de dados, cálculos
matemáticos, tratamento de cadeias de caracteres, entre outros.
As bibliotecas são incluídas em um programa por meio de uma diretiva de
compilação, que é um comando enviado para o compilador, fazendo com que as
funções de uma determinada biblioteca fiquem disponíveis para o programador.
Uma biblioteca pode ser incluída em um programa da seguinte maneira:
scanf(“<string de formatação>”,&variável)
ESPECIFICADOR FORMATO
%c char
%e
float em formato exponencial
%E
%g float. C escolhe melhor maneira de exibição entre normal e
%G exponencial
%s string
%p endereço de um ponteiro
%n quantos caracteres a função printf exibiu
b) Leitura de caracteres
Para ler um único caractere do teclado, podemos usar as funções getch( )
ou getche( ), declaradas na biblioteca conio.h. A diferença entre essas duas
funções é que a função getch( ) não apresenta na tela o caractere digitado, e a
função getche( ) apresenta. Veja exemplos de utilização a seguir.
tados são muito importantes para um programa. Para executar essa tarefa, a
linguagem C oferece diversas opções, como a função printf. A sintaxe geral do
comando printf pode ser vista a seguir.
e) Exibindo um caractere
Para exibir um único caractere na tela, podemos usar a função putchar( ),
que está no arquivo de cabeçalho stdio.h. Sua sintaxe é:
putchar(variável)
printf(“Teste”);
Saiba mais
1. Escreva um programa que solicite ao usuário que digite dois valores e apre-
sente na tela a soma, a subtração e a multiplicação desses valores.
2. Qual das alternativas a seguir contém somente palavras que não podem ser
usadas como identificadores?
a) void, int, numero, option c) num1, num2, op, valor1
b) void, int, char, opção d) int, float, if, while
3. Por que não podemos usar duas variáveis com o mesmo nome, mesmo que
tenham tipos diferentes?
4. Qual das alternativas a seguir contém apenas funções para entrada de dados?
a) printf, puts, putchar c) scanf, gets, getch
b) read, write, put d) void, int, char
#include <stdio.h>
int main( )
{
int valor1, valor2, soma, subt, mult;
printf(“\nSoma = %d\n”,soma);
printf(“Subtracao = %d\n”,subt);
printf(“Multiplicacao = %d\n”,mult);
return;
}
Anotações
Aula 2
Estruturas de controle:
condicionais
uma por vez (pelo menos como estudamos até agora). Porém, dependendo dos
valores de entrada de um programa, pode ser que se deseje produzir saídas
diferentes, então um teste condicional é necessário, ou seja, é preciso verificar se
as entradas correspondem a uma ou a outra saída possível para o programa.
Um algoritmo que usa um teste condicional pode seguir rumos diferentes,
como ilustra a figura a seguir.
Saiba mais
2.2.1 If
O comando if é uma estrutura de controle condicional que faz com que,
dependendo de um teste, um trecho do programa seja executado ou não. Veja
a sintaxe do comando, observando os comentários.
#include <stdio.h>
int main( )
{
int x, y;
printf(“digite um valor para x: ”);
scanf(“%d”, &x);
if ( x > y)
{
printf(“x é maior”);
}
return;
}
Observe que existe apenas um único comando dentro do boco if. Nesse
caso, não seria necessário iniciar o bloco com “{“ e fechá-lo com “}”. Isso
somente é realmente necessário quando existe mais de um comando interno
ao bloco. Vamos observar dois exemplos sem muita utilidade prática, mas que,
didaticamente, são adequados para ilustração.
Primeiro exemplo:
...
scanf(“%d”, &n); // leitura de valor para n
scanf(“%d”, &m); // leitura de valor para m
Aqui é realmente necessária a presença dos caracteres “{“ e “}” para aber-
tura e fechamento do bloco if, pois existem dois ou mais comandos internos ao
bloco. Reescrevendo o exemplo que ilustra a Figura 1, temos:
...
if ( x > y) // teste condicional
printf(“x é maior”); // único comando interno
...
2.2.2 If – Else
O comando if pode ser complementado pelo comando else, do inglês: se
não. Dessa maneira, fica especificado um bloco de comandos para ser execu-
tado quando o resultado do teste condicional for verdadeiro, e outro bloco de
comandos para ser executado especificamente quando o teste tiver valor falso.
A Figura 2 a seguir nos ajuda a entender essa afirmação.
...
if ( x > y)
{
printf(“x é maior”);
}
else
{
Vale ressaltar que, assim como o if, o else também pode conter diversos
comandos internos ao bloco e esse bloco deve sempre ser iniciado e finalizado
com “{“ e “}”, respectivamente, quando tiver dois ou mais comandos. Da mesma
forma que o if, se contiver apenas um comando, não é necessário usar “{“ e “}”
para abrir e fechar o bloco de comandos.
...
if ( x > y) // primeiro teste lógico
{
printf(“x é maior”);
}
else
{
if( x == y ) // if aninhado
{
printf(“iguais”);
}
else // else aninhado
{
printf(“x é menor”);
}
}
...
switch( expressão )
{
case constante 1: comandos
break;
case constante 2: comandos
break;
...
case constante n: comandos
break;
}
#include <stdio.h>
int main()
{
int x, y;
char opcao;
printf(“digite o primeiro numero:”);
scanf(“%d”,&x);
printf(“digite o segundo numero:”);
scanf(“%d”, &y);
printf(“escolha uma opcao:\n”);
printf(“1 – soma\n”);
printf(“2 – subtracao\n”);
printf(“3 – divisao\n”);
printf(“4 – multiplicação\n”);
printf(“escolha: “);
opcao = getch();
switch(opcao)
{
case ‘1’: printf(“soma = %d”, x + y);
break;
case ‘2’: printf(“subtracao = %d”, x - y);
break;
case ‘3’: printf(“multiplicacao = %d”, x * y);
break;
case ‘4’: printf(“divisao = %d”, x / y);
break;
}
return;
}
b) if(x < 5)
comando;
else
comando;
d) if(x == 2)
comando;
#include <stdio.h>
int main( )
{
int valor1;
printf(“informe um valor numerico: “);
scanf(“%d”,&valor1);
if( (valor1 % 2) == 0 )
printf(“Numero par\n”);
else
printf(“Numero impar\n”);
return;
}
#include <stdio.h>
#include <conio.h>
int main( )
{
int valor1;
char op;
#include <stdio.h>
#include <conio.h>
int main( )
{
int valor1;
char op;
printf(“informe um valor numerico: “);
scanf(“%d”,&valor1);
printf(“Escolha uma opcao: 1 - quadrado; 2 - cubo”);
op = getch();
switch(op)
{
case ‘1’:
printf(“\n%d ao quadrado = %d\n”, valor1,
valor1*valor1);
break;
case ‘2’:
printf(“\n%d ao cubo = %d\n”, valor1,
valor1*valor1*valor1);
break;
}
return;
}
Anotações
Aula 3
Estruturas de controle: repetição
A não ser que se conheça alguma função nativa da linguagem que implemente
essa operação, será necessário utilizar uma estrutura de repetição. Nesta aula,
estudaremos as estruturas for, while e do-while. Cada uma com características
específicas que podem nos ser úteis em diversas situações. Então, vamos nessa!
3.1.1 For
Na maioria das linguagens de programação, o laço for é caracterizado por
ter uma condição pré-definida que permite determinar a quantidade de vezes que
o corpo do laço será repetido. Em linguagem C, esse tipo de laço oferece uma
flexibilidade maior (SCHILDT, 2001). A sintaxe desse comando é a seguinte:
#include <stdio.h>
int main()
{
int base, expoente, i; // i é a variável de controle
int potencia = 1; // receberá o resultado
printf(“digite o valor da base:”);
scanf(“%d”,&base);
printf(“digite o valor do expoente:”);
scanf(“%d”, &expoente);
3.1.2 While
O while é um laço cuja execução depende exclusivamente de um teste condi-
cional. A sua sintaxe é apresentada a seguir:
while(condição)
{
comandos;
}
A condição é um teste condicional que deve ser satisfeito para que o corpo
do laço seja executado. Note que, sendo um teste condicional, essa condição
pode, também, depender de uma variável de controle, ou ainda de um valor
digitado pelo usuário do programa. Vamos ver um exemplo de sua utilização.
#include <stdio.h>
int main()
{
int num; // declaração de variável
printf(“Digite um numero:”);
scanf(“%d”, &num);
while(num >= 0) // laço e condição de parada
{
printf(“Num ao quadrado = %d:”,num * num);
printf(“Digite um numero:”);
scanf(“%d”, &num);
}
return;
}
#include <stdio.h>
int main()
{
int n1, n2; // declaração de variável
printf(“Digite um numero:”);
scanf(“%d”, &n1);
printf(“Digite outro numero:”);
scanf(“%d”, &n2);
Você já deve ter percebido que esse programa imprime na tela todos os
valores inteiros entre n1 e n2. Note que o usuário informa os dois valores inicial-
mente e, na seqüência, o laço é executado sem a intervenção do usuário.
Assim como o laço for, o corpo do laço while pode não ser executado
nenhuma vez, dependendo do teste que é feito no início. Porém existe um tipo
de laço que sempre executa pelo menos uma vez. São as estruturas de repetição
com teste no final.
3.2.1 Do-While
A sintaxe do comando do-while é a seguinte:
do
{
comandos
}while(condição);
Uma das utilizações mais comuns dos laços com teste no início são os menus
de opção nos quais uma resposta inválida provoca a repetição do menu (SHILDT,
2001). Vejamos e seguinte exemplo.
#include <stdio.h>
int main()
{
int x, y;
char op;
printf(“escolha: “);
op = getch();
switch(opcao)
{
case ‘1’: printf(“soma = %d”, x + y);
break;
case ‘2’: printf(“subtracao = %d”, x - y);
break;
case ‘3’: printf(“multiplicacao = %d”, x * y);
break;
case ‘4’: printf(“divisao = %d”, x / y);
break;
}
return;
}
plicação e ‘4’ para divisão. Depois do laço existe um comando de seleção (switch)
para que uma das operações seja executada. Porém, caso o usuário informe
uma opção diferente daquelas que são esperadas, nenhuma das operações irá
executar. Para evitar essa situação, existe um teste no final do laço que verifica se
a opção informada corresponde a uma das esperadas. O usuário irá digitar nova-
mente a opção até que ela corresponda a uma opção válida para o programa.
Outro detalhe importante é que, ao contrário das outras estruturas de controle
vistas até agora, após a condição no comando do-while, é necessário finalizar
o comando com o “;”.
3.3 Considerações
As estruturas de repetição contêm, assim como as estruturas condicionais,
comandos de desvio de fluxo. Entretanto esses desvios são direcionados a trechos
que se repetem dentro do programa, sendo muito úteis em uma grande quanti-
dade de situações.
Em termos de sintaxe dos comandos de repetição, vale lembrar que, a
exemplo dos condicionais, somente é necessário utilizar os símbolos “{“ e “}”
para abertura e fechamento dos blocos de comandos internos quando esses
blocos contiverem dois ou mais comandos. Vejamos alguns trechos de código
que exemplifiquem essa afirmação.
...
for(i=0; i<15; i++)
printf(“iteração numero %d”,i);
...
...
while ( (x % 2) != 0)
x = x * 2;
...
...
do
n = n +5;
while(n < 50);
Note que esses exemplos são apenas trechos de programas e não podem ser
executados da maneira como foram apresentados. Para que executem normal-
mente, deve-se completá-los de acordo com a estrutura de um programa em
linguagem C apresentado na aula um.
3. Escreva um programa, solicite que o usuário informe valores inteiros até que
seja informado um valor negativo e apresente a soma de todos os valores
digitados antes do valor negativo ser informado, para que ele não seja
contabilizado também.
Os objetivos desta aula estão ligados aos conceitos e utilização das estru-
turas de repetição. Assim vamos verificar se os objetivos foram atingidos por
meio da correção das atividades.
Na atividade um, devemos implementar um programa que determine o
fatorial de um número. Logo devemos recordar o que é o fatorial. Fatorial é um
conceito da matemática, e o fatorial de um número é a multiplicação dele por
todos os inteiros menores do que o próprio número, até atingir o valor 0. Por
definição, o fatorial de 0 é 1. Exemplo: 5! = 5 x 4 x 3 x 2 x 1 = 120.
O programa que soluciona essa atividade deve utilizar um laço de repetição
que efetua as sucessivas multiplicações. Veja a solução a seguir.
#include <stdio.h>
int main( )
{
int n, i, fat=1;
printf(“\nFatorial = %d\n”,fat);
return;
}
#include <stdio.h>
int main( )
{
int n, soma=0;
printf(“Soma = %d”,soma);
return;
}
Observe que o valor numérico é informado pelo usuário antes do teste condi-
cional, e que essa leitura é feita novamente dentro do laço while. Nesse caso,
isso é necessário, pois, se o primeiro valor digitado for menor do que zero, o
corpo do laço não deverá executar nenhuma vez, ao contrário das estruturas
com teste no final.
A atividade quatro pode ser comentada por alternativas. A primeira está
incorreta, pois o aninhamento de comandos condicionais e de repetição é muito
utilizado em programação. A segunda está, também, incorreta, pois nem todos
os comandos podem ser usados em qualquer parte do programa, por exemplo,
a inclusão de bibliotecas. A terceira afirmação está correta, pois se o teste lógico
sempre retornar verdadeiro, o laço se repetirá indefinidamente. E como a terceira
alternativa está correta, a quarta está incorreta.
Anotações
Aula 4
Matrizes e vetores
#include <stdio.h>
#include <conio.h> // para a função getch()
int main( )
{
int num, cont=0;
char op;
float media, soma = 0;
do
{
printf(“digite um número:”);
scanf(“%d”, &num); // numero informado pelo
usuário
Observe o programa e note que os valores digitados pelo usuário são armaze-
nados na variável num, acumulados na variável soma e a quantidade de valores
informados é armazenada na variável cont. Após somar o valor de cada número
digitado e incrementado o contador (cont), o usuário tem a opção de informar mais
um valor ou sair do laço de repetição. Ao sair do laço, é impresso na tela a soma de
todos os valores dividida pela quantidade, o que caracteriza a média aritmética.
A única ressalva a ser feita nesse programa é que, se desejar efetuar alguma
outra operação sobre os valores digitados, apenas teremos a soma desses valores.
Não teríamos como saber qual foi o primeiro, o segundo, ou o quinto valor digitado.
Qual seria a solução? Declarar uma variável para cada valor digitado pelo usuário?
Essa solução seria inviável por algumas razões, tais como um número de
variáveis possivelmente muito grande para manipular. Outra alternativa seria
agrupar os valores digitados em uma estrutura que permitisse acessá-los poste-
riormente. Considerando que todos os valores seriam do mesmo tipo, essa estru-
tura poderia ser chamada de homogênea. Em programação existem dois tipos
de estruturas homogêneas bastante conhecidas: vetores e matrizes. Esses são
conceitos importantes que estudaremos nesta aula.
4.1 Matrizes
Segundo Schildt (2001), uma matriz é uma coleção de variáveis do mesmo
tipo que é referenciada por um nome comum. Um elemento específico em uma
matriz é acessado por meio de um índice, que sempre é um número inteiro.
Como qualquer variável de um programa, uma matriz ocupa posições na
memória computador. Sendo uma coleção de variáveis, uma matriz pode ocupar
diversas posições de memória para abrigar todas as variáveis que compõem a
matriz. Uma característica interessante das matrizes é que cada um dos elementos
ocupam posições contíguas (subseqüentes) na memória.
Em Linguagem C, uma matriz pode ter uma ou mais dimensões. A próxima
sessão fala sobre matrizes unidimensionais, que também conhecemos como
vetores ou arrays.
tipo nome_do_vetor[tamanho];
Nessa declaração o tipo especifica o tipo de cada um dos elementos que irão
compor o vetor. O nome_do_vetor é um identificador comum que referencia o con-
junto de elementos. E o tamanho indica a quantidade de elementos que irão compor
a estrutura. Vejamos alguns exemplos de declaração de vetores em Linguagem C.
float numeros[10];
int vet_int[5];
int vetor2[8];
#include <stdio.h>
#include <conio.h> // para a função getch()
int main( )
{
int i, num;
int vetor_int[10]; // vetor capaz de armazena 10
valores inteiros
float media, soma =0;
printf(“\nVALORES\n”);
...
for(i=0; i< 10; i++) // primeiro laço de repetição
{
printf(“digite um número:”);
scanf(“%d”, &vetor_int[i]);
soma = soma + vetor_int[i]; //soma dos números
digitados
Note que a leitura do valor na função scanf o símbolo “&” indica a posição
de memória da variável que irá armazenar o valor informado. Note, também,
que os valores são armazenados nas posições já indicadas pelo índice.
Quando estudamos vetores, é natural que surjam questionamentos como
“Qual o limite máximo para o tamanho de um vetor?” ou ainda “Se tem 10 posi-
ções reservadas, é obrigado que se utilize todas?”.
Saiba mais
Conteúdo = 10 15 25 35 45
Índice = 0 1 2 3 4
int mat_int[3][3];
Colunas
0 1 2
0
Linhas 1
2
Assim como em vetores, cada uma das posições de uma matriz pode ser
acessada individualmente por meio de índices. Nesse caso, dois índices são
necessários para indicar um elemento, um correspondente à linha, e outro corres-
pondente à coluna.
Podemos descrever ainda uma matriz como sendo um vetor de vetores.
Note que cada linha da matriz é um conjunto de elementos do mesmo tipo, que
podem ser acessados por meio de seus índices. Esse mesmo raciocínio pode ser
usado para descrever uma matriz com mais de duas dimensões. A quantidade
de dimensões de uma matriz pode variar de acordo com as necessidades dos
programadores. Vejamos um exemplo de programa, puramente didático, utili-
zando matrizes.
#include <stdio.h>
int main()
{
int mat_inteiros[3][3]; // matriz de 3 linhas e 3
colunas
int i,j; // índices para linhas e colunas
} // fim do primeiro laço
} // fim do segundo laço
#include <stdio.h>
#include <conio.h>
/* constantes */
#define MAX 15 // máximo de elementos
#define MEDIA 4 // número da coluna que armazena a média
int main(){
float mat_alunos[MAX][5], soma; // declaração da matriz
int quant, i, j; // e outras variáveis
}
mat_alunos[i][MEDIA] = soma/4; // determina a
média e ar-
printf(“\n”); // mazena na pos. 4 de
ca-
} // da linha da matriz
// fim do laço 2
que cada iteração do laço varia o índice das colunas, até a coluna 3, já que a
coluna 4 é reservada para a média das notas. Após informar as quatro notas,
a média é determinada e armazenada na posição 4 de cada linha, de acordo
com o especificado na constante MEDIA. Esse processo se repete quant vezes,
até que as notas e médias de todos os alunos sejam armazenadas na matriz.
Antes de finalizar o programa, os dados são apresentados na tela, também
utilizando dois laços para variar linhas e colunas. Chamamos atenção para o
comando printf usado para apresentar as notas e a média. Note que, na string
de formatação é usado “%.2f”. O “2” para indicar que os valores do tipo float
devem ser apresentados apenas com duas casas decimais.
Esse programa inclui uma prática comum em programação: o tratamento de
erros. Considerando que há um limite de armazenamento para uma matriz, não
é adequado que o usuário informe valores além do que pode ser armazenado.
Em contrapartida, o trabalho de preencher toda a matriz, quando em alguns
casos pode haver poucos alunos, pode incomodar o usuário. Por isso é solici-
tado ao usuário que informe a quantidade de alunos. Porém o usuário pode se
equivocar e informar um valor além da quantidade máxima. Nesse programa,
não há problemas, pois o programa irá ultrapassar o laço 1 somente quando
uma quantidade válida de alunos for informada.
#include <stdio.h>
int main()
{
Anotações
Aula 5
Estruturas (struct) e tipos definidos
pelo programador
Para que os objetivos desta aula sejam atingidos, é necessário que se domine
a declaração de variáreis e os tipos de dados, conceitos estudados na nossa
primeira aula.
5.1 Struct
Em linguagem C, uma estrutura é uma coleção de variáveis referenciadas
pelo mesmo nome, fornecendo uma maneira conveniente de se ter informações
struct nome_da_estrutura
{
campos
};
Essa declaração cria uma variável chamada p1 do tipo struct pessoa. Cada
variável desse tipo terá dois campos, nome e idade. O identificador p1 indica
a variável, e cada um dos campos é referenciado por seu próprio nome. Uma
variável do tipo struct pessoa também pode ser declarada no momento da defi-
nição da estrutura. Seguindo esse método, a declaração da variável p1 pode
ser feita como segue.
struct // definição 3
{
char nome[30];
int idade;
} p1;
#include <stdio.h>
int main()
{
printf(“Digite o nome:”); // leitura pelo teclado
gets(p1.nome); // do campo nome
return;
}
#include <stdio.h>
int main()
{
printf(“Digite o nome:”); // leitura pelo teclado
return;
}
numerico valor1;
typedef struct
{
char nome[30];
float nota1;
float nota2;
float media;
} aluno;
Essa declaração define uma estrutura com quatro campos e cria o nome
aluno como um identificador de tipo para essa estrutura. Assim é possível a
seguinte declaração:
aluno a1;
Saiba mais
#include <stdio.h>
#include <conio.h>
/* constantes */
#define MAX 15 // máximo de elementos
int main()
{
aluno vet_alunos[MAX]; // declaração do vetor
int quant, i; // e outras variáveis
printf(“Nome: “);
scanf(“%s”,&vet_alunos[i].nome); // lê o nome
do aluno
printf(“Nota 1: “);
scanf(“%f”,&vet_alunos[i].nota1); // lê uma
nota
printf(“Nota 2: “);
scanf(“%f”,&vet_alunos[i].nota2); // lê uma nota
vet_alunos[i].media=(vet_alunos[i].nota1+vet_alunos[i].
nota2)/2;
printf(“\n”);
}
// fim do laço 2
struct tempo
{
int horas;
int minutos;
};
b) struct n
{
int valor1; int valor2;
}matriz;
c) struct n
{
int valor1; int valor2;
}matriz[2,3];
d) struct n
{
int valor1; int valor2;
}matriz[2][3];
#include <stdio.h>
struct tempo
{
int horas;
int minutos;
};
int main()
{
struct tempo t1;
int segundos;
printf(“Horas = “);
scanf(“%d”,&t1.horas);
printf(“Minutos = “);
scanf(“%d”,&t1.minutos);
segundos = t1.horas * 3600 + t1.minutos * 60;
printf(“\n\nSegundos = %d\n”,segundos);
}
Anotações
Aula 6
Modularização – funções,
argumentos e parâmetros
6.1 Funções
Uma função em linguagem C pode ser declarada, ou definida, de acordo
com o seguinte modelo:
Cada um dos elementos que compõem o modelo citado tem sua importância,
e os explicaremos mais detalhadamente a seguir.
O nome_da_função é um identificador, tal como o nome de uma variável
do programa, e deve ser usado de maneira única, justamente para referenciar
a função declarada. O tipo_de_retorno indica um tipo de valor que deverá ser
retornado pela função por meio de um comando específico para esse fim.
Em programação, existem dois tipos de sub-rotinas, as que retornam valor
(genuinamente chamadas de funções) e as que não retornam valor (em muitas
linguagens chamadas de procedimentos). Em linguagem C, utiliza-se apenas a
nomenclatura funções, que podem ou não retornar um valor. Uma função para a
qual foi especificado um tipo de retorno deverá retornar um valor do tipo especi-
ficado, enquanto que uma função para a qual foi definido o tipo de retorno void
não retorna valor algum.
Uma função pode ter parâmetros, que podem ser considerados os valores
de entrada da função. Parâmetros funcionam como variáveis que irão arma-
zenar temporariamente os valores informados como argumentos. A declaração
dos parâmetros é semelhante à declaração de variáveis, mas com a restrição
de sempre ser necessário especificar o tipo e o nome do parâmetro. Quando
houver mais de um parâmetro, as suas declarações devem ser separadas por
vírgulas. O bloco de comandos de uma função varia de acordo com a tarefa
que a função executa.
O exemplo a seguir ilustra os conceitos apresentados até aqui.
#include <stdio.h>
d = num * 2;
return d; // retorno da função
}
void main()
{
int valor1;
int valor2;
soma = n1 + n2;
return(soma/2); // retorno da função
}
Observe nas funções dobro e media que ambas têm uma variável soma.
Porém de tipos diferentes e utilizadas em escopos diferentes.
Para que uma variável esteja disponível para ser utilizada em qualquer
função do programa, esta deve ser declarada como uma variável global. A
declaração de variáveis globais é feita fora das funções, por exemplo, pode ser
feita após a inclusão das bibliotecas ou definição das constantes do programa.
Vejamos um exemplo.
#include <stdio.h>
int soma;
void main()
{
int valor1;
printf(“Informe um valor inteiro:”);
scanf(“%d”,&valor1);
A função dobro desse exemplo recebe como argumento um valor para o parâ-
metro num. Esse parâmetro recebe o valor dele mesmo multiplicado por 2, ou seja,
o seu valor é alterado dentro da função. Ao retornar o valor para a função chama-
dora, o parâmetro num é apagado da memória e as alterações são perdidas. Em
princípio, pode parecer um “mal negócio” usar a passagem de parâmetros por
valor, porém é uma maneira de garantir que variáveis tenham seus valores alte-
rados somente no escopo das funções nas quais foram declaradas. É uma maneira
de “manter o controle” sobre os dados manipulados pelo programa.
Na passagem de parâmetros por referência, os valores não são copiados
para os parâmetros, mas o endereço de onde estes se encontram na memória é
informado à função. Dessa maneira, os dados originais são manipulados dentro
da função chamada, permitindo assim que alterações sejam persistentes quando
a função que recebeu os argumentos for finalizada.
Uma das formas mais comuns de se implementar a passagem de parâmetros
por referência é utilizando ponteiros. Embora esse conceito somente seja expli-
cado com detalhes em outro momento, ele será informalmente abordado aqui.
#include <stdio.h>
void main()
{
int valor1;
Saiba mais
Outro detalhe importante que devemos citar ao final desta aula, é que a
função dobrar tem como tipo de retorno void. O que significa, na verdade, que
essa função não retorna valor algum. Alguns autores costumam nomear esse tipo
de função de procedimento, e em algumas linguagens de programação, como
Pascal, o termo procedure é utilizado para declarar sub-rotinas que não retornam
valor. Já o termo function é usado para declarar sub-rotinas que retornam valor.
Na linguagem C, todas as sub-rotinas são chamadas de funções, podendo ou
não retornar valores.
1 - #include <stdio.h>
6 - void main()
7 - {
8 - int x,y;
11- y = x;
12- inverte_sinal(x);
2. Escreva uma função que tenha dois parâmetros do tipo int: base e expoente.
A função deve retornar o valor da base elevada ao expoente.
#include <stdio.h>
int main()
{
int s;
s = triplo(9);
printf(“\n\nS = %d\n”,s);
}
a) Por ser um valor constante, e não uma variável, o valor 9 não pode ser
considerado um argumento para a função triplo.
b) A passagem de parâmetros para a função triplo é feita por referência.
c) Por ser posicionada antes da função main, a função triplo será a primeira
a ser executada.
d) O parâmetro numero será instanciado como uma variável local e rece-
berá o valor 9.
Na atividade um, basta observar o que foi exposto durante a aula e a resol-
veremos facilmente. A primeira pergunta pode ser respondida de duas maneiras:
primeiro observando a declaração do parâmetro, que é um ponteiro, caracte-
rizando a passagem de parâmetros por referencia. Além disso, inverte_sinal
supõe que estamos alterando o argumento que foi passado para a função. A
persistência das alterações em um argumento também é uma característica da
passagem de parâmetros por referência.
Essa resposta nos ajuda a responder a pergunta seguinte. Podemos concluir
que há um erro na chamada da função, já que quando a passagem de parâme-
tros é feita por referência devemos informar o endereço de onde estão os valores
originais a serem manipulados. Conseguimos isso usando o operador &, que
não está sendo usado no exemplo. Devemos inseri-lo antes do nome da variável
passada como argumento para corrigir o problema. Caso a variável x tenha valor
5, o resultado impresso na tela será o nov o valor da variável x, ou seja, -5.
A atividade dois representa um caso clássico de passagem de parâmetros
por valor e retorno de função. O programa a seguir ilustra a solução.
#include <stdio.h>
if(exp == 0)
return 1;
return pot;
}
int main()
{
int s;
s = potencia(2,5);
printf(“\n\nS = %d\n”,s);
}
Anotações
Aula 7
Cadeias de caracteres: Strings
Para que os objetivos desta aula sejam atingidos, é necessário que você
domine a declaração de variáreis, os tipos de dados e matrizes, principalmente
as unidimensionais, que armazenam valores de um mesmo tipo em uma única
dimensão, como vimos na aula 4.
char str[30];
char *pstr;
#include <stdio.h>
void main()
{
char str[30]; // vetor de caracteres
concatena uma cópia de str2 no final de str1 e termina str1 com um caractere
nulo ou ‘\0’. enquanto str1 é modificada, str2 permanece inalterada. Note que
o primeiro argumento deverá ser uma variável, enquanto que o segundo poderá
ser uma variável ou uma constante. O programa a seguir ilustra a utilização
dessa função.
#include <stdio.h>
#include <string.h>
void main()
{
char str1[30], str2[30];
printf(“String 1 :”);
gets(str1);
printf(“\nString 2:”);
gets(str2);
strcat(str1,str2);
printf(“%\n\nString1= %s”,str1);
printf(“%\nString2= %s\n”,str2);
}
String1= teste123
String2 = 123
Já que str2 é concatenada ao final de str1. Essa função pode ser muito útil
em programas que conectam informações, por exemplo, para serem armaze-
nadas em arquivos de texto.
Essa função recebe como argumentos duas constantes string ou duas variá-
veis (vetores de caracteres). O retorno dessa função é um valor inteiro que reflete
a comparação entre as duas strings. Caso o valor retornado seja zero, indica
que as strings são iguais. Caso o valor retornado seja menor que zero, significa
que str1 é menor do que str2. E, finalmente, caso o valor retornado seja maior
do que zero, significa que str1 é maior do que str2. O programa a seguir ilustra
a utilização da função strcmp.
#include <stdio.h>
#include <string.h>
void main()
{
char str1[30];
do
{
printf(“Digite a senha: “);
gets(str1);
}while( strcmp(str1,”programa”) != 0 ); //
comparacao
printf(“\n\nSenha valida\n\n”);
}
Saiba mais
Vale lembrar que a string que receberá o conteúdo copiado deve ter
tamanho suficiente para receber a outra string, que pode ser uma constante ou
o conteúdo de uma variável. O seguinte trecho de programa ilustra a utilização
da função strcpy.
...
char str[40];
strcpy(str,”Algoritmos e programação”);
...
Saiba mais
#include <stdio.h>
#include <string.h>
void main()
{
char str1[30];
do
{
printf(“Digite uma string: “);
gets(str1);
printf(“\n\nTamanho da string: %d\n”, strlen(str1) );
}while( strcmp(str1,”fim”) != 0 );
printf(“\n\nAté Mais\n\n”);
}
quant ++;
return quant;
#include <stdio.h>
#include <string.h>
int main()
{
char string[80];
gets(string);
corta(string);
printf(“\n\nS = %s\n”,string);
}
Na atividade quatro, vamos lembrar que strcpy copia uma string para outra
e retorna o endereço da string, strcat concatena duas strings e retorna o ende-
reço da string resultante, strcmp retorna 0 se as strings forem iguais, um número
positivo se a primeira for maior e um número negativo se a segunda for maior, e
a função strken retorna o tamanho de uma string. Assim apenas strlen e strcmp
retornam valores inteiros. Resposta correta, letra (d).
Anotações
Equipe EADCON
Coordenador Editorial William Marlos da Costa
Apresentação
cipais conceitos da lógica na área da Computação. Para isso, os tópicos a
serem apresentados, separados por aula, estão descritos a seguir.
Na aula um, apresentaremos uma visão geral das teorias dos conjuntos,
enfocando possíveis relações e operações entre conjuntos quaisquer. Na aula
dois, analisaremos as sentenças usadas no dia-a-dia, com intuito de verificar
um encadeamento lógico entre as mesmas e, assim, identificar uma conclusão,
caso exista, reconhecendo assim um argumento.
Na aula três, abordaremos o alfabeto e as fórmulas bem formadas da
lógica proposicional, que é o tipo de lógica mais simples, demonstrando
o comportamento dos conectivos lógicos usados com proposições. Na aula
quatro, apresentaremos o método da tabela-verdade, como um mecanismo
de encontrar o valor lógico de proposições simples e compostas, bem como
classificaremos as tabelas de acordo com os valores obtidos como resultado.
Na aula cinco, os conceitos de implicação e equivalência lógica serão
apresentados, bem como um processo de prova de argumentos. Na aula seis,
por sua vez, estudaremos a lógica de predicados, que é uma extensão da lógica
proposicional, visando a apresentar o seu alto poder de expressão. Por fim,
na aula sete, apresentaremos a álgebra de Boole e mapas de Karnaugh.
Prof.ª Thereza Padilha
EMENTA
Teoria dos conjuntos (diagramas de Euler-Venn). Análise e simbolização
de sentenças de linguagem cotidiana. Tabela verdade. Lógica de predi-
cados de primeira ordem. Álgebra booleana. Simplificação de funções e
mapas de Karnaugh.
Plano de Ensino
OBJETIVOS
• Apresentar conceitos básicos da linguagem de programação Java
para programação visual.
• Apresentar os principais componentes utilizados para a construção
de interfaces gráficas.
• Proporcionar a compreensão aos alunos sobre a utilização de
banco de dados em aplicações visuais, utilizando componentes e
conceitos de conexão.
• Demonstrar aos alunos o potencial do desenvolvimento de aplica-
ções visuais e sua possibilidade de interação com os usuários.
• Demonstrar aos alunos a confecção de relatórios utilizando a tecno-
logia Java.
CONTEÚDO PROGRAMÁTICO
• Componentes visuais básicos
• Notação de conjuntos e elementos
• Relação entre conjuntos, operação entre conjuntos
• Estudo dos diagramas de Venn
• Estudo das sentenças da Linguagem Natural
• Argumentos
• Estudo de proposições simples e compostas
• Conectivos lógicos
• Princípios fundamentais da lógica
• Tabela-verdade
• Tautologia, contradição e contingência
• Leis de equivalência e implicação lógica
• Processo de Prova
• Lógica de Predicados
• Álgebra de Boole
• Funções Booleanas
• Mapa de Karnaugh
BIBLIOGRAFIA BÁSICA
CHAUI, Marilena. Convite à filosofia. São Paulo: Ática, 2003.
COPI, Irving M. Introdução à lógica. 2. ed. São Paulo: Mestre Jou, 1978.
MORTARI, Cezar A. Introdução à lógica. São Paulo: UNESP, 2001.
SOUZA, J. N. Lógica para ciência da computação: fundamentos de linguagem,
semântica e sistemas de duração. Rio de Janeiro: Campus, 2002.
BIBLIOGRAFIA COMPLEMENTAR
ALENCAR FILHO, Edgar. Iniciação à lógica matemática. São Paulo: Nobel, 2003.
ARANHA, Maria Lúcia de Arruda; MARTINS, Maria Helena Pires. Filosofando:
introdução à filosofia. 3. ed. São Paulo: Moderna, 2003.
DAGHLIAN, Jacob. Lógica e álgebra de Boole. 4. ed. São Paulo: Atlas, 1995.
KELLER, Vicente; BASTOS, Cleverson L. Aprendendo Lógica. Petrópolis: Vozes,
2000.
SOARES, Edvaldo. Fundamentos de lógica: elementos da lógica formal e teoria
da argumentação. São Paulo: Atlas, 2003.
Aula 1
Teoria dos conjuntos
O conjunto E, por sua vez, é constituído por todos os elementos que são
maiores ou igual a 20. Nesse caso, usamos a variável x para designar a exis-
tência de um elemento, sendo que este precisa ser maior ou igual a 20. Neste
caso, lê-se “x, tal que x é maior ou igual a 20”. O conjunto F é composto por todos
Z = {a}
V = {Maria}
E um conjunto universo refere-se a reunião de todos os elementos dos conjuntos
em questão. A notação utilizada para denotar o conjunto universo é U.
Outra forma de expressar este fato é por meio da relação contém. Assim,
podemos dizer que C contém D, que pode ser expresso da seguinte forma:
1.4.1 União
A operação de união entre conjuntos é formada pela reunião de todos os
elementos dos conjuntos envolvidos. Para representar a operação de união
usamos o símbolo .
Por exemplo, considerando os conjuntos A e B definidos nesta seção,
podemos denotar a união destes conjuntos por . Neste caso, temos:
1.4.2 Interseção
A operação de interseção entre conjuntos é formada pela reunião dos
elementos que pertencem aos conjuntos envolvidos simultaneamente. Ou seja,
estes elementos precisam pertencer aos conjuntos ao mesmo tempo. Para repre-
sentar a operação de interseção usamos o símbolo .
Por exemplo: considerando os conjuntos A e B definidos nesta seção,
podemos denotar a interseção destes conjuntos por . Neste caso, temos:
1.4.3 Complemento
A operação de complemento de um conjunto qualquer é formada pelos
elementos que fazem parte do conjunto universo, mas nas deste conjunto em
questão. Assim, considerando o conjunto A, o complemento de A, representado
por , pode ser definido da seguinte forma:
1.4.4 Diferença
Dados os conjuntos A e B, a operação de diferença entre conjuntos é repre-
sentada por A – B, de forma semelhante à matemática básica. Neste caso, a
diferença entre estes conjuntos é formada por elementos pertencentes à A e não
a B. Esta operação pode ser expressa pela seguinte fórmula:
1.5 Propriedades
Com relação às operações entre conjuntos, existem várias propriedades já
predefinidas na literatura. As principais propriedades podem ser conferidas na
Identidade
Associativa
Comutativa
Distributiva
De Morgan
existir e, neste caso, estes precisam ser inseridos no local em que há a fusão entre
os conjuntos P e Q. E também pode ser que existam elementos que não estejam
nestes dois conjuntos e, assim, pertencendo somente ao conjunto universo.
Incorporando alguns elementos a estes três conjuntos, poderemos visualizar
este novo diagrama na figura 3.
Nesta aula, vimos a notação usada na teoria dos conjuntos para representar
os elementos, seus conjuntos e relações entre eles. Apresentamos também as opera-
ções de união, interseção, complemento e diferença entre conjuntos. Por fim, vimos
o diagrama de Venn que é uma forma de representação gráfica dos conjuntos.
Agora que você adquiriu um bom conhecimento sobre a teoria dos conjuntos,
vamos apresentar, na próxima aula, um estudo sobre a análise de sentenças do
cotidiano, a fim de investigar as formas do raciocínio lógico.
Anotações
Aula 2
Análise de sentenças
para compreender o que vem a ser uma proposição, precisamos estudar como o
raciocínio lógico trabalha, identificando assim argumentos na nossa linguagem
do cotidiano por meio de palavras-chave, o qual será abordado nesta aula.
Será apresentado também uma forma de classificação do argumento tanto com
relação à forma de raciocínio (indutivo ou dedutivo) quanto à validade.
Saiba mais
2.1 Argumentos
Como dito anteriormente, a lógica trabalha com argumentos. Mas, então
o que vem a ser um argumento? Um argumento é uma seqüência de sentenças
ou enunciados (afirmações ou declarações) na qual um dos enunciados é a
conclusão e os demais são nomeados de premissas, as quais servem para provar
ou, pelo menos, fornecer alguma evidência para a conclusão. Segundo Copi
(1978), podemos definir um argumento como qualquer grupo de sentenças tal
que se afirme ser uma delas derivada das outras, as quais são consideradas
provas evidentes da verdade da primeira. Então, vamos a um exemplo bastante
clássico da lógica.
Todos os homens são mortais.
Sócrates é homem.
Portanto, Sócrates é mortal.
Neste exemplo, os dois primeiros enunciados (“Todos os homens são mortais”
e “Sócrates é homem”) chamaremos de premissas que servem para provar a
conclusão, que é “Sócrates é mortal”.
Tanto as premissas quanto a conclusão de um argumento são sempre enun-
ciados, isto é, significados ou idéias expressáveis por sentenças declarativas ao
invés de interrogações, comandos ou exclamações. Os enunciados são espécies
de idéias que são verdadeiras ou falsas. Os não-enunciados, tais como interro-
gações, comandos ou exclamações, não podem ser classificados como verda-
deiros ou falsos (CUNHA, 2008).
É importante frisar que os argumentos não seguem padrões de escrita da
forma em que as premissas são apresentadas primeiro e, depois, a apresen-
tação da conclusão. Sendo assim, alguém poderia apresentar quais são as suas
3+4
2+1
5
É importante observar que a premissa 3, juntamente com a 4, é justificativa
para 2. Em seguida, a premissa 2 foi unida com a premissa 1 para alcançar a
conclusão 5.
Saiba mais
sentido tem este órgão corpóreo. Podemos, inclusive, afirmar que este argumento
é do tipo indutivo forte, pois todos os tipos de sentidos foram apresentados e
especificados que possuem tal propriedade (órgão corpóreo). É importante frisar
que para abstrair um conceito geral precisamos possuir um número de casos
(exemplos ou particularidades) suficientes e que estes sejam significativos.
Agora com relação aos argumentos dedutivos, um possível exemplo, encon-
trado em (ARANHA; MARTINS, 2003), é:
Todo brasileiro é sul-americano.
Todo paulista é brasileiro.
Todo paulista é sul-americano.
Neste caso, embora tenha obtido uma conclusão ainda genérica, esta foi
adquirida a partir das informações fornecidas, mesmo que genérica. Vamos
ver agora outro exemplo de argumento dedutivo, sendo que com este iremos
adquirir uma informação mais particular do que o caso apresentado. Então
analise o argumento a seguir:
Todo aluno do curso de Análise e Desenvolvimento de Sistemas precisa
estudar Lógica.
José é aluno de Análise e Desenvolvimento de Sistemas.
Logo, José precisa estudar Lógica.
Neste exemplo, concluímos detalhadamente quem precisa estudar Lógica,
que é José. Esta conclusão foi obtida a partir de uma regra geral dos alunos do
curso de Análise e Desenvolvimento de Sistemas, bem como a especificação que
José é um aluno deste curso.
Observe ainda que os argumentos dedutivos não fornecem nenhum conhe-
cimento novo, apenas sistematiza o conhecimento já adquirido. Entretanto,
embora a dedução não acrescente muita informação, não significa que esta
não seja importante, até porque precisamos definir se esta dedução é válida ou
inválida como raciocínio lógico.
a) V, V, V, F c) V, F, F, V
b) F, F, V, F d) V, F, V, F
3
Na atividade quatro, na alternativa (a), temos um exemplo de argumento
indutivo, pois considerando que o sol nasceu de segunda-feira a sexta-feira,
acredita-se que o sol nasça aos sábados e domingos também. Assim, conclui-se
que o nasça todos os dias. Na alternativa (b), tem-se um exemplo de argumento
dedutivo porque conseguimos especificar que um pedaço de bolo desapareceu,
logo, alguém o comeu. Na alternativa (c), temos mais um exemplo de argu-
mento dedutivo. Observe que a conclusão está embutida nas premissas que é a
condição para conseguir aprovação numa disciplina dado ao fato de se possuir
uma nota superior a 7,0.
Na aula seguinte, iremos apresentar a primeira lógica que iremos estudar, que
é a lógica proposicional. Nessa lógica, estudaremos como representar, por meio
de símbolos, os enunciados categóricos encontrados no cotidiano, bem como reco-
nhecer seus valores lógicos. Além disso, iremos conhecer quais são os conectivos
lógicos existentes, sua forma de representação e o seu comportamento lógico.
Anotações
Aula 3
Lógica proposicional
3.1 Alfabeto
Assim como na língua portuguesa temos um alfabeto (a, b, c...., z, A, B,...Z)
e, a partir dele, conseguimos criar palavras reais, na lógica proposicional
também temos um alfabeto. De acordo com algumas regras de formação, conse-
guimos construir fórmulas válidas.
O alfabeto da lógica proposicional é constituído por símbolos lógicos e não-
lógicos. Os símbolos lógicos são caracterizados por:
• pontuação: (, );
• conectivos: ¬ (negação),∧ (conjunção), ∨ (disjunção), → (condicional ou
implicação), ↔ (bicondicional ou bi-implicação).
Os símbolos não-lógicos são definidos por:
• proposições: por convenção, letras do meio para o fim do alfabeto, tais
como: ... p, q, r, s,..., A, B, C...
Os símbolos de pontuação “(“ e “)” servem, assim como na matemática,
para delimitar o escopo de atuação da fórmula. Esses símbolos são usados,
normalmente, quando se deseja mudar a ordem de precedência de operações a
serem realizadas. Caso contrário, o uso dos parênteses torna-se opcional, pois
eles não mudam o sentido que se deseja expressar.
Os símbolos conectivos, por sua vez, são bastante conhecidos como conec-
tivos lógicos ou proposicionais. Esses símbolos são utilizados em conjunto com
proposições e representam operações lógicas. A seguir, veremos com maiores
detalhes o comportamento de cada um desses conectivos no que se diz respeito
ao seu valor lógico.
As proposições, basicamente, representam fatos, ou seja, pensamento de sentido
completo. Observe ainda que este conjunto de símbolos é infinito, permitindo que
sejam criadas diversas proposições simultaneamente. Assim, por exemplo, reescre-
vendo o exemplo clássico de lógica apresentado na aula anterior, teríamos:
p: Todos os homens são mortais.
q: Sócrates é homem.
r: Portanto, Sócrates é mortal.
Neste caso, podemos reescrever esta fórmula sem alterar o seu significado,
eliminando alguns símbolos de pontuação. Assim, esta fórmula simplificada
3.2.1 Negação
O conectivo ¬ representa a negação, isto é, o inverso do pensamento. Assim,
a negação do verdadeiro é falso, e a negação do falso é verdadeiro. Desta
forma, podemos estruturar o comportamento deste conectivo da seguinte forma:
v(¬P) = V, se v(P) = F
= F, se v(P) = V
A forma de leitura deste conectivo para esta proposição, por exemplo, é “não
P” ou “não é verdade P” , “é falso que P”, “não tem P” ou “não é fato que P”.
Considerando que a proposição P represente a sentença “O prefeito renun-
ciou”, temos, se P verdadeiro, “O prefeito renunciou” e temos “é falso que o
prefeito renunciou” e vice-versa.
3.2.2 Conjunção
O conectivo ∧ representa a conjunção, isto é, a combinação aditiva de
proposições. Neste caso, para que o valor lógico seja verdadeiro é necessário
que as duas proposições analisadas sejam verdadeiras simultaneamente. Caso
contrário, seu valor é falso. Desta forma, podemos estruturar o comportamento
deste conectivo da seguinte forma:
v(P ∧ Q) = V, se v(P) = v(Q) = V
= F, caso contrário
A forma de leitura deste conectivo usando estas proposições, por exemplo, é
“P e Q”, “P e também Q”, “não só P, mas, ainda, Q” ou “P assim como Q”.
Agora, considere P como “O aluno estudou” e Q como “O aluno obteve
uma excelente nota na prova”. Então a sentença “O aluno estudou e obteve uma
excelente nota na prova” será verdadeira somente se as duas sentenças isoladas
forem verdadeiras. Ou seja, se por acaso o aluno estudou e não obteve uma
excelente nota, então a frase completa (“O aluno estudou e obteve uma exce-
lente nota na prova”) será falsa.
3.2.3 Disjunção
O conectivo ∨ representa a disjunção, ou seja, a escolha de forma não
exclusiva. Deste modo, o valor lógico é verdadeiro se pelo menos um dos valores
das proposições forem verdadeiros. Caso contrário, será falso. Assim, podemos
expressar este comportamento da seguinte maneira:
v(P ∨ Q) = F, se v(P) = v(Q) = F
= V, caso contrário
A forma de leitura deste conectivo, usando estas proposições, por exemplo,
é “P ou Q”.
Para este conectivo, considere P como “O aluno estuda para a prova” e Q
“O aluno faz uma redação”. Assim a sentença “O aluno estuda para a prova
ou faz uma redação” é verdadeira se pelo menos uma das sentenças isoladas
for verdadeira.
3.2.4 Condicional
O conectivo → representa a implicação ou o condicional entre duas propo-
sições, sendo a proposição do lado esquerdo chamada de antecedente e a do
lado direito chamada de conseqüente. Deste modo, o valor lógico é falso se o
antecedente tiver valor verdadeiro e, simultaneamente, o conseqüente tiver o
valor igual a falso. Nos demais casos, será o valor verdadeiro. Assim, podemos
expressar este comportamento da seguinte maneira:
v(P → Q) = F, se v(P) = V e v(Q) = F
= V, caso contrário
A forma de leitura deste conectivo, usando estas proposições, por exemplo,
é “se P então Q”, “P logo Q” ou “P implica Q”. Podemos inferir ainda que P é
parte da causa de Q.
Por exemplo, considere P como “O planeta Terra gira” e Q “O planeta Terra
se move”. Assim, temos “Se o planeta Terra gira, então o planeta Terra se move”.
Neste caso, observe que “o planeta Terra se move” está condicionado ao fato de
“o planeta Terra girar” e será falso apenas quando o antecedente for verdadeiro
e o conseqüente for falso.
3.2.5 Bicondicional
O conectivo ↔ representa a bi-implicação ou bicondicional entre duas
proposições. Deste modo, o valor lógico é verdadeiro se ambas proposições
possuírem valores lógicos iguais ao mesmo tempo, podendo ser tanto verdadeiro
quanto falso. Nos demais casos, é o valor falso. Assim, podemos expressar o
comportamento deste conectivo da seguinte maneira:
v(P ↔ Q) = V, se v(P) = v(Q)
= F, caso contrário
A forma de leitura deste conectivo, usando estas proposições, por exemplo,
é “P se e somente se Q” ou “P é condição necessária que Q”.
Por exemplo: considere P como “O prefeito será cassado” e Q “O prefeito
permanece no cargo”. Assim, temos “O prefeito será cassado se e somente se
ele permanecer no cargo”. Dessa forma, esta frase será verdadeira somente se
os valores das sentenças isoladas obtiverem o mesmo valor lógico, podendo ser
verdadeiro ou falso.
Além destes conectivos lógicos clássicos, tem-se ainda a disjunção exclusiva
que é representada por ∨. Este conectivo é uma variação da disjunção apresen-
tada anteriormente, sendo que para o valor lógico ser verdadeiro somente uma
das proposições envolvidas pode ter seu valor lógico como verdadeiro. Assim,
a outra proposição precisa, obrigatoriamente, possuir o valor lógico como falso.
Desta maneira, podemos expressar este comportamento da seguinte maneira:
v(P ∨ Q) = V, se v(P) = V e v(Q) = F
= V, se v(P) = F e v(Q) = V
= F, caso contrário
A forma de leitura deste conectivo, usando estas proposições, por exemplo,
é “ou P ou Q”.
Para este conectivo, considere P como “O prefeito renuncia” e Q “O prefeito
será cassado”. Assim, teríamos a sentença “Ou o prefeito renuncia ou ele será
cassado”. Neste caso, a frase será verdadeira somente se uma das opções for
verdadeira. Caso contrário, será falsa.
Antes de conhecer algumas leis importantes da lógica envolvendo estes
conectivos lógicos, vamos fazer uma analogia entre a teoria dos conjuntos,
mostrada na primeira aula, e a lógica proposicional que está sendo vista nesta
aula para a apresentação de um valor lógico. Assim, considere A = {1,2,3,4,5},
p= “5 pertence ao conjunto A” e q = “1 não pertence ao conjunto A”. Desta
forma, de forma notacional, teremos:
• :V
• v (P): V
• :F
• v (q): F
Outro aspecto que pode ser analisado com relação aos conectivos lógicos
é a quantidade de proposições necessárias para a obtenção de um novo valor
lógico. O conectivo de negação, por exemplo, é considerado unário, visto que
necessita de somente uma proposição para obter o novo valor lógico. Por outro
lado, os demais conectivos lógicos são binários, pois precisam analisar os valores
de duas proposições para se encontrar o novo valor lógico.
TELES, Antônio Xavier. Introdução ao estudo de filosofia. São Paulo: Ática, 2000.
WIKIPÉDIA. Enciclopédia Livre. Lógica proposicional. Disponível em: <http://
pt.wikipedia.org/wiki/L%C3%B3gica_proposicional>. Acesso em: 3 ago. 2008.
Anotações
Aula 4
Tabela – verdade
Saiba mais
4.2 Tautologia
Uma fórmula α é uma tautologia ou válida quando para qualquer interpre-
tação, ou seja, linha da tabela-verdade possui o valor lógico igual a verdadeiro.
Um exemplo clássico de tautologia é a fórmula . Construindo sua tabela-
verdade, teremos:
p ¬P P∨ ¬P
V F V
F V V
Outro possível exemplo de tautologia pode ser observado na fórmula
. Então vamos conferir a sua tabela-verdade.
p q ¬p ¬q p→q ¬q→¬p (p→q)↔(¬q→¬p)
V V F F V V V
V F F V F F V
F V V F V V V
F F V V V V V
4.3 Contradição
Uma fórmula α é uma contradição quando todas as interpretações da tabela-
verdade possuem o valor lógico igual a falso. A fórmula é um exemplo
clássico de contradição, conforme pode ser vista pela tabela a seguir.
p ¬p p∧¬p
V F F
F V F
4.5 Satisfatibilidade
Podemos ainda classificar as fórmulas com relação à sua satisfatibili-
dade. Uma fórmula α é dita satisfatível (ou factível) quando existe pelo menos
uma interpretação, ou seja, uma linha da tabela-verdade com o valor verda-
deiro (SOUZA, 2002). Por conseguinte, toda fórmula tautológica é auto-
maticamente uma fórmula satisfatível. Por outro lado, uma fórmula é conside-
rada insatisfatível quando esta não é satisfatível, ou seja, quando se obtém
uma contradição.
Anotações
Aula 5
Implicação e equivalência lógica
Absorção (Abs.)
Simplificação (Simp.)
Conjunção (Conj.)
Adição (Ad.)
Modus Tollens
verdade para encontrar os valores lógicos de cada uma das fórmulas anali-
sadas. Em seguida, teremos que aplicar o conectivo do bi-condicional com estas
fórmulas. Se obtivermos uma tautologia na última coluna, então poderemos dizer
que p ∧ q é realmente equivalente à .
p q ¬p ¬q p∧q ¬p∨¬q ¬(¬p∨¬p) (p∧q)↔¬(¬p∨¬q)
V V F F V F V V
V F F V F V F V
F V V F F V F V
F F V V F V F V
Leis de identidade
Leis de dominância
Leis da idempotência
Leis da comutatividade
Leis da associatividade
Leis da distributividade
Leis de De Morgan
Lei do bi-condicional
Lei da contraposição
Lei da absorção
1. ............... P
2. ............................. P
3. q ................................... P
1. p ................................... P
2. ..................... P
podem inclusive ser aplicadas num contexto textual em que existam argu-
mentações. Sendo assim, a partir de determinadas sentenças, conseguimos
concluir um resultado pertinente.
Na atividade um, a resposta correta é a alternativa (d), pois como pode ser
observado na tabela-verdade a seguir, uma tautologia é encontrada quando
utilizamos um bi-condicional com as fórmulas e .
p q ¬p p→q ¬p∨q (p→q)↔(p∨q)
V V F V V V
V F F F F V
F V V V V V
F F V V V V
Com as alternativas (a), (b) e (c), este resultado não é obtido.
Na atividade dois, a alternativa (a) possui uma relação de implicação entre
as fórmulas, isto é, , conforme apresentada na tabela-verdade apre-
sentada a seguir.
r s r∧s s∧r (r∧s)→(s∧r)
V V V V V
V F F F V
F V F F V
F F F F V
1. ..................... P
2. p ................................... P
COPI, Irving M. Introdução à lógica. 2. ed. São Paulo: Mestre Jou, 1978.
KELLER, Vicente; BASTOS, Cleverson L. Aprendendo lógica. Petrópolis: Vozes, 2000.
PINHO, Antônio. A. Apostila de introdução à lógica matemática. Rio de Janeiro,
1999.
SOARES, Edvaldo. Fundamentos de lógica: elementos da Lógica Formal e Teoria
da Argumentação. São Paulo: Atlas, 2003.
SOUZA, João Nunes de. Lógica para ciência da computação. Rio de Janeiro:
Campus, 2002.
Anotações
Aula 6
Lógica de predicados
6.1 Alfabeto
O alfabeto da linguagem da lógica de predicados consiste em símbolos
lógicos e não-lógicos. Os símbolos lógicos são caracterizados por:
• pontuação: (, )
• conectivos: ¬, ∧, ∨, →, ↔
• quantificadores: ∀, ∃
Os símbolos não-lógicos são definidos por:
• variáveis: por convenção, letras do fim do alfabeto, tais como: ...x, y, z;
• constantes: por convenção, letras do início do alfabeto, tais como a,
b, c...;
• predicativos (ou predicados): por convenção, letras do meio para o fim
do alfabeto, tais como: ...p, q, r... ou uma palavra em letras minúsculas
para ser mais representativa;
• funções: por convenção, letras do meio do alfabeto, tais como: ...f, g,
h... ou uma palavra em letras minúsculas para ser mais representativa.
Como dito anteriormente, a lógica de predicados é uma extensão da lógica
proposicional, e, desta maneira, tanto os símbolos de pontuação quanto os
conectivos lógicos possuem o mesmo significado.
Com relação aos quantificadores, tem-se o ∀ (universal) e ∃ (existencial)
para expressar propriedades que valem para todos os indivíduos do domínio
ou para alguns indivíduos do domínio, respectivamente. Estes quantificadores
estarão sempre acompanhados de uma variável (símbolo não-lógico) para
captar o conceito das palavras “para qualquer” e “para algum”, respectiva-
mente. É importante ressaltar que variáveis diferentes não designam necessaria-
mente objetos diferentes e que a escolha de variáveis não faz diferença para o
significado (FRANCO, 2008).
As constantes, por sua vez, são usadas para definir ou especificar um deter-
minado indivíduo do domínio. Considerando ainda o exemplo anterior, poderí-
amos definir que João é o aluno inteligente da sala de aula. Observe que, neste
caso, estamos definindo exatamente quem é a pessoa inteligente da sala. Cada
constante indica exatamente um objeto particular.
Os símbolos predicativos ou predicados representam o conceito de relação
entre um ou mais indivíduos de um domínio. Com este tipo de símbolo, poderí-
amos criar um predicado chamado “pai” para representar a relação de paren-
tesco entre João e Ana, por exemplo, conforme o conhecimento fornecido no
início desta aula. Os predicados (nomes de relação) podem possuir um ou
mais argumentos. A definição da quantidade de argumentos num predicado
dependerá da forma como os relacionamentos entre os objetos estão sendo
tratados. Com relação à quantidade de argumentos que um predicado possui,
chamamos de aridade.
Por exemplo: os predicados vereador(juarez) e pai(joão, ana) têm aridade
igual a um e dois, respectivamente. No primeiro predicado, representamos que
Juarez é um vereador e, neste caso, a leitura deste predicado inicia-se pela
constante (juarez) e, depois, lê-se o nome do predicado (vereador). No segundo
exemplo, representamos que João é pai de Ana e a forma de leitura começa com
o primeiro parâmetro (joão), depois analisa o nome do predicado (pai) e, em
seguida, retorna ao segundo parâmetro (ana).
As funções são usadas para referenciar objetos particulares sem usar seus
nomes, ao contrário dos predicados. Estes agem reunindo informações também
como, por exemplo, uma variável e uma constante.
6.3 Interpretação
Como a lógica de predicados possui um alfabeto bem mais diversificado se
comparado com o da lógica proposicional, as interpretações das fórmulas tornam-
se, naturalmente, mais bem elaboradas. Observe a seguir a simbologia da lógica
de primeira ordem em quatro sentenças bastante conhecidas na literatura, bem
como a sua forma de leitura, conforme pode ser encontrado em (ABAR, 2008):
• Todo s é p:
Usando a letra “x”, como uma variável para representar objetos indivi-
duais, expressamos tal enunciado por: “qualquer que seja x, se x é s, então x é
p”. Outras opções de leitura são: “s são p”; “cada s é um p”; “qualquer s é um
p” e “todos os objetos que tem propriedade s são objetos que tem propriedade
p”. Sendo assim, podemos inferir que “Todo s é p” está relacionado a uma
universal afirmativa.
• Alguns s são p:
Neste caso, o enunciado pode ser expresso por “para pelo menos um x, x é
s e x é p”. Outras opções de leitura são: “existem s que são p” e “há s que são
p”. Este exemplo, ao contrário do enunciado anterior, restringe um certo grupo
do todo e assim está relacionando uma particularidade afirmativa.
• Alguns s são não p:
Para esta situação, temos a interpretação que “existe um x tal que x é s
e x não é p”. Podemos ainda ler esta sentença como “alguns s não são p”;
“certos s não são p”; “existem s que não são p” e “pelo menos um s não é
p”. Observando este enunciado, identificamos que existe uma seleção do todo,
porém com aspecto de negação. Assim, dizemos que obtemos uma particulari-
dade negativa.
• Nenhum s é p:
Nesta última sentença, temos “qualquer que seja x, se x é s, então x não é
p”. É possível ainda ler esta sentença como “ninguém que seja s é p”; “nada que
seja s é p” e “nenhum dos s é p”. Neste exemplo, obtemos uma generalização
negativa, pois qualquer que seja x, este não é p.
Assim, a partir da linguagem natural usada no cotidiano, podemos expressar
a mesma idéia utilizando o alfabeto da lógica de predicados. Nestes últimos exem-
plos, foram usados os predicados s e p, os quais não expressam muita informação
para o usuário. Por isso, é importante que se apresente nomes de predicados
condizentes com o que se deseja representar, uma vez que estes auxiliam à inter-
pretação do pensamento. Vale a pena lembrar que a definição de um nome do
predicado é de sua escolha. Veja na tabela a seguir alguns exemplos do uso desta
representação, sendo neste caso com nomes de predicado mais significativos.
Como você deve ter observado, numa mesma fórmula pode existir mais de um
quantificador, conectivo, variável ou predicado. Analisando a frase “Meninos e
meninas gostam de brincar”, por exemplo, observamos que a conjunção “e” apre-
sentada na sentença não está expressa na sua fórmula. Na verdade, ao invés do “e”,
tem-se a representação do “OU” (∨). E, neste caso, a representação está correta?
A resposta é sim, pois avaliando a fórmula, veremos que a variável x, que é um
elemento do domínio, pode ser um menino ou uma menina somente, nunca os dois
ao mesmo tempo. E, ou menino ou menina, seja este ou esta, gosta de brincar.
Com relação à sentença “Todas as crianças são mais jovens que os pais”,
observe que foram utilizados dois quantificadores universais, um com a variável
x e outro com a variável y. Para expressar que uma criança é mais jovem que
pai, apresentamos inicialmente a condição necessária para que isto aconteça.
Ou seja: é preciso que o x seja uma criança e o y seja o pai da criança. Caso
positivo, então podemos inferir que o x é mais jovem do que o y.
Esperamos que esses exemplos tenham sido suficientes para você ter uma
noção do que se pode fazer com o uso dos quantificadores. No entanto, para
compreender melhor ainda a abrangência dos quantificadores, observe, na
figura 1, a localização de quatro exemplos num plano cartesiano.
Anotações
<http://pt.wikipedia.org/wiki/L%C3%B3gica_de_primeira_ordem>. Acesso
Aula 7
Tocci e Widmer (2003) afirmam que como os valores possíveis de uma variável
são apenas dois, a álgebra booleana é mais fácil de ser manipulada se comparada
com a álgebra convencional. Na álgebra booleana, não existem frações, decimais,
números negativos, raízes quadradas, raízes cúbicas, logaritmos, números imagi-
nários e assim por diante. A álgebra booleana tem, de fato, apenas três operações
básicas: OR, AND e NOT. Agora vamos passar para o estudo dessas operações.
recebe mais de uma variável para o cálculo. A expressão que podemos utilizar
para exemplificar essa operação é:
X=A∙B
A + B C = A + (B C) = A + BC
Tomando como base a figura 1, podemos observar que existem dois quadros
adjacentes na horizontal e dois quadros adjacentes na vertical, contendo uns.
Sendo assim, a função OR representada por um mapa de Karnaugh torna-se
x = a’b + ab + ab’ + ab
O próximo passo seria eliminar na função as entradas complementares,
como por exemplo: a’b + ab, somente a variável b permanece da mesma forma.
Então podemos afirmar que esse exemplo pode ser demonstrado apenas por b.
Anotações
Equipe EADCON
Coordenador Editorial William Marlos da Costa
Assistentes de Edição Ana Aparecida Teixeira da Cruz
Janaina Helena Nogueira Bartkiw
Lisiane Marcele dos Santos
Programação Visual e Diagramação Denise Pires Pierin
Kátia Cristina Oliveira dos Santos
Monica Ardjomand
Rodrigo Santos
Sandro Niemicz
William Marlos da Costa
Prezado acadêmico,
Bem-vindo à disciplina Fundamentos de Sistemas de Informação. Por meio
dela você conhecerá os conceitos associados aos sistemas de informação, tão
importantes para o desenvolvimento de uma percepção individual sobre a reali-
dade vivenciada pelas das organizações e pelas pessoas que a compõem.
Nossa proposta para esta disciplina está distribuída em sete aulas. Na
aula um, estudaremos os conceitos da Teoria Geral de Sistemas, compreende-
remos seus conceitos, suas classificações e a inter-relação entre os sistemas.
Apresentação
Na aula dois, veremos os conceitos, os componentes e a usabilidade dos
sistemas de informação. Na aula três, vamos estudar os tipos de sistemas,
entender sua importância nas organizações. A quarta aula está reservada
para você conhecer os conceitos de decisão e os sistemas de apoio à tomada
de decisão. Na quinta, vamos compreender como os sistemas de informação
auxiliam no processo de tomada de decisão. Nos aproximando do final do
caderno, na aula seis, conheceremos os conceitos e o funcionamento de
sistemas operacionais. Por fim, na última aula, trataremos dos sistemas geren-
ciais e suas características.
Assim a disciplina de Fundamentos de Sistemas de Informação é apresen-
tada a você.
Bons estudos!
Prof.ª Katia Gomes da Silva
Prof.ª Sibele Letícia Rodrigues Oliveira Biazotto
EMENTA
Teoria geral de sistemas. Conceitos e elementos dos Sistemas de
Informação. Tipologia de sistemas de informação. Tomada de decisão.
Sistemas de informação e o processo decisório. Informação operacional e
gerencial.
Plano de Ensino
OBJETIVOS
• Apresentar os conceitos relacionados sobre Fundamentos de
Sistemas de Informação.
• Apresentar os principais conceitos associados à informação,
sistemas e sistemas de informação que são necessários para o
entendimento dos relacionamentos dos três níveis organizacionais:
nível estratégico, nível tático e nível operacional.
• Auxiliar áreas de inovação, planejamento e gerenciamento
da informação e coordenação de recursos de informação nas
organizações.
• Descrever os conceitos de sistemas de informação envolvidos nos
processos de tomadas de decisão existentes em uma organização:
o planejamento estratégico, os planos e programas gerenciais e as
atividades operacionais associadas.
CONTEÚDO PROGRAMÁTICO
• Definição de informação, dados, sistemas
• Definição dos conceitos e tipologias de sistemas de informação
• Sistemas de apoio à decisão e o processo decisório
• Sistemas de suporte operacional e gerencial
BIBLIOGRAFIA BÁSICA
LAUDON, Kenneth. C.; LAUDON, Jane Price. Sistemas de Informação com
internet. 4. ed. Rio de Janeiro: LTC, 1999.
O’BRIEN, James A.; MOREIRA, Cid Knipel. Sistemas de informação: e as deci-
sões gerenciais na era da Internet. 2. ed. São Paulo: Saraiva, 2004.
STAIR, Ralph M.; REYNOLDS, George W. Princípios de sistemas de informação:
uma abordagem gerencial. 4. ed. Rio de Janeiro: LTC, 2002.
BIBLIOGRAFIA COMPLEMENTAR
AUDY, Jorge Luis Nicolas; ANDRADE, Gilberto Kleber de; CIDRAL, Alexandre.
Fundamentos de sistemas de informação. Porto Alegre: Bookman, 2005.
BOGHI, Cláudio; SHITSUKA, Ricardo. Sistemas de informação: um enfoque
dinâmico. 2. ed. São Paulo: Érica, 2005.
DAVENPORT, Thomas H. Ecologia da informação: por que só a tecnologia não
basta para o sucesso na era da informação. 6. ed. São Paulo: Futura, 2003.
Aula 1
Teoria geral de sistemas
Podemos classificar a Teoria Geral de Sistemas (TGS) como uma teoria que
tem como objetivo ter o ser humano e seu ambiente como partes de sistemas que
interagem. Esses sistemas são formados por um conjunto de elementos, inter-
dependentes, capazes de satisfazer uma necessidade ou objetivo específico,
aplicado a qualquer tipo de sistema.
Veremos, nesta aula, como surgiu a Teoria Geral de Sistemas e também seus
conceitos, propriedades, classificações e características.
Porém, antes de começarmos nossos estudos, vamos entender os conceitos
de teoria, geral e sistemas.
• Teoria: é a ação de pensar e compreender algum fenômeno, ou seja, é
a explicação de algum acontecimento.
• Geral: é o que pode ser aplicado a tudo ou a todos.
• Sistemas: é um conjunto de elementos, entre os quais há alguma relação,
de modo a formar um todo organizado.
Essas definições são importantes para que você compreenda o que vamos
expor a seguir.
Saiba mais
Concluímos esta aula observando que a Teoria Geral de Sistemas diz que
todas as áreas do conhecimento possuem sistemas. E que sistemas são elementos
interligados que levam a um objetivo específico. Além disso, esses sistemas
possuem hierarquias, propriedades e características próprias, e podem ser clas-
sificados por tipo, origem e natureza.
1. Identifique dois sistemas, com seus objetivos, suas entradas, seus mecanismos
de processamento, sua retroação e suas saídas.
Na atividade um, você deve seguir os exemplos dados por Stair e Reynolds
(2002), como o sistema de fabricação de bicicletas e o de uma universidade.
Mas você deve listar outros, como sistema educacional tem como entradas os
alunos, conhecimentos, informações, métodos, suprimentos, etc. e tem como
saída alunos com conhecimento, competências, habilidades, valores.
Na atividade dois, se respondeu que o computador é um sistema concreto,
você compreendeu o conceito. Os sistemas concretos são compostos por equi-
pamentos, ou seja, existem fisicamente em espaço e tempo. Já os sistemas
abstratos não têm nenhuma definição de tempo e espaço, pois são compostos
por conceitos, idéias e/ou filosofias.
Na atividade três, a resposta correta é a letra (c), pois um setor de uma empresa
são as partes que integram o sistema principal. A letra (a) está incorreta, pois o
sistema é o que é analisado ou avaliado e não parte de um sistema (subsistema). Da
mesma forma a letra (b) está incorreta porque o supersistema é o todo. E a letra (d)
também é incorreta, pois a saída é o resultado final da operação de um sistema.
Na atividade quatro, a reposta correta é a letra (a), pois a entrada é o que
o sistema importa ou recebe do meio ambiente e que serve como insumo para
poder operar. A opção (b) está incorreta porque o processamento é o conjunto de
elementos que são utilizados pelo sistema para produzir as saídas, e não o resul-
tado final da operação de um sistema. Da mesma forma a opção (c) está incorreta
Anotações
Aula 2
Conceitos e componentes dos
sistemas de informação
FUNÇÕES SISTEMAS DE
COMPONENTES DADOS
GERENCIAIS INFORMAÇÃO
Administração Itens, fornecedores, Controle de estoques,
Materiais de Materiais estoques, ordens de controle de compras, etc.
compra, etc.
Administração Programas, roteiros de Controle de sistemas,
de Sistemas operação, etc. controle de operação,
Sistemas
controle de manutenção,
etc.
Administração Pesquisas, demandas, Mala-direta, reclama-
Mercado de Marketing concorrentes, etc. ções, pesquisas, previ-
sões, etc.
Administração Clientes, vendas, etc. Faturamento, estatísticas,
Clientes
de Vendas controle de metas, etc.
Fonte: adaptado de Moreira ([s.d.]).
2.3.1 Organizações
As organizações são estruturadas e hierárquicas. Modelam os SI conforme
suas necessidades para resolver problemas que surgem por fatores internos ou
externos. Essas necessidades podem ser transacionais, gerenciais, externas e
legais da organização.
2.3.2 Pessoas
Em sistemas baseados em computador, as pessoas são o elemento mais
importante, pois são elas que gerenciam, programam, executam, ou seja, são
os administradores dos SI.
2.3.3 Tecnologias
A tecnologia é o meio usado para transformar dados em informações úteis.
Assim existem sistemas de informação manuais e computadorizados. Os sistemas
de informação manuais utilizam, por exemplo, caneta e papel, porém é um
sistema sujeito a erros, e isso o torna ineficiente.
Os sistemas de informação se iniciam como sistemas manuais e se tornam
computadorizados. Os sistemas de informação computadorizados são compostos
Na atividade um, a resposta deve ser com suas palavras, com a forma
como você compreendeu o conceito, mas deve também ter um parâmetro de
definição. Lembre-se de que sistemas de informação são sistemas que têm
como objetivo a obtenção de informações que satisfaçam as necessidades das
organizações. Você também pode acessar o sítio: <http://pt.wikipedia.org/
wiki/Sistema_de_informa%C3%A7%C3%A3o> e construir seu conhecimento
sobre esse assunto.
Anotações
Aula 3
Tipologias de sistemas de
informação
Você já está pronto para seguir em frente! Vamos, agora, conhecer o processo
de tomada de decisão. Sabemos que qualquer escolha que fazemos em nossa
vida implica uma tomada de decisão. Mas isso só é possível se soubermos o que
é decisão... esse é nosso próximo assunto.
Anotações
Aula 4
O processo de tomada de decisão
Anotações
Aula 5
Sistemas de informação e
o processo decisório
atingir um objetivo. Esse objetivo opera sobre a entrada de dados para fornecer
um resultado esperado. A partir desse conceito, surgiu o termo sistemas de
informação, que é um conjunto de elementos computacionais relacionados que
coletam, armazenam, manipulam e transmitem informações, a fim de atender um
objetivo determinado (HADDAD, 2007).
Os sistemas de informação voltados para a tomada de decisão têm como
objetivo prover informações, proporcionar os resultados esperados, capazes de
aumentar a produtividade, reduzir tempo de espera e processamento.
Podemos classificar os sistemas de informação para a tomada de decisão
considerando a forma pela qual eles são utilizados. Observe a seguir.
• Somente recuperação de dados: o sistema somente recupera dados de
uma única base de dados.
• Recuperação e análise de dados: o sistema recupera e também analisa
informações de uma base de dados.
• Análise de várias bases de dados: o sistema recupera e faz análise de
várias bases de dados.
• Avaliação de decisões utilizando modelos de simulação: o sistema avalia
as decisões por meio de simulação de cenários futuros.
• Proposta de decisões: o sistema propõe decisões a serem tomadas.
• Proposta da melhor decisão: o sistema escolhe a melhor decisão a ser
tomada.
É importante que uma empresa defina como a decisão de diferentes tipos
de sistemas de informação serão analisados e usados. Stair e Reynolds (2002)
fazem uma síntese dos vários tipos de sistemas de informação usados nas orga-
nizações, conforme demonstra a figura um.
Dois psicólogos decidiram abrir uma clínica. Devido ao sucesso da clínica, decidiram
abrir outra. Porém, devido à falta de tempo, não arquivaram os registros da clínica. Os
psicólogos precisam manter registros dos pacientes, das sessões de terapia e das avalia-
ções. Eles devem também preparar uma cobrança quinzenal para cada paciente e manter
registros desses pagamentos. Mas os psicólogos mal têm tempo de manter as avaliações
dos pacientes, quanto mais para enviar as faturas de cobrança. E, como estão começando,
não possuem recursos para contratar secretárias.
Saiba mais
Fonte
Ao final desta aula, chamamos a atenção para esta função importante dos
sistemas de informação: assistência imediata na solução de problemas e sugestão
de alternativas que auxiliem na tomada de decisão.
2. Quais dos sistemas descritos a seguir não são sistemas de informação que
auxiliam os gestores na tomada de decisão?
a) SIG c) SAD
b) STC d) SE
Anotações
Aula 6
Informação operacional
Você deve ter notado que estamos sempre precisando do conceito de sistemas
de informação para avançarmos nos estudos. Nesta aula não será diferente.
Mas você já sabe o que é sistemas de informação, não é mesmo?
Esperamos que você tenha um bom aproveitamento desta aula que se inicia.
Exemplo
Para um melhor entendimento desse processo, imaginemos que estamos
diante de uma empresa fabricante de caixas de sapato.
Primeiro precisamos identificar os recursos de entrada que fazem parte desse
processo. Basicamente podemos considerar os seguintes recursos como sendo
de entrada no processo operacional:
• papelão
• cola
• tinta
• adesivos
• grampos
De posse dos recursos de entrada, a próxima etapa é identificar os recursos
transformadores que, na cadeira operacional, são responsáveis pela transfor-
mação e agregação de valor na concepção do produto final. Podemos consi-
derar como recursos transformadores os seguintes itens:
• máquinas e equipamentos
• tecnologia
• instalações
• pessoas
• conhecimentos
Na cadeia operacional, os recursos transformadores são organizados de
forma que todos os recursos de entrada sejam processados seqüencialmente
de forma que a cada passo da transformação sejam agregados valores ao
produto e que culmine com a produção de caixas de sapatos devidamente
formatadas, adesivadas e prontas para envio ao consumidor/cliente final
(HAYES, 2005).
Diante desse exemplo, podemos verificar a transformação da matéria
prima de entrada em um produto final acabado. A cada etapa (aquisição
da matéria prima, escolha do papelão apropriado, identificação das cores
da caixa, identificação de pessoal qualificado para a realização da trans-
formação, corte do papelão no formato correto, pintura e adesivagem das
caixas, etc.), é agregado um determinado valor ao produto. Esses valores
irão compor a precificação de custo do produto final. Dessa forma, a empresa
pode ter a noção clara de quanto poderá repassar o valor ao consumidor/
cliente final.
Nesse caso, podemos chamar esses valores de valor de transformação, mas
poderia acrescentar outros valores, como o de armazenamento do produto antes
da entrega ao cliente, por exemplo.
3. Indique qual dos itens a seguir não podem ser considerado como recurso
transformador.
a) Máquinas
b) Pessoas
c) Matéria-prima
d) Equipamentos
e) Tecnologia
Anotações
Aula 7
Informação gerencial
Na atividade um, você deve descrever o conceito de SIG baseado nas afir-
mações apresentadas por Meireles (2001) e Rezende (2006). Discorra sobre
as funcionalidades de um SIG de coleta, manipulação e relato dos dados ou
informações acerca do processamento realizado.
Na atividade dois, identifique as três funções de um SIG (suporte nos
processos de negócio e operações, suporte nas tomadas de decisão e suporte
estratégico). O suporte nos processos de negócio e operações envolve a coleta
de informações, seu registro nas bases de dados e o pré-processamento dessas
informações coletadas. Já o suporte nas tomas da decisão, trata as informações
coletadas e armazenadas e que permite a geração de outras informações subsi-
diando os gestores para que possam tomar decisões mais ágeis e assertivas. E,
por fim o suporte estratégico gera informações para auxiliar os gestores a definir
o posicionamento estratégico competitivo da organização.
Na atividade três, o item correto é a letra (a), pois uma das características de
um SIG é integrar vários módulos com o objetivo de tratar dados e transformá-los
em informações coerentes e decorrentes desses dados.
Na atividade quatro, o item correto é a letra (a). No ERP, é necessário dispor
de algum tempo em sua implementação, pois afeta toda a organização e é extre-
mamente complexa e onerosa.
Resolveu as atividades? Então atingiu os objetivos de compreender o conceito
de sistema de informação gerencial e de entender para que servem seus papéis,
funções e características.
Anotações